diff options
| author | Kyren223 <contact@kyren.codes> | 2026-06-07 17:24:00 +0300 |
|---|---|---|
| committer | Kyren223 <contact@kyren.codes> | 2026-06-07 17:24:00 +0300 |
| commit | 72fd922f0a4b94151492b5138cd7e1bf808b1086 (patch) | |
| tree | a3255976d9c6349ae2ef42544ab4741ae8f7d191 /scripts | |
| parent | 71a640d4d320ef6b4a72bf1e50fca3d7ed76c28f (diff) | |
add context menus to dolphin for unlocking/locking encrypted ZFS datasets
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/zfs-open-documents.sh | 32 |
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; |
