현재 활성 창에 현재 날짜 및 시간(예: 디지털 시계 숫자)을 표시하는 것이 현재/기술적으로 가능합니까? 스크립트에서 일부 텍스트를 추가하는 것과 같나요?
답변1
활성 창 제목에 날짜 및 시간 표시
아래 스크립트 실행(편집된 버전)이 하나) 배경에서 맨 앞 창에 현재 날짜 및 시간이 표시됩니다.
창이 초점을 잃으면 시간이 업데이트되지 않습니다. 가장 앞쪽 창에만 시간이 표시됩니다.~ 할 것이다업데이트됩니다.
스크립트에는 날짜와 시간도 표시됩니다.탭당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
사용하는 방법
스크립트는
xdotool
sudo apt-get install xdotool
아래 스크립트를 빈 파일에 복사하고 다른 이름으로 저장하세요.
show_datetime.py
다음 명령으로 테스트 실행해 보세요.
python3 /path/to/show_datetime.py
새 창을 열거나 기존 창에 집중하세요. 날짜와 시간은 1~2초 내에 창 제목에 표시되어야 합니다. 잠시 기다려 시간이 업데이트되는지 확인하세요.
모든 것이 제대로 작동하면 시작 응용 프로그램에 추가하세요. Dash > 시작 응용 프로그램 > 추가에서 다음 명령을 추가하세요.
python3 /path/to/show_datetime.py
시작 시 실행하는 데 어려움이 있는 경우 다음 명령을 사용하십시오(시작 응용 프로그램에서).
/bin/bash -c "sleep 20&&python3 /path/to/show_datetime.py"
설명
스크립트는 다음 세 가지 사항을 주시합니다.
- 가장 앞쪽의 창문은ID
- 가장 앞쪽의 창문은이름
- 현재시간(분)
둘 중 하나가 변경되면 날짜/시간이 현재 맨 앞 창에 추가되거나 업데이트됩니다.
왜 창의 이름과 ID를 사용합니까?
- 창-ID잘못된 창 설정을 방지하기 위해 창 제목을 설정하는 데 사용됩니다(예: 터미널 창의 이름도 비슷하게 지정할 수 있음).
- 창-이름탭 창을 포함하는 것입니다. 예를 들어
Firefox
. 창이름다른 탭을 선택하거나 열면 변경됩니다. 반면 창은-ID변하지 않을 것입니다. - 그만큼가정 어구
if any([])
이유가 있는 경우에만 창 제목을 편집하는 것입니다.
답변2
간단한 쉘 스크립트입니다:
요구사항
xdotool
sudo apt-get install xdotool
wmctrl
sudo apt-get install wmctrl
주요 부분
wmctrl -r :ACTIVE: -N "$(awk -F' \\|\\|' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) || $(date "+%Y-%m-%d %H:%M:%S")"
||
창 제목과 날짜/시간 부분 사이의 구분 기호입니다 . 다른 것이 필요하면 변경하세요. 예:
#
wmctrl -r :ACTIVE: -N "$(awk -F' #' '{print $1}' <<< $(xdotool getwindowfocus getwindowname)) # $(date "+%Y-%m-%d %H:%M:%S")"
스크립트
#!/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
답변3
다음은 bash, xprop 및 wmctrl(우분투에는 제공되지 않음)을 활용하는 스크립트입니다. 이 스크립트는 자동 시작 항목으로 추가되거나 .desktop
파일에 배치될 수 있습니다. 기본 아이디어는 현재 활성 창의 ID를 얻고, 현재 제목을 저장하고, 날짜 명령 및 제목의 출력을 사용하여 새 제목을 형성하는 것입니다. if 문은 날짜 추가의 무한 루프를 방지합니다. wmctrl
으로 얻을 수 있습니다 sudo apt-get install wmctrl
. 그렇지 않으면 이 스크립트는 매우 단순하지만 작업을 충분히 잘 수행합니다.
#!/bin/bash
# Date : June 9 2015
# Author: Serg Kolo
# Description: script to append time to window titles
while sleep 1; do
ACTIVEID=$(xprop -root | awk '/^_NET_ACTIVE_WINDOW/ {gsub("0x","0x0");print $5}')
MATCHED_TITLE="$( wmctrl -l | awk -v searchterm=$ACTIVEID '$0~searchterm {for(i=4;i<=NF;i++) printf $i" "}')"
date --date="$(echo $MATCHED_TITLE | awk '{print $1" "$2}')" > /dev/null 2>&1
if [ "$?" -eq 0 ]; then
MATCHED_TITLE="$(echo $MATCHED_TITLE | awk '{for(i=3;i<=NF;i++) printf $i" "}')"
fi
sleep 1
wmctrl -i -r $ACTIVEID -T "$(date +"%D %H:%M" 2>/dev/null) $MATCHED_TITLE "
done