창 제목에 현재 날짜 및 시간 표시

창 제목에 현재 날짜 및 시간 표시

현재 활성 창에 현재 날짜 및 시간(예: 디지털 시계 숫자)을 표시하는 것이 현재/기술적으로 가능합니까? 스크립트에서 일부 텍스트를 추가하는 것과 같나요?

답변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

사용하는 방법

  1. 스크립트는xdotool

    sudo apt-get install xdotool
    
  2. 아래 스크립트를 빈 파일에 복사하고 다른 이름으로 저장하세요.show_datetime.py

  3. 다음 명령으로 테스트 실행해 보세요.

    python3 /path/to/show_datetime.py
    

    새 창을 열거나 기존 창에 집중하세요. 날짜와 시간은 1~2초 내에 창 제목에 표시되어야 합니다. 잠시 기다려 시간이 업데이트되는지 확인하세요.

  4. 모든 것이 제대로 작동하면 시작 응용 프로그램에 추가하세요. Dash > 시작 응용 프로그램 > 추가에서 다음 명령을 추가하세요.

    python3 /path/to/show_datetime.py
    
  5. 시작 시 실행하는 데 어려움이 있는 경우 다음 명령을 사용하십시오(시작 응용 프로그램에서).

    /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

관련 정보