Вы можете увидеть, являются ли они портами, подключенными к концентратору 3.0, с помощью команды
lsusb -t
. Вы также можете проверить состояние портов, которые могут присутствовать, с помощью команда
lsusb -v -s 002
может означать, что концентратор USB 3.0 не подключен (возможно, потому, что он предназначен для более высокой модели) или предназначен для обслуживания внутренних устройств.
Вот как я сделал это для своего приложения Galculator:
~/.config/i3/config
for_window [class="Galculator" instance="galculator"] floating enable
Чтобы узнать, что входит в ваш class="..." и instance="...", введите xprop в терминале, затем щелкните окно, которое вы хотите сделать плавающим. Вы найдете информацию где-то внизу под WM _CLASS (STRING )= "экземпляр", "класс".
Правильный способ заставить текущее окно плавать в 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.