Portál AbcLinuxu, 12. května 2025 14:07
chápu-li správně, že tou nečinností máte na mysli nějakou pauzu ve vstupu z klávesnice a myši, pak stačí sledovat stav příslušných eventů
Dobře, pokud to nechcete řešit vlastním programem, třeba sledováním /dev/input/mice, tak použijte třeba starý dobrý xscreensaver. Za prvé by se dalo použít přepínače -wait (xscreensaver-command -wait) a sledováním jeho výstupu, nebo rovnou plácnout příslušný prográmek se shutdownem do /usr/libexec/xscreensaver/
poslední možnost jsem právě prakticky vyzkoušel (napsal jsem skriptík, který mi při aktivaci pošle mejl: /usr/libexec/xscreensaver/myscript, a pak jsem ho přidal do ~/.xscreensaver), funguje to dobře, dle očekávání.
Proč očekáváte tuhle funkci v cronu? Co se týče ostatních vámi uvedených programů nevím, dle jména je to něco pro KDE, neznám, KDE se obloukem vyhýbám.
skusil som nekonecny cyklus a naozaj stupaju cisla po sekunde od "0",
ked pohnem mysou alebo stlacim kl., tak sa zacne stupat znova od "0"
ok, teraz este v sheli vyhrabat otazku s timeoutom a bude to super
#! /bin/sh
while [ true ]
do
./scrinfo.py
done
Zeptá se Tě zda-li chceš vypnout PC a pokud neodpovíš do 10s, tak zavolá shutdown:
#!/usr/bin/python # -*- coding: utf-8 -*- from Tkinter import * class App: def __init__(self, win): self.win = win self.win.wm_title("Query") self.win.resizable(0, 0) self.query_LB = Label(self.win, text="Mozem vypnut pc?") self.query_LB.grid(row=0, column=0, columnspan=2, sticky=S, padx=10, pady=10) self.yes_BT = Button(self.win, text="Ano", command=self.shutdown) self.yes_BT.grid(row=1, column=0, sticky=S, padx=10, pady=10) self.no_BT = Button(self.win, text="Nie", command=self.win.destroy) self.no_BT.grid(row=1, column=1, sticky=S, padx=10, pady=10) def shutdown(self): print "Shutdown" os.system("sudo /sbin/shutdown") self.win.destroy() def main(): win = Tk() app = App(win) win.after(10000, app.shutdown) win.mainloop() if __name__ == '__main__': main()
Případně řešení s použitím kdialog:
#!/bin/bash kill_children() { for child_pid in $(ps -o pid= --ppid $1); do kill_children $child_pid kill $child_pid done } kdialog --yesno "Mozem vypnut pc" & KDIALOG_PID=$! sleep 10 && kill $KDIALOG_PID & wait $KDIALOG_PID RESULT=$? if [ $RESULT -eq 0 ] || [ $RESULT -eq 143 ]; then echo "shutdown" else echo "pass" fi kill_children $$
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.