33 lines
879 B
Bash
33 lines
879 B
Bash
#!/usr/bin/env bash
|
|
workspace=$(i3-msg -t get_workspaces | jq -r '.[] | select(.focused) | .name')
|
|
|
|
# Cherche le dossier courant d'un terminal déjà ouvert sur ce bureau
|
|
terminal_cwd() {
|
|
local wids
|
|
wids=$(i3-msg -t get_tree | jq -r "
|
|
.nodes[].nodes[].nodes[]
|
|
| select(.name == \"$workspace\")
|
|
| .. | objects | select(.window? != null) | .window
|
|
")
|
|
|
|
for wid in $wids; do
|
|
local pid
|
|
pid=$(xdotool getwindowpid "$wid" 2>/dev/null) || continue
|
|
local shell_pid
|
|
shell_pid=$(pgrep -P "$pid" -x zsh | head -1) || continue
|
|
local cwd
|
|
cwd=$(readlink "/proc/$shell_pid/cwd" 2>/dev/null) || continue
|
|
echo "$cwd"
|
|
return
|
|
done
|
|
}
|
|
|
|
dir=$(terminal_cwd)
|
|
|
|
if [ -z "$dir" ]; then
|
|
dir_file="$HOME/.config/i3/workspace-dirs"
|
|
dir=$(grep "^${workspace}=" "$dir_file" 2>/dev/null | cut -d= -f2-)
|
|
fi
|
|
|
|
exec sakura --working-directory "${dir:-$HOME}"
|