#!/usr/bin/env python3
import subprocess
import getpass
import time
import sys
app = sys.argv[1]
user = getpass.getuser()
get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8")
ws1 = get("wmctrl -lp"); t = 0
subprocess.Popen(["/bin/bash", "-c", app])
while t < 30:
ws2 = [w.split()[0:3] for w in get("wmctrl -lp").splitlines() if not w in ws1]
procs = [[(p, w[0]) for p in get("ps -u "+user).splitlines() \
if app[:14] in p and w[2] in p] for w in ws2]
if len(procs) > 0:
w_id = procs[0][0][1]
cmd1 = "wmctrl -ir "+w_id+" -b remove,maximized_vert remove,maximized_horz"
cmd2 = "xdotool windowmove "+w_id+" "+sys.argv[2]+" "+sys.argv[3]
for cmd in [cmd1, cmd2]:
subprocess.call(["/bin/bash", "-c", cmd])
break
time.sleep(0.5)
t = t+1
如果您使用以下参数运行以下脚本:
应用程序的窗口将放置在屏幕上的 x, y 位置。
如何设置
该脚本同时使用
wmctrl
和xdotool
:然后:
~/bin
(您可能必须创建目录)为place_window
(无扩展名)如果您刚刚创建
~/bin
,请注销/登录或运行命令:使用命令测试运行它(例如):
gedit 窗口应该出现在屏幕上的 x = 100,y = 100 处。
如果一切正常,您可以将命令放在快捷方式组合下(选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”),或者将其作为应用程序启动器的快速列表快捷方式。
剧本:
这个怎么运作
脚本运行命令启动应用程序,等待相应的窗口出现(等待 pid 生成新窗口)并将其定位到您定义的坐标。
将命令设置为快速列表项
最优雅的方法是将其添加为键盘快捷键,或者作为快速列表项添加:
在这种情况下,在该
Exec=
行中使用的命令将是例如: