Открытие программы в плавающем окне в i3

Вы можете увидеть, являются ли они портами, подключенными к концентратору 3.0, с помощью команды

lsusb -t

. Вы также можете проверить состояние портов, которые могут присутствовать, с помощью команда

lsusb -v -s 002

может означать, что концентратор USB 3.0 не подключен (возможно, потому, что он предназначен для более высокой модели) или предназначен для обслуживания внутренних устройств.

3
09.10.2018, 22:45
2 ответа

Вот как я сделал это для своего приложения Galculator:

~/.config/i3/config

for_window [class="Galculator" instance="galculator"] floating enable

Чтобы узнать, что входит в ваш class="..." и instance="...", введите xprop в терминале, затем щелкните окно, которое вы хотите сделать плавающим. Вы найдете информацию где-то внизу под WM _CLASS (STRING )= "экземпляр", "класс".

10
27.01.2020, 21:15

Правильный способ заставить текущее окно плавать в i3 — запустить

i3-msg floating enable

Это то, что делает ваша строка конфигурации.

Теперь проблема заключается в том, что i3-msgзапускается до того, как окно окажется в фокусе (, даже если оно захватило фокус ). Питер О. объясняет здесь , как получить окно в фокусе на основе его PID. Мы можем использовать это как таковое:

our_application &
pid="$!"

# Wait for the window to open and grab its window ID
winid=''
while : ; do
    winid="`wmctrl -lp | awk -vpid=$pid '$3==pid {print $1; exit}'`"
    [[ -z "${winid}" ]] || break
done

# Focus the window we found
wmctrl -ia "${winid}"

# Make it float
i3-msg floating enable > /dev/null;

# Move it to the center for good measure
i3-msg move position center > /dev/null;

# Wait for the application to quit
wait "${pid}";

Нота бене:

  • Если приложение само захватывает фокус, может быть достаточно просто подождать, пока это произойдет. См. здесь для способов определения текущего окна.
  • Я не работал над этим, но должна быть возможность расширить сценарий, чтобы вернуть фокус туда, где он был до того, как мы его изменили.
  • wmctrlне всегда может вычислить PID для всех окон; Например, ImageMagick displayвсегда имеет PID 0 в своем списке. См. здесь для модифицированного подхода, использующего заголовок окна.
  • Оборачив существенные части приведенного выше решения в скрипт, можно будет написать что-то вроде

    exec our_command; grab_focus; floating enable
    

    в конфигурации i3.

5
27.01.2020, 21:15

Теги

Похожие вопросы