diff options
| author | Lukasz Kasprzak <lukasz.kasprzak@pm.me> | 2026-04-14 22:32:43 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukasz.kasprzak@pm.me> | 2026-04-14 22:32:43 +0200 |
| commit | 83f7fe4b8402bab171d110703a1b1115efbc9b28 (patch) | |
| tree | 19110702c7d740f6bd8ee4f5d2ebcb97442be237 /dm-edit-config | |
| parent | 51d43498b07dc97d795947964534f0903cd05db5 (diff) | |
| download | bin-83f7fe4b8402bab171d110703a1b1115efbc9b28.tar.gz bin-83f7fe4b8402bab171d110703a1b1115efbc9b28.zip | |
cleaned up many scrits and deleted some that were of no use; renamed a lot
Diffstat (limited to 'dm-edit-config')
| -rwxr-xr-x | dm-edit-config | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/dm-edit-config b/dm-edit-config new file mode 100755 index 0000000..47705e1 --- /dev/null +++ b/dm-edit-config @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Optional dmenu theming +# shellcheck disable=SC1090 +[[ -r "${HOME}/.local/bin/dmenu-theming" ]] && . "${HOME}/.local/bin/dmenu-theming" + +DMENU="${DMENU:-dmenu}" +PROMPT="${PROMPT:-Config: }" +EDITOR_CMD="${EDITOR_CMD:-vim}" +TERM_CMD="${TERM_CMD:-st -e}" # change to "alacritty -e" / "kitty -e" / "wezterm start --" if needed +INDEX="${INDEX:-${HOME}/.config/dmenu/configs.tsv}" + +[[ -r "$INDEX" ]] || { printf "ERROR: cannot read %s\n" "$INDEX" >&2; exit 1; } + +# Build menu: show label, keep path as hidden second field +menu="$( + awk -F'\t' 'NF>=2 {print $1 "\t" $2}' "$INDEX" +)" + +picked="$( + printf "%s\n" "$menu" \ + | ${DMENU} -i -l 20 -p "$PROMPT" ${lines:-} ${colors:-} ${font:-} \ + || true +)" +[[ -n "$picked" ]] || exit 0 + +path="$(printf "%s" "$picked" | awk -F'\t' '{print $2}')" +[[ -n "$path" ]] || exit 0 + +# Expand ~ manually (awk won’t expand it) +path="${path/#\~/$HOME}" + +# If path is relative, treat it as relative to $HOME +case "$path" in + /*) : ;; + *) path="${HOME}/${path}" ;; +esac + +# Decide whether we need sudo (simple heuristic: /etc, /usr, /var, /run) +needs_sudo=0 +case "$path" in + /etc/*|/usr/*|/var/*|/run/*) needs_sudo=1 ;; +esac + +# Open in terminal editor (no eval) +if [[ $needs_sudo -eq 1 ]]; then + exec ${TERM_CMD} sudo -E "$EDITOR_CMD" "$path" +else + exec ${TERM_CMD} "$EDITOR_CMD" "$path" +fi + |
