man*_*vso 8 scripts window-manager window xdotool
当前/技术上是否可以在当前活动窗口中显示当前日期和时间(即:数字时钟数字)?喜欢从脚本中附加一些文本吗?
Jac*_*ijm 10
运行下面的脚本(编辑版本这一背景),最前面的窗口会显示当前日期和时间:
如果窗口失去焦点,则不会更新时间;只有在最前面的窗口,时间才会更新。
该脚本还使用选项卡显示任何应用程序上每个选项卡的日期和时间,例如firefox
或gnome-terminal
#!/usr/bin/env python3
import subprocess
import time
cmd = "xdotool", "getwindowfocus"
get_name = "xdotool", "getactivewindow", "getwindowname"
currtime_1 = time.strftime("%d-%m-%Y %H:%M"); wid_1 = subprocess.check_output(cmd).decode("utf-8").strip()
wname_1 = subprocess.check_output(get_name).decode("utf-8"); wname_1 = wname_1[:wname_1.rfind(" | ")]
while True:
time.sleep(2)
currtime_2 = time.strftime("%d-%m-%Y %H:%M")
try:
wid_2 = subprocess.check_output(cmd).decode("utf-8").strip()
wname_2 = subprocess.check_output(get_name).decode("utf-8"); wname_2 = wname_2[:wname_2.rfind(" | ")]
if any([wid_2 != wid_1, currtime_2 != currtime_1, wname_2 != wname_1]):
cmd2 = ["xdotool", "set_window", "--name", wname_2+" | "+str(currtime_2), wid_2]
subprocess.Popen(cmd2)
currtime_1 = currtime_2; wid_1 = wid_2
except subprocess.CalledProcessError:
pass
Run Code Online (Sandbox Code Playgroud)
该脚本使用 xdotool
sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)将下面的脚本复制到一个空文件中,另存为 show_datetime.py
通过以下命令测试运行它:
python3 /path/to/show_datetime.py
Run Code Online (Sandbox Code Playgroud)
打开一个新窗口或给一个现有的一个焦点。日期和时间应在 1-2 秒内出现在窗口标题中。稍等片刻,看看时间是否更新。
如果一切正常,请将其添加到您的启动应用程序:Dash > Startup Applications > Add,添加命令:
python3 /path/to/show_datetime.py
Run Code Online (Sandbox Code Playgroud)如果您在启动时遇到困难,请使用以下命令(在启动应用程序中):
/bin/bash -c "sleep 20&&python3 /path/to/show_datetime.py"
Run Code Online (Sandbox Code Playgroud)该脚本关注三件事:
如果其中任何一个发生变化,日期/时间将附加或更新到当前最前面的窗口。
为什么要使用窗口的名称和 id?
Firefox
。选择或打开另一个选项卡时,窗口名称将更改,而窗口ID不会更改。if any([])
是只修改,如果有一个理由窗口的标题。xdotool
sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)wmctrl
sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)wmctrl -r :ACTIVE: -N "$(awk -F' \\|\\|' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) || $(date "+%Y-%m-%d %H:%M:%S")"
Run Code Online (Sandbox Code Playgroud)
的||
是窗口的标题的日期/时间部分之间的隔板。如果您需要另一个,请更改它,例如:
#
wmctrl -r :ACTIVE: -N "$(awk -F' #' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) # $(date "+%Y-%m-%d %H:%M:%S")"
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
while true
do
wmctrl -r :ACTIVE: -N "$(awk -F' \\|\\|' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) || $(date "+%Y-%m-%d %H:%M:%S")"
sleep 5
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1043 次 |
最近记录: |