Portál AbcLinuxu, 25. dubna 2024 06:36


Dotaz: akcia na Udalost - "necinnost" - kde najst ?

12.5.2009 03:36 Peter
akcia na Udalost - "necinnost" - kde najst ?
Přečteno: 326×
Odpovědět | Admin
Zdravim,

viem, ze Linux je hlavne na server stroje, ale hodila by sa mi funkcia vhodna aj na desktop, t.j. pri akcii "necinnost" spustit nejaky program - t.j. napr. vypnut (poweroff)

-nechapem: vsetky programy kPowerSave, kShutDown, gShutdown, kalarm, cron, .. maju vsetky mozne events, ale chyba my tam event "ak je necinnost x sekund alebo podobne, tak ... (mouse/kb necinnost)"

v kPowerSave sice je - akcia pri necinnosti - suspend to xy, ale ja potrebujem vypnut a nie suspend a to tam nie je, takze hladam a hladam a nic nenachadzam na vypnutie pri necinnosti. Mozno zle hladam, please, poradte, zatial pouzivam suspend to RAM pri necinnosti, ale chcem pouzivat "vypnut pri necinnosti"

(p.s.: linux/KDE3x)
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.5.2009 09:08 egfsdfgr4
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
Odpovědět | | Sbalit | Link | Blokovat | Admin

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ů

12.5.2009 12:28 Peter
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
diky za tip,

ano, taka necinnost, ako napr. pri zapnuti screensaveru po x minutach "necinnosti".

t.j. by som chcel namiesto screensaveru vlastnu akciu (program, script)

- "sledovat stav prislusnych eventov" - to zase neviem ako, ale aj keby som vedel,

ocakavam, ze podobny pozadovany event bude naklikatelny aj v hore uvedenych programoch (cron, kPowerSave, kAlarm, ...), mozno to len neviem najst, kde to tam naklikat

t.j. v danych programoch su rozne eventy ["o x minut", "v konkretny cas/datum"], ale nie event: "o nejaky cas, ak necinnost"

12.5.2009 15:25 egfsdfgr4
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?

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.

 

 

13.5.2009 02:14 Peter
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
diky za Vas cas a pracu v xscreensaver (inak -wait parameter som tam nenasiel) - skusam teraz pripravit script pre poweroff pre volanie z xscreensavera, t.j. bezny shell script nestaci, ten sa spravne nezobrazi po zavolani cez xscreensaver, tak sa ucim tcl/tk okienka, lebo nemozem len tak spustit poweroff, musi nabehnut nejaky win dialog a az ked neodpovie do nejakeho casu zavolam poweroff. (este neviem, ci zvladnem casovac v tcl/tk (napr. 30 sekund neodpovie, tak poweroff)

kym sa to naucim, chvilku to potrva

p.s. preto som chcel, aby to uz bolo nejakym programom osetrene (kPowerOff[mohli pridat jeden riadok naviac o krem suspend-poweroff/skoda, atd.)

Fuky avatar 13.5.2009 08:16 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
Možná se Ti bude hodit XScreenSaverQueryInfo , kdyby jsi to chtěl skriptovat např. v Pythonu.
13.5.2009 22:00 Peter
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
dik,

musim otestovat, zatial mi to hadze "0", to asi preto, ze ked odpalim enter na skripte, tak prave ubehlo 0 sekund od poslednej neaktivity, takze to musim skusit cez cron alebo podobne.
13.5.2009 22:10 Peter
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?

 

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

 

13.5.2009 09:08 Zdenek
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
Na okynka spis pouzij kdialog.
13.5.2009 21:57 Peter
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
Diky za tento super lahky script jazyk, len som tam zatial nenasiel potrebnu moznost:

okno s otazkou (yes/no) + timeout napr. 20 sekund, potom odpovevat prednastavenou hodnotou (yes/no)

konkretne: okno s otazkou "mozem vypnut pc (ano/nie)",

ak neodpovie do x sekund odpovie si sam, ze ano

ak to tam je, tak to skusim rad skusim s KDIALOG-om
Fuky avatar 15.5.2009 10:59 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
Příloha:

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()

Fuky avatar 15.5.2009 12:13 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
Příloha:

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 $$

19.5.2009 18:49 Peter
Rozbalit Rozbalit vše Re: akcia na Udalost - "necinnost" - kde najst ?
po dlsom case som sa znova pozrel na toto vlakno a vidim super zdrojaky, budem ich skusat - su to cenne casti kodu - urcite sa zidu,

diki moc

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.