Как использовать wmctrl для закрепления приложения во всех рабочих областях
У меня есть скрипт, вызываемый при входе в систему, для перемещения определенных приложений в соответствующие рабочие области.
Я хочу закрепить одно приложение во всех рабочих областях. Согласно справочной странице wmctrl ,
Номера рабочих столов начинаются с 0. Используйте -1, чтобы закрепить все рабочие столы.
Однако команда
wmctrl -i -r 0x03800003 -t -1
не имеет никакого эффекта. Использование положительных целых чисел правильно закрепляет приложения.
(Я получил идентификатор окна с помощью wmctrl -l)
Что я делаю не так?
2 ответа
wmctrl -i -r <window-id> -t -2
у меня сработало (спасибо @harrymc), особенно с браузером Opera. Это была часть скрипта Python, вызываемого при запуске.
import os
import subprocess
import time
time.sleep(30)
processes = {
'Opera': -2,
'Spotify': 1,
'System Monitor': 3,
}
# Move processes to workspace
process_bytes = subprocess.check_output(['wmctrl', '-l'])
process_string = process_bytes.decode('utf-8')
window_data = process_string.split('\n')
for line in window_data:
row = line.split(' ')
window_id = row[0]
description = ' '.join(row[4:])
for process, workspace in processes.items():
if process in description:
# workspace is 0 based
os.system(f'wmctrl -i -r {window_id} -t {workspace}')
break
Спасибо, у меня сработало «wmctrl -i -r 0x03800003 -t -1» с соответствующим идентификатором.
В моем случае...
- запустить желаемое окно из командной строки в качестве фонового процесса
feh -x -g 624x168-0+0 --scale-down UA-keyboard.png &2. получить идентификатор с помощью wmctrl wmctrl -l | awk '$4 ~ /feh/ {print $1}'0x026000013. оберните его в однострочный текст, чтобы wmctrl переключился на все рабочие области wmctrl -i -r $(wmctrl -l | awk '$4 ~ /feh/ {print $1}' ) -т -1