我有一个名为“登录时调用”的脚本,用于将特定应用程序移动到各自的工作区
我想将一个应用程序固定到所有工作区。根据这控制端手册页,
桌面编号从 0 开始。使用 -1 固定到所有桌面。
但是命令
wmctrl -i -r 0x03800003 -t -1
没有效果。使用正整数可以正确固定应用程序。
(我已经使用以下方法获取了窗口 IDwmctrl-l)
我究竟做错了什么?
答案1
谢谢,“wmctrl -i -r 0x03800003 -t -1”对我有用,并且具有适当的 Id。
就我而言...
- 从命令行启动我想要的窗口作为后台进程
feh -x -g 624x168-0+0 --scale-down UA-keyboard.png & 2. 使用 wmctrl 获取 id wmctrl -l | awk '$4 ~ /feh/ {print $1}' 0x02600001 3. 将其包装成一行,以便 wmctrl 更改为所有工作区 wmctrl -i -r $(wmctrl -l | awk '$4 ~ /feh/ {print $1}') -t -1
答案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