Add proper script to toggle workspace window

This commit is contained in:
2022-07-05 22:27:10 +02:00
parent 40ef2ad2fd
commit e2395d12cf
2 changed files with 60 additions and 21 deletions

View File

@@ -226,27 +226,7 @@ assign [class="^Wine$"] $workspace10
bindsym $mod+Shift+v exec --no-startup-id redshift-toggle
# bindsym $mod+$pim_toggle \
# mark --add _source; \
# focus output eDP-1; \
# mark --add _origin; \
# workspace $workspace10; \
# mark --add _destination; \
# [con_mark="^_destination$"] swap container with mark "_source"; \
# [con_mark="^_source$"] focus; unmark _source; \
# [con_mark="^_origin$"] focus; unmark _origin; \
# [con_mark="^_destination$"] focus; unmark _destination; \
bindsym $mod+$pim_toggle \
unmark _destination; \
mark _source; \
workspace $workspace10; \
mark --add _destination; \
[con_mark="^_destination$"] swap container with mark "_source"; \
[con_mark="^_source$"] focus; \
unmark _source; \
[con_mark="^_destination$"] focus; \
unmark _destination;
bindsym $mod+$pim_toggle exec --no-startup-id ~/.i3/scripts/swap-from-workspace.sh $workspace10
################################################################################
### MODES ######################################################################

View File

@@ -0,0 +1,59 @@
#!/usr/bin/env bash
set -o nounset
set -o errexit
set -o pipefail
set -o xtrace
cmds=()
workspacescratch="${1}"
i3msgworkspaces="$(i3-msg -t get_workspaces)"
output_of_pim=$(printf '%s' "${i3msgworkspaces}" | jq -r 'map(select(.name == "'"${workspacescratch}"'")) | .[0].output')
active_workspace_on_target_output=$(printf '%s' "${i3msgworkspaces}" | jq -r 'map(select(.output == "'"${output_of_pim}"'" and .visible)) | .[0].name')
focused_workspace_name=$(printf '%s' "${i3msgworkspaces}" | jq -r 'map(select(.focused)) | .[0].name')
focused_workspace_output=$(printf '%s' "${i3msgworkspaces}" | jq -r 'map(select(.focused)) | .[0].output')
if [[ "${focused_workspace_name}" == "${workspacescratch}" ]]; then
exit 0
fi
cmds+=('unmark _destination')
cmds+=('mark _source')
if [[ "${active_workspace_on_target_output}" != "${workspacescratch}" ]] && [[ "${output_of_pim}" != "${focused_workspace_output}" ]]; then
need_output_reset=1
else
need_output_reset=0
fi
if ((need_output_reset)); then
cmds+=('workspace "'"${active_workspace_on_target_output}"'"')
cmds+=("mark --add _origin")
fi
cmds+=('workspace "'"${workspacescratch}"'"')
cmds+=('mark --add _destination')
cmds+=('[con_mark="^_destination$"] swap container with mark "_source"')
cmds+=('[con_mark="^_source$"] focus')
cmds+=('unmark _source')
if ((need_output_reset)); then
cmds+=('[con_mark="^_origin$"] focus')
cmds+=('unmark _origin')
fi
cmds+=('[con_mark="^_destination$"] focus')
cmds+=('unmark _destination')
i3msgcmd=""
for cmd in "${cmds[@]}"; do
i3msgcmd="${i3msgcmd}${cmd};"
done
i3-msg "${i3msgcmd}"