summaryrefslogtreecommitdiff
path: root/scripts/zfs-open-documents.sh
diff options
context:
space:
mode:
authorKyren223 <contact@kyren.codes>2026-06-07 17:24:00 +0300
committerKyren223 <contact@kyren.codes>2026-06-07 17:24:00 +0300
commit72fd922f0a4b94151492b5138cd7e1bf808b1086 (patch)
treea3255976d9c6349ae2ef42544ab4741ae8f7d191 /scripts/zfs-open-documents.sh
parent71a640d4d320ef6b4a72bf1e50fca3d7ed76c28f (diff)
add context menus to dolphin for unlocking/locking encrypted ZFS datasets
Diffstat (limited to 'scripts/zfs-open-documents.sh')
-rwxr-xr-xscripts/zfs-open-documents.sh32
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/zfs-open-documents.sh b/scripts/zfs-open-documents.sh
new file mode 100755
index 0000000..2188c59
--- /dev/null
+++ b/scripts/zfs-open-documents.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+DATASET="iron-wolf/media/documents"
+MOUNTPOINT=$(zfs get -H -o value mountpoint "$DATASET")
+
+if [ "$KEYSTATUS" = "available" ]; then
+ if ! mountpoint -q "$MOUNTPOINT"; then
+ sudo zfs mount "$DATASET" || { zenity --error --text="Failed to mount dataset."; exit 1; }
+ fi
+else
+ # Key is unavailable. Prompt for it.
+ PASS=$(zenity --password --title="Unlock ZFS Volume" --window-icon="lock")
+
+ # If user hits cancel or leaves it empty, exit quietly
+ if [ -z "$PASS" ]; then
+ exit 0
+ fi
+
+ # Try to load key and mount
+ if echo "$PASS" | sudo zfs load-key "$DATASET"; then
+ sudo zfs mount "$DATASET" || { zenity --error --text="Key loaded, but mount failed."; exit 1; }
+ else
+ zenity --error --text="Incorrect passphrase."
+ exit 1
+ fi
+fi
+
+if command -v kioclient &> /dev/null; then
+ kioclient exec "$MOUNTPOINT"
+else
+ xdg-open "$MOUNTPOINT"
+fi;