Как знать, сколько времени мой компьютер не использовался через GUI?

Как я могу видеть, какой длины не было никакого входа через мышь или клавиатуру на моем компьютере?

5
задан 25 November 2016 в 13:47

1 ответ

Как видеть время простоя; время Ваш компьютер не имеет никакого входа от мыши или клавиатуры

  • Для наблюдения времени простоя Вам будет нужен xprintidle:

    sudo apt-get install xprintidle
    
  • Показать что xprintidle делает, работают:

    sleep 5 && xprintidle
    

    enter image description here

    ... который показывает время простоя в миллисекундах

  • Если Вы непрерывно хотите показать время простоя в терминале:

    while true; do xprintidle && sleep 1; done
    

    enter image description here

От курса, xprintidle может использоваться в сценариях для предложения более изящного способа следить за временем простоя, но это - в основном он.

Только для забавы

... Так как мы делаем все с индикатором в эти дни, пример, как показать время простоя в GUI, с помощью xprintidle:

enter image description here

#!/usr/bin/env python3
import signal
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, AppIndicator3, GObject
import time
from threading import Thread
import os
import subprocess

currpath = os.path.dirname(os.path.realpath(__file__))

class Indicator():
    def __init__(self):
        self.app = 'show_idlet'
        iconpath = os.path.join(currpath, "idle.png")
        self.indicator = AppIndicator3.Indicator.new(
            self.app, iconpath,
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.set_menu())
        self.timer = Thread(target=self.check_recent)
        self.timer.setDaemon(True)
        self.timer.start()

    def set_menu(self):
        # quit
        menu = Gtk.Menu()
        item_quit = Gtk.MenuItem('Quit')
        item_quit.connect('activate', self.stop)
        menu.append(item_quit)
        menu.show_all()
        return menu

    def showtime(self, section):
        return (2-len(str(section)))*"0"+str(section)

    def convert_time(self, time):
        hrs = self.showtime(str(int(time/3600)))
        mins = self.showtime(str(int((time%3600)/60)))
        secs = self.showtime(str(time%60))
        return hrs+":"+mins+":"+secs

    def check_recent(self):
        while True:
            time.sleep(1)
            idle = round(int(subprocess.check_output(
                ["xprintidle"]).decode("utf-8").strip())/1000)
            GObject.idle_add(
                self.indicator.set_label,
                self.convert_time(idle), self.app,
                priority=GObject.PRIORITY_DEFAULT
                )

    def stop(self, source):
        Gtk.main_quit()

Indicator()
GObject.threads_init()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()

Как использовать

  1. Установка xprintidle

    sudo apt-get install xprintidle
    
  2. Скопируйте сценарий выше в пустой файл, сохраните его как show_idle.py

  3. Скопируйте значок ниже (щелкните правой кнопкой>, сохраняют как), сохраните его как (точно названный): idle.png, в одном и том же каталоге как сценарий

    enter image description here

  4. Выполните индикатор от терминала:

    python3 /path/to/show_idle.py
    
  5. Если Вы хотите, можно добавить его для запущения приложений: выберите Dash> Startup Applications> Add. Добавьте команду:

    /bin/bash -c "sleep 10 && python3 /path/to/show_idle.py"
    
7
ответ дан 23 November 2019 в 09:05

Другие вопросы по тегам:

Похожие вопросы: