diff options
Diffstat (limited to '.local/bin')
| -rwxr-xr-x | .local/bin/map | 1 | ||||
| -rwxr-xr-x | .local/bin/mountmgr | 76 | ||||
| -rwxr-xr-x | .local/bin/xstart_dwm | 1 |
3 files changed, 78 insertions, 0 deletions
diff --git a/.local/bin/map b/.local/bin/map index 1b19380..95c0988 100755 --- a/.local/bin/map +++ b/.local/bin/map @@ -4,5 +4,6 @@ keylayout=$(localectl list-x11-keymap-layouts | dmenu -p "Select keyboard layout keymodel=$(localectl list-x11-keymap-variants | dmenu -p "Select keyboard model") setxkbmap $keylayout $keymodel +setxkbmap -option caps:escape notify-send "Set Keyboardlayout" "Layout: $keylayout\nModel: $keymodel" diff --git a/.local/bin/mountmgr b/.local/bin/mountmgr new file mode 100755 index 0000000..8c69aab --- /dev/null +++ b/.local/bin/mountmgr @@ -0,0 +1,76 @@ +#!/bin/sh + +export UNMOUNT_BLACKLIST="luksdev nvme0n1p1" +export PINENTRY="pinentry-dmenu" + +prompt_pin() { + printf "SETPROMPT $1\nGETPIN\n" | $PINENTRY | grep '^D' | sed 's/^D //g' +} + +disk_dialog_entry() { + lsblk -r -o NAME,FSTYPE,MOUNTPOINT,LABEL | column -s ' ' -t | grep "$1" +} + +luks_map() { + for map in $(sudo dmsetup ls | awk '{ print $1 }'); do + echo $map $(sudo cryptsetup status "$map" | grep "device:" | awk '{ print $2 }') + done +} + +luks_regex() { + luks_map | awk '{ print $2 }' | sed -E 's/\/dev\/(.*)/\1/g' | sed -z 's/\n/\\|/g' | sed -e 's/\\|$/\n/g' +} + +list_mountable() { + lsblk -r -o NAME,FSTYPE,MOUNTPOINTS | grep -E '^[^ ]+\s+[^ ]+\s*$' | sed -e '/\[SWAP\]/d' | sed -e "/$(luks_regex)/d" | awk '{ print $1 }' +} + +list_unmountable() { + lsblk -r -o NAME,FSTYPE,MOUNTPOINT | sed -e '/NAME FSTYPE MOUNTPOINT/d' | grep -E '^[^ ]+\s+[^ ]+\s+[^ ]+$' | awk '{ print $1 }' +} + + +main_dialog() { + for d in $(list_unmountable); do + [ -z "$(echo $UNMOUNT_BLACKLIST | grep "$d")" ] && echo "⏏ $(disk_dialog_entry $d)" + done + + for d in $(list_mountable); do + echo " $(disk_dialog_entry $d)" + done +} + +select=$(main_dialog | dmenu) + +[ -z "$select" ] && exit + +if [ "$(echo $select | awk '{ print $1 }')" = "⏏" ]; then + mountpoint=$(echo "$select" | awk '{ print $4 }') + disk=$(echo "$select" | awk '{ print $2 }') + sync + sudo umount "$mountpoint" + rmdir "$mountpoint" + + if [ -n "$(luks_map | grep "$disk")" ]; then + sudo cryptsetup close "$disk" + fi + + notify-send "Mount Manager" "$disk unmounted" +else + disk=$(echo "$select" | awk '{ print $1 }') + device_path="/dev/$disk" + fstype=$(echo "$select" | awk '{ print $2 }') + + if [ "$fstype" = "crypto_LUKS" ]; then + prompt_pin "Passphrase to decrypt $disk" | sudo cryptsetup open "$device_path" "luks$disk" || exit + new_disk="luks$disk" + disk="$new_disk" + device_path="/dev/mapper/$disk" + fi + + mountpoint="/mnt/$disk" + + mkdir "$mountpoint" + sudo mount "$device_path" "$mountpoint" + notify-send "Mount Manager" "$disk mounted" +fi diff --git a/.local/bin/xstart_dwm b/.local/bin/xstart_dwm index 5dfcff1..802a2cd 100755 --- a/.local/bin/xstart_dwm +++ b/.local/bin/xstart_dwm @@ -5,6 +5,7 @@ status -d & kodi & while true; do + . ~/.profile # Log stderror to a file dwm 2> ~/.cache/dwm.log # No error logging |