L42*_*L42 6 scripts window-manager automation focus minimize
有没有办法在一段时间内没有焦点后自动最小化程序?
完美运行,和你描述的完全一样。
下面的后台脚本将在没有焦点的任意时间后最小化窗口。
#!/usr/bin/env python3
import subprocess
import sys
import time
def getwindowlist():
# get windowlist
try:
return [
l.split()[0] for l in \
subprocess.check_output(["wmctrl", "-l"]).decode("utf-8")\
.splitlines()
]
except subprocess.CalledProcessError:
pass
def getactive():
# get active window, convert to hex for compatibility with wmctrl
wid = str(hex(int(
subprocess.check_output(["xdotool", "getactivewindow"])\
.decode("utf-8"))))
return wid[:2]+str((10-len(wid))*"0")+wid[2:]
# round down on 2 seconds (match needs to be exact)
minitime = (int(sys.argv[1])/2)*2
wlist1 = []
timerlist = []
while True:
time.sleep(2)
wlist2 = getwindowlist()
if wlist2:
# clean up previous windowlist; remove non- existent windows
try:
timerlist = [
wcount for wcount in timerlist if wcount[0] in wlist2
]
except IndexError:
pass
for w in wlist2:
# add new windows, zero record
if not w in wlist1:
timerlist.append([w, 0])
# add two to account(s)
for item in timerlist:
item[1] += 2
active = getactive()
for w in timerlist:
# minimize windows that reach the threshold
if w[1] == minitime:
subprocess.Popen(["xdotool", "windowminimize", w[0]])
# set acoount of active window to zero
w[1] = 0 if w[0] == active else w[1]
wlist1 = wlist2
Run Code Online (Sandbox Code Playgroud)
该脚本需要wmctrl和xdotool:
sudo apt-get install wmctrl xdotool
Run Code Online (Sandbox Code Playgroud)将脚本复制到一个空文件中,另存为 minimize_timer.py
以所需的时间(以秒为单位(最小化之前))测试运行它,作为参数,例如:
python3 /path/to/minimize_timer.py 300
Run Code Online (Sandbox Code Playgroud)
...在 5 分钟无焦点后最小化窗口
如果一切正常,请将其添加到启动应用程序:Dash > Startup Applications > Add。添加命令:
/bin/bash -c "sleep 15 && python3 /path/to/minimize_timer.py 300"
Run Code Online (Sandbox Code Playgroud)0xdotool's windowminimize。如果一个窗口不再存在,它将从记录列表中删除。
下面的版本将在 x 秒后最小化任意应用程序的所有窗口。
sudo apt-get install wmctrl xdotool
Run Code Online (Sandbox Code Playgroud)
脚本需要xdotool:
sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)将脚本复制到一个空文件中,另存为 minimize_timer.py
以所需的时间(以秒为单位(最小化之前))测试运行它,作为参数,例如:
python3 /path/to/minimize_timer.py 300
Run Code Online (Sandbox Code Playgroud)
...在 5 分钟无焦点后最小化窗口
如果一切正常,请将其添加到启动应用程序:Dash > Startup Applications > Add。添加命令:
/bin/bash -c "sleep 15 && python3 /path/to/minimize_timer.py 300"
Run Code Online (Sandbox Code Playgroud)