i3 - Переместить контейнер на следующий / предыдущий ws (также, если он не существует) - PullRequest
0 голосов
/ 11 февраля 2019

Я использую i3 версии 4.16

Я хотел бы связать ярлык для перемещения текущего контейнера в следующее / предыдущее рабочее пространство, независимо от того, существует он или нет.

С помощью этот пост с использованием jq, у меня есть «своего рода» рабочее решение, но оно очень нестабильно (иногда оно переключается на рабочую область без перемещения контейнера, а иногда перед переключением перемещает контейнер из следующего ws в текущий ws)ws)

Может кто-нибудь придумать лучшее решение ???

Мой конфиг i3:

set $ws-right "$(( $( i3-msg -t get_workspaces | jq '.[] | select(.focused).num' ) + 1))";
set $ws-left "$(( $( i3-msg -t get_workspaces | jq '.[] | select(.focused).num' ) - 1))";

bindsym shift+control+$mod+Left exec i3-msg move container to workspace $ws-left; exec i3-msg workspace $ws-left
bindsym shift+control+$mod+Right exec i3-msg move container to workspace $ws-right; exec i3-msg workspace $ws-right

Спасибо за ваше время;)

1 Ответ

0 голосов
/ 23 марта 2019

Только для информации

В итоге я использовал сценарий оболочки, чтобы избежать асинхронного выполнения двух команд

.i3MoveNext.sh:

wsNext=$(( $( i3-msg -t get_workspaces | jq '.[] | select(.focused).num' ) + $1))
i3-msg move container to workspace $wsNext
i3-msg workspace $wsNext

и затем связатьКомбинация предпочтительных ключей, например:

bindsym shift+control+$mod+Left exec ~/.i3MoveNext.sh -1
bindsym shift+control+$mod+Right exec ~/.i3MoveNext.sh 1
...