neděle 17. dubna 2011

Shutdown GTimer 0.2.x - evoluce uspávače pecí UPDATE 19.4.11

Zas mě to po delší době chytlo a začal jsem se opět vrtat v Pythonu a GTK+, abych z mého uspávacího timeru konečně udělal užitečnou aplikaci. Novinkou je, krom přidání Restartu a LogOutu, konečně spouštění příkazů shellu, které umožní po nastavené době provést defakto jakoukoli akci, buď samostatně, nebo v kombinaci s těmi  základními. Také nově aplikace zobrazuje více časových informací a dá se využít nejen k provedení akce za určitou dobu, ale i v určitou dobu. Zůstává poměrně neobvyklá filosofie ovládání, která umožňuje i po spuštění odpočtu nastavovat všechny jeho parametry úplně stejně, jako by neběžel, takže posunutí času o deset minut může být otázkou jednoho pootočení kolečka myši.  Rozeberu to v následujících řádcích trochu detailněji a snad i srozumitelně..

Aktuální verze vždy na:
sourceforge.net/projects/shutdown-gtimer/ 
a zde:
gdhnotes.blogspot.com/p/shutdown-gtimer.html 

Update 19.4.11: 0.2.0 -> 0.2.1  - drobné kosmetické změny


Instalace klasicky polepáním na stažený balík. Přeinstaluje případnou starší verzi. Aplikaci najdete v menu Aplikace>Systémové nástroje>Shutdown GTimer.

Předem upozorňuji, že českou lokalizaci jsem ještě neudělal, snad brzy, až se to doladí.
Začnu s popisem prvků okna SGTimeru od začátku. 
Lock - zaškrtávátko, které určuje, zda bude před uspáním, či hibernací zamknuta obrazovka a po probuzení tudíž bude vyžadováno heslo uživatele. Při spuštění ostatních odpočtů se automaticky odškrtne, neb by zamknutí obrazovky většinou nedávalo smysl. Ale volba vám zůstává, kdykoli to můžete opět zaškrtnout. Jako výchozí se bere nastavení Gnome pro Suspend v gconf: /apps/gnome-power-manager/lock/suspend, zde je momentálně možné provést změnu výchozího nastavení třeba pomocí aplikace gconf-editor. Pokud informace z gconf nebude dostupná, Lock se automaticky zaškrtne.
Dále se v okně zobrazuje čas odpočtu v hodinách, minutách a sekundách. Hned vedle je základní vsupní pole pro přímé zadání času v minutách. Toto pole můžete editovat ručně z klávesnice a číslice můžete vkládat i pomocí kláves s českou diakritikou, bez přepínání klávesnice. Stisk klávesy Enter rovnou spustí odpočet pro vypnutí počítače (Shutdown)
Editaci můžete provádět samozřejmě i myší,  a s ní souvisí malé číslo vedle vstupního pole, které zobrazuje počet minut, který přičte/odečte otočení kolečka od aktuálního času. Kolečko myši nastavuje čas nad většinou plochy okna, tedy i nad tlačítky, není třeba se někam trefovat. Kliknutím levým, nebo pravým myšítkem kamkoliv do okna aplikace, mimo tlačítka, vstupní pole, zaškrtávátka a combo box, můžete krok cyklicky měnit: 10 > 1 > 60 > 10 ... Velmi rychle tak můžete kolečkem myši nastavit odpočet i na pár dnů.
Vpravo od vstupního pole je trvání odpočtu přepočtené na čas, kdy odpočet skončí, včetně dne v týdnu. Pomocí tohoto ukazatele si jednoduše nastavíte provedení akce třeba na 13:45 zítra. Tento čas se aktualizuje, i když zrovna nic nenastavujete - s nulovým nastavením odpočtu tedy stále ukazuje aktuální čas. Odpočet se dá nastavit maximálně na 9999 minut, což je témeř celý týden.
Pod časovými údaji je řada tlačítek, kterými se spouští i zastavuje odpočet. 
  • Close(Zavřít)/Stop - zastavuje odpočet a když žádný neběží, zavírá aplikaci.
    Další tlačítka spouští odpočet pro zvolenou akci:
  • Hibernate - pošle systému požadavek na hibernaci počítače na pevný disk. Obsah RAM se uloží na pevný disk a při opětovném startu počítače se opět přenese zpět a můžete pokračovat v práci přesně tam kde jste skončili. Vyžaduje dostatečně velký odkládací diskový oddíl/soubor (swap). Využívá služeb UPower,  DeviceKit, nebo Hal.
  • Suspend - pošle systému požadavek na tzv. uspání počítače do RAM. Počítač se vypne, ale zůstane napájená paměť RAM s veškerým svým obsahem, opětovný start počítače je velmi rychlý, ale oproti hibernaci se při výpadku napájení počítače všechno ztratí, včetně neuložené práce. Využívá služeb UPower,  DeviceKit, nebo Hal.
  • Shutdown - klasické vypnutí systému a počítače, oproti předchozím dvěma režimům by mělo fungovat každému. Využívá služeb ConsoleKit, nebo Hal. 
  • Restart - restartuje počítač. Využívá služeb ConsoleKit, nebo Hal
  • LogOut - provede odhlášení uživatele ze systému. Využívá službu SessionManager, přiznám se, že jsem ještě nezkoumal její využití v jiných prostředích krom Ubuntu 10.04 a 10.10.
  • Execute -  Pokud je zaškrtnutý přepínač Execute (což se při aktivaci tohoto tlačítka stane automaticky), provedou se příkazy ze spodního editovatelného combo boxu v samostatném procesu.
Pokud spustíte odpočet kliknutím na příslušné tlačítko, ztratí toto tlačítko reliéf (je zřejmé z úvodního obrázku) a další klik na stejné tlačítko schová okno aplikace. Stejně to funguje při použití klávesnice. Okno aplikace je pak dostupné přes ikonu v oznamovací oblasti a nemusí překážet na pracovní ploše. Stejný efekt má i stisk klávesy Esc.
Ikona v oznamovací oblasti indikuje chod odpočtu svou barvou (když odpočet běží zabarví se do červena), po najetí kurzoru myši ukáže tooltip s informací o stavu a případně zbývajícím času odpočtu. Kliknutím levým myšítkem zobrazíte/schováte okno aplikace, prostředním myšítkem můžete odpočet zastavit, pokud běží, nebo aplikaci ukončit. Otáčení kolečka myši nad ikonou funguje stejně jako nad oknem aplikace (v novějších systémech - v Ubuntu 8.04 ještě ne) - můžete tak nastavovat čas odpočtu, i měnit krok pravým myšítkem. Pokud odpočet dosáhne času jedné minuty začne ikona blikat a zároveň se zobrazí bublina s informací, že se odpočet chýlí ke konci.
Spouštění skriptů je usnadněno tím, že si je můžete předpřipravit dopředu v adresáři ~/.sgtimer. Adresář se po instalaci nevytváří automaticky, pokud tuto vlastnost chcete využít, vytvoříte si ho sami. Adresář je při startu aplikace zkontrolován a všechny nalezené spustitelné soubory se objeví v combo boxu ve spodní části okna SGTimeru. Mimo to sem můžete zapsat jakékoli příkazy shellu, jen pozor - použije se výchozí shell /bin/sh, který v Ubuntu odkazuje na /bin/dash, tedy nikoliv BASH.
Příkazy a skripty můžete spouštět samostatně přes tlačítko Execute, pak se po skončení odpočtu tyto provedou ve vlastním procesu, který není závislý na SGTimeru. Pokud si tedy tímto způsobem spustíte nějakou aplikaci, neukončí se  ukončením SGTimeru a naopak můžete SGTimer použít na další úlohu. 
Pokud se příkazy spouští před jinou akcí (Shutdown, Suspend,.. a současně zaškrtnutý přepínač Execute), čeká se pro skončení odpočtu než se provedou  a pak teprve SGTimer dokončí zvolenou akci. Během doby provádění těchto příkazů není možné SGTimer ovládat, leda ho násilně zavřít a ukončit tím i spuštěné příkazy.

Asi ten popis není tak dokonalý, jak jsem chtěl, ale věřím, že kdo bude chtít, pochopí. Budu rád, když nový Shutdown GTimer zkusíte a případně mi zahlásíte jak to funguje, kde mám chyby a co byste případně změnili a vylepšili. Aplikace nepoužívá žádné zákeřnosti, které by v systému mohly napáchat škody (pokud jí to sami nenařídíte) a většina funkcí by měla být dostupná přinejmenším od Ubuntu 8.04, do 10.10. 11.04 se mi ve VirtualBoxu nějak podělalo, tak momentálně nevyzkouším, ale dodělat podporu při případných změnách v power managementu bude otázkou pár minut.

3 komentáře:

  1. Wow. Jen škoda, že to nemám jak využít: prostě čučim do počítače a pak ho vypnu a jdu spát :)

    OdpovědětVymazat
  2. Já to vlastně taky moc nepotřebuju, ale dá se to využít třeba když si peču pizzu - nastavím si čas a až mi začne blikat ikona v panelu, jdu si pro ní. A kdybych chtěl pokrýt sklerózu, může mi spustit předpřipravený skript pizza-je-hotova.sh a zobrazit zprávu :D
    Nicméně nejvíc lidí mi sem chodí právě kvůli tomuto tématu, tak to asi někdo využívá :)

    OdpovědětVymazat
  3. Chtěl jsem jen říct: thumbs up! Momentálně se hrabu v Céčku, ale jak na to tak koukám, měl bych se přeorientovat... :)

    OdpovědětVymazat

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.