Причина довольно проста: когда вы запускаете хром
, он не возвращается до завершения, то есть после закрытия Хром . Таким образом, sleep
и i3-msg
будут запускаться только после того, как окно уже исчезнет.
Чтобы решить эту проблему, вам просто нужно запустить хром
в фоновом режиме, это можно сделать, добавив к команде &
.Требуется спящий режим
, без него i3-msg
может быть запущен до того, как Chromium даже инициализирует свое окно. Пять секунд могут быть немного длинными, но на самом деле это зависит от того, как быстро Chromium открывается в вашей системе.
Кроме того, я бы предложил добавить критерии к i3-msg
. Таким образом, он работает с любым окном Chromium , а не только с текущим сфокусированным окном, которое на самом деле может не быть желаемым окном Chromium (очевидно, это может быть нежелательным поведением, если вы хотите, чтобы некоторые окна Chromium были полноэкранными).
#!/bin/sh
i3-msg workspace web
/bin/chromium --start-fullscreen &
sleep 2
i3-msg '[instance="^chromium$"] fullscreen disable'
В качестве альтернативы , если вы хотите, чтобы окна Chromium всегда отображались в рабочей области «Интернет», вы можете использовать директивы конфигурации assign
и for_window
. в вашей конфигурации i3 для выполнения работы:
assign [instance="^chromium$"] web
for_window [instance="^chromium$"] exec "sh -c 'sleep 2; i3-msg \[instance=chromium\] fullscreen disable'"
При этом вам больше не нужен скрипт, и каждый раз, когда вы запускаете chromium
i3 , он будет размещать его в сети и через две секунды окно выйдет из полноэкранного режима.
Примечание: Хотя теоретически можно использовать полноэкранный режим
напрямую с for_window
, он не работает с Chromium , потому что окно фактически начать в полноэкранном режиме. Chromium просто очень быстро включает полноэкранный режим; к сожалению, i3 работает еще быстрее при запуске for_window
. Таким образом, i3 отключит полноэкранный режим до того, как Chromium даже попытается его включить.Поэтому необходим обход с запущенными sleep
и i3-msg
через exec
.
Проблема в том, что update-rc.d etherwake по умолчанию
может не работать. Попробуйте включить службу через systemctl
, запустите:
systemctl enable etherwake