diff --git a/.config/i3/config b/.config/i3/config index 76fe49b..e6f9d5a 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -217,10 +217,12 @@ for_window [class="st-256color" title="^scratchpad-terminal$"] \ resize set 1600 900, \ border none, \ move position center -# hide scratchpad-terminal again when restarting i3 +# Hide scratchpad-terminal again when restarting i3 exec_always i3-msg '[class="St" title="^scratchpad-terminal$"] scratchpad show' -# show scratchpad-terminal or create one if none exists -bindsym $mod+comma exec ~/.config/i3/scratchpad-terminal.sh -s -c st-256color -n scratchpad-terminal -e 'st -d "$(xcwd)"' +# Show scratchpad-terminal or create one if none exists +# Pass current working directory of the focused window but escape spaces. +# Layers of escaping: i3, sh, sed +bindsym $mod+comma exec /bin/sh -c '~/.config/i3/scratchpad-terminal.sh -s -c st-256color -n scratchpad-terminal -e -- st -d $(xcwd | sed "s/ /\\\\\\\\ /g")' # hide scratchpad-terminal indepedent of where the focus sits bindsym $mod+Shift+comma exec ~/.config/i3/scratchpad-terminal.sh -h -c st-256color -n scratchpad-terminal diff --git a/.config/i3/scratchpad-terminal.sh b/.config/i3/scratchpad-terminal.sh index 04245a2..20e076d 100755 --- a/.config/i3/scratchpad-terminal.sh +++ b/.config/i3/scratchpad-terminal.sh @@ -12,7 +12,11 @@ while getopts "c:e:hn:s" FLAGS; do *) exit 1;; esac done -shift $(($OPTIND - 1 )) +shift $(($OPTIND - 1)) + +if [ "$COMMAND" = "--" ]; then + COMMAND="$@" +fi [ -n "$W_CLASS" ] || return 1 [ -n "$W_NAME" ] || return 1