Add (un-)mount ~/Vault toggle
This commit is contained in:
parent
7804080953
commit
0f94baacaf
3 changed files with 110 additions and 3 deletions
|
|
@ -93,7 +93,7 @@
|
|||
# q | | Close the window | | |
|
||||
# ------------------+------------------------+------------------------+------------------------+------------------------+------------------------
|
||||
# b | Split beside | | Toggle bluetooth | Randomize wallpaper |
|
||||
# v | Split below | | | |
|
||||
# v | Split below | | (Un-)Mount the ~/Vault | |
|
||||
# e | Split toggle | | Show battery load | |
|
||||
# s | Stacked layout | | | |
|
||||
# w | Tabbed layout | | Toggle WiFi | Toggle airplane mode |
|
||||
|
|
@ -501,7 +501,7 @@ keyboard-brightness-toggle=['<Super><Alt>slash']
|
|||
# Due to the structure of the below groups,
|
||||
# we must duplicate some of them to allow multiple bindings
|
||||
|
||||
custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_key_bindings/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/move_window_to_empty_workspace/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/list_windows/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_run_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_run_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_file_manager/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_firefox/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_chromium/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_google_chrome/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_evolution/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/dark_scheme_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_force/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_cooler/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_warmer/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/randomize_background/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/wifi_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/restart_gnome_shell/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emoji_picker_type/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emoji_picker_copy/']
|
||||
custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_key_bindings/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/move_window_to_empty_workspace/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/list_windows/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_run_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_run_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_file_manager/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_firefox/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_chromium/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_google_chrome/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_evolution/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/dark_scheme_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_force/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_cooler/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_warmer/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/randomize_background/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/wifi_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/restart_gnome_shell/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emoji_picker_type/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emoji_picker_copy/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/vault_toggle/']
|
||||
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_key_bindings]
|
||||
|
|
@ -653,6 +653,12 @@ command='/home/user/.local/bin/rofimoji --action copy'
|
|||
name='Copy an emoji'
|
||||
|
||||
|
||||
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/vault_toggle]
|
||||
binding='<Super><Control>v'
|
||||
command='/home/user/.local/bin/vault-toggle'
|
||||
name='(Un-)Mount the vault'
|
||||
|
||||
|
||||
|
||||
[org/gnome/shell/keybindings]
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ set_key General optionalServerNotifications false
|
|||
set_key General showCallNotifications false
|
||||
set_key General showChatNotifications false
|
||||
|
||||
set_key General isVfsEnabled false
|
||||
set_key General isVfsEnabled false # `true` is also not good for `gocryptfs` syncs
|
||||
set_key General confirmExternalStorage true
|
||||
set_key General useNewBigFolderSizeLimit false
|
||||
set_key General newBigFolderSizeLimit 999
|
||||
|
|
|
|||
101
.local/bin/vault-toggle
Executable file
101
.local/bin/vault-toggle
Executable file
|
|
@ -0,0 +1,101 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Mount or unmount the `gocryptfs` ~/Vault synced via the ~/Cloud
|
||||
#
|
||||
# Triggered by <Super><Control>v
|
||||
# as defined in [org/gnome/settings-daemon/plugins/media-keys]
|
||||
# in ~/.config/gnome-settings/key-bindings.ini
|
||||
#
|
||||
# The password is taken from the secret service (e.g., GNOME Keyring)
|
||||
# and, if not stored there, asked for with a GUI prompt
|
||||
#
|
||||
# Store the password once with:
|
||||
# secret-tool store --label='gocryptfs ~/Vault' gocryptfs vault
|
||||
#
|
||||
# Requires:
|
||||
# - gocryptfs
|
||||
# - libnotify-bin
|
||||
# - libsecret-tools
|
||||
# - zenity
|
||||
|
||||
set -eu
|
||||
|
||||
|
||||
CIPHER_DIR="$HOME/Cloud/Misc/Vault.enc"
|
||||
MOUNT_POINT="$HOME/Vault"
|
||||
|
||||
|
||||
|
||||
_command_exists() {
|
||||
command -v "$1" 1>/dev/null 2>&1
|
||||
}
|
||||
|
||||
|
||||
_notify() {
|
||||
_command_exists notify-send || return 0
|
||||
notify-send 'Vault' "$1"
|
||||
}
|
||||
|
||||
|
||||
# Print the password to stdout,
|
||||
# instead of storing it in a variable
|
||||
_password() {
|
||||
if _command_exists secret-tool \
|
||||
&& secret-tool lookup gocryptfs vault 2>/dev/null; then
|
||||
return 0
|
||||
fi
|
||||
zenity --password --title='Unlock the Vault' 2>/dev/null
|
||||
}
|
||||
|
||||
|
||||
_unmount() {
|
||||
if _command_exists fusermount3; then
|
||||
fusermount3 -u "$MOUNT_POINT"
|
||||
else
|
||||
fusermount -u "$MOUNT_POINT"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Unmount if mounted
|
||||
|
||||
if mountpoint -q "$MOUNT_POINT"; then
|
||||
|
||||
if _unmount 2>/dev/null; then
|
||||
_notify 'Locked'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Most likely a shell or an app still has a file open inside
|
||||
_notify 'Still in use => Close all files and shells inside first'
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Mount otherwise
|
||||
|
||||
if [ ! -f "$CIPHER_DIR/gocryptfs.conf" ]; then
|
||||
_notify "No vault found at $CIPHER_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# Nextcloud does not sync mode bits
|
||||
# => Enforce owner-only access on every client,
|
||||
# which `gocryptfs` also shows as the mode of the mount point
|
||||
chmod 700 "$CIPHER_DIR"
|
||||
|
||||
|
||||
mkdir -p "$MOUNT_POINT"
|
||||
|
||||
|
||||
# `gocryptfs` reads the password from stdin if that is not a terminal
|
||||
if _password | gocryptfs -idle 1h -quiet -sharedstorage "$CIPHER_DIR" "$MOUNT_POINT"; then
|
||||
_notify 'Unlocked'
|
||||
else
|
||||
_notify 'Not unlocked (wrong or no password?)'
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Reference in a new issue