Conky

Conky, to je geniální nástroj nejen pro sledování systému, který každý běžný uživatel chvilku po nainstalování pošle sprostě do řiti protože ve výchozím stavu to skoro nic neukazuje a ještě to vypadá jako práce předškolního děcka. Nebyl jsem v tomto výjimkou, považoval jsem to za vtip, nemělo to žádné menu s nastavením a vůbec mě nenapadlo, že bych měl někam do souboru zapisovat nějaké podivné šifry, aby to vypadalo k světu. "Jsme snad kua ve dvacátym prvnim století ne? Další prosím!". Holt desetiletí na Windows se na mě projevilo. Vyzkoušel jsem řadu dalších monitorů a všechno to stálo za ho..uby. Když jsem se trochu seznámil s podstatou linuxových systémů, zjistil jsem, že Conky může nabídnout trochu víc, než co jsem viděl po jeho prvním spuštění. Conky nabízí fůru vlastních monitorovacích součástek a když vám to nestačí, můžete si napsat vlastní skripty a programy, které Conky může spouštět a jejich výstup zobrazovat. Dokonce může spouštět skripty, s jejichž výstupem bude nakládat jako s vlastním skriptem, tedy jej interpretovat.

Faktem je, že dokud jsem se nenaučil používat jazyk skriptu Conky, neviděl jsem žádný výstup, který by se mi líbil. Když jsem vše pochopil, vytvořil jsem si konfiguraci, která mi dává informace, o které stojím, na rozumném prostoru, v rozumném designu a za poslední desetiletí šolíchám v zásadě už jen detaily a nějakou tu automatizaci. Zkrátka není nad to si dělat věci po svém a nemuset se spoléhat na to, že to někdo udělá za vás alespoň uspokojivě.

Conky v poslední době přešel na Lua syntaxi řídící části skriptu conkyrc, starší syntaxe by fungovat měla, ale zjevně záleží i na nastavení conky při kompilaci, takže může řvát a je lepší staré části přepsat. Netýká se to syntaxe TEXTové části, kterou má Conky zobrazovat, ta se pouze "obalí" proměnnou conky.text. Úvodní část s konfigurací se jen sází do proměnných v LUA stylu, není to nijak komplikovaný úkon a jsou i nějaké ty skripty pro automatický převod.

Postupem let jsem k mému conky dopsal řadu bash skriptů, které mi některé záležitosti automatizují tak, abych nemuse při každé drobné změně konfigurace systému přepisovat conkyrc ručně. a Tak jsem si dopsal skripty:

 

awake - tento skript má dvě části - jedna z /usr/lib/systemd/system-sleep ukládá čas při uspání do RAM a při probuzení počítá rozdíl, který pak připočte k předchozímu a zapíše, druhou část pak spouští conky a odečítá uložený čas ve sleepu od uptime, aby zobrazil čas, po který byl systém opravdu v běhu.

removable_drives - do okna conky dodává část monitorující připojené disky, proto se mi filesystémy dynamicky přidávají jak je připojím a odebírají, když je odpojím. Každý filesystém dostane graf zaplnění přes který se zobrazuje graf monitorující zápis a čtení a nakonec i teplota disku z hddtemp

hddtemp - jednoduchý parser pro data z hddtemp čtená ze síťového portu, kam (po patřičném nastavení) hddtemp umí posílat data. Původní motivací byl fakt, že čtení dat z portu bylo řádově rychlejší, než přímo z hddtemp. Skript bere jako argument označení disku ve formátu sdX.

get_DE - podle systémové proměnné $DESKTOP_SESSION zjišťuje použité desktopové prostředí (DE) (Gnome Shell, Cinnamon, Unity, ...) a vrací jméno s verzí.

get_GFX - detekuje použitý ovladač grafické karty a podle toho posbírá dostupná data pro zobrazení v conky. Zatím podporuje pouze Nvidii (ovladače nvidia a nouveau), víc nyní nepoužívám.

sensors - umí vypsat seznam čipsetů připojených do /sys/class/hwmon a po zadání jména (nebo jeho části) čipsetu, vrátí aktuální číslo hwmon, nebo celou cestu k datům o teplotách, otáčkách větráků, atd. Když například vyměním driver nouveau za nvidii, přehází se v systému pořadí čipsetů a mají jiná čísla v hwmon, tento skript umí požadavek na data správně nasměrovat i v takové situaci.

painfo -  skript, který jsem napsal pro získávání údajů o zvukových kartách připojených přes PulseAudio a jejich aktuálním nastavení. Dává dva typy výstupů, jeden čistý a druhý s formátováním pro mé conky.

currencies - aktuální kurzy vybraných měn podle ČNB. Kdysi jsem ten skript někde našel a ačkoli nezobrazuje nic k systému, byl mi užitečný, tak v conky  zůstal.

smem - aplikace pro analýzu paměti procesů, používám pro sestavení top 5 žebříku žroutů paměti, oproti conky umí seskupovat více procesů jedné aplikace a zobrazit souhrnou paměť obsazenou procesy, včetně swapu.

Skripty najdete na mém GitHubu, ale pamatujte, že je to konfigurováno pro můj systém a ne všechno je psáno univerzálně.

Zvýryznění syntaxe

Pro jednodušší psaní conkyrc skriptů jsem si vytvořil modul pro zvýraznění syntaxe v Geditu, bez něj se rozsáhlejší skripty opravdu spravovat nedají:
Aktuální verzi souboru conky.lang se syntaxí najdete také na Githubu: conky-rc/syntax_highlight_gedit
Pro syntax highlight conkyrc ve Vimu jsem také něco našel a aktualizoval pro Lua syntaxi conky scriptu: conky-syntax.vim
 
Gedit - tmavé téma Gnome - Yaru-dark

Gedit - světlé téma Gnome - Yaru-light

 

Další informace

naleznete v mých starších blogpostech:
http://gdhnotes.blogspot.cz/search/label/conky


Conky Manager

Aplikace umožňující si správu conky skriptů v grafickém rozhraní. Obsahuje několik hotových skriptů.




31 komentářů:

  1. OO, krása nějakou takovou inspiraci jsem hledal a nedoufal jsem že to najdu česky :-)
    PS: Jinak perfektní web, už putuje do záložek

    OdpovědětVymazat
    Odpovědi
    1. Díky. Mimochodem, to "nedoufal jsem že to najdu česky" je něco, nad čím se v souvislosti s tímto blogem často zamýšlím. Samotného mě vlastně málokdy napadne hledat informace kolem linuxu v češtině, dotaz do vyhledávače automaticky píšu anglicky, aniž bych nad tím přemýšlel...

      Vymazat
  2. Velmi dík za tvůj blog! Jen bych měl dotaz k té indikaci vyměnitelných disků... Nějak mi to nejde vimplementovat do mého conky, tak sjem se chtěl zeptat, co všechno si musím nastavit "na sebe" ve tvém bash skriptu a conky kódu? Díky

    OdpovědětVymazat
    Odpovědi
    1. No, vlastní skript removable-drives.sh by měl fungovat bez úprav, ale protože genreuje skript pro conky, musí se případně přizpůsobit část, která ho graficky definuje, aby zapadl do tvého návrhu. Jelikož je to několik vrstev nad sebou, musí si s tím člověk pohrát. Z conkyrc už to jen volám, takže tam se nic nemění, tedy maximálně definice fontu.
      Kdyžtak pošli konkrétní popis chyb, se kterými se potýkáš, případně i někam nasdílej tvé conkyrc.

      Vymazat
    2. tady je mé conkyrc: https://copy.com/HD1EypgN8khm
      a dělá mi to to, že se ty barevné pruhy rozsypou a conky zabírá prostor nejen po spodek textu, ale až dolů ke spodní liště obrazovky... screen tady:https://copy.com/TtMClwPhhVQ8

      Vymazat
    3. Aby tvůj conkyrc fungoval na mé peci, přepsal jsem own_window_type na normal a snížil border_inner_margin na 5, ten způsobuje ten posun doleva. Jinak nevidím problém, ten bordel se u mě nekoná.
      Screenshot
      Takže teď honem nevím, jak ti pomoct... Zamyslím se ještě zítra.

      Vymazat
    4. Mohlo by být důvodem toho "rozsypání" to, že ve složce /media mám fstabem připojený disk, který má dlouhý název? Dlouhý znamená 16znaků... Protože když jej odpojím, vypadá vše normálně...

      Vymazat
    5. Já ty názvy ve skriptu osekávám na nějakých 6-7 znaků, v tom by to být neměl. Problém dělá nejčastěji nedostatečný text buffer, ale měl jsem dojem, že jsi nastavil na dost, navíc já mám těch filesystémů víc, než ty a fungovalo to. Případně pošli přesně ten název, já si to večer testnu.

      Vymazat
    6. Tak už jsem vše vyřešil :-) díky moc za nasměrování a za ten windowtype a margin ;-)

      Vymazat
    7. A v čem to teda přesně bylo?

      Vymazat
    8. Kupodivu pomohlo zvětšit délku toho jména ve skriptu a pak si trochu pohrát s posunutím samotného textu...

      Vymazat
    9. Hmm, zajímavé. Hlavně že to frčí :)

      Vymazat
  3. Váš conkyrc se mi líbí, stáhl jsem ho a spustil s ním conky. Ale zdá se mi, že se svým vzhledem liší od zobrazení ve Vašem článku. Jako by byl obsah ořezaný vpravo. Zkoušel jsem conkyrc nějak přizpůsobit, ale vzhledem k zatím skoro nulovým znalostem "zdrojáku" conky jsem neuspěl.
    Kdybyste mě zkusil navést k nějakému postupu, poděkoval bych.
    Zkouším přidat snímek:

    snímek

    OdpovědětVymazat
    Odpovědi
    1. Znovu zkusím snímek
      snímek

      Vymazat
    2. Nahoře je ten čas rozhozený, protože jsem experimentoval a zdroják neodpovídá přesně tomu, co mám na obrázku. Dělal jsem to na ne LTS verzi a jméno systému bylo tedy kratší a čas se vešel. Bude třeba to trochu přerovnat, kdyžtak později dodám svou aktuální verzi.

      Síť budete mít pravděpodobně na jiném rozhraní, podle toho, jaký používáte adaptér, wifi bude mít něco jako wlan0, pevnou můžete mít třeba na eth1, místo eth0. Na blogu mám i článek o tom, jak zobrazovat wifi/eth automaticky podle toho, co je připojené. Alespoň kompromisně. http://gdhnotes.blogspot.cz/2010/11/jak-zjistit-ktere-sitove-zarizeni-je.html
      Větráky a teploty je třeba číst podle konfigurace hw, jak se k hodnotám dostat jsem také sepsal: http://gdhnotes.blogspot.cz/2014/01/monitorovani-hw-senzoru-nejen-s-conky.html

      Pak je tam ještě problém s grafikou, evidentně nemáte AMD na proprietárním ovladači. Mám nějaké skripty i pro Nvidii, ale Intel jsem zatím neřešil, kdyžtak se na to můžem podívat.

      No a kurzy měn, tam vám asi chybí skript, který jsem sem koukám zapoměl dát... To napravím snad večer.

      Vymazat
    3. Ještě k teplotě disku, je třeba mít nainstalován a běžící hddtemp, případně ho naučit kde číst: http://gdhnotes.blogspot.cz/2014/04/jak-naucit-hddtemp-cist-teplotu-neznameho-disku.html

      Na šipečky v grafech sítě je třeba do systému přidat tento font:
      http://www.dafont.com/pizzadude-bullets.font

      Vymazat
    4. Děkuji za odpověď. Postupně se tím zkusím prokousat.
      Co se týče grafiky, mám procesor AMD A10-5700 s integrovanou grafikou Radeon HD 7660D. Ovladač je AMD/ATI display driver wrapper z xserver-xorg-video-ati.

      Vymazat
    5. Jestli se smím pochlubit, tak se mi konečně povedlo přizpůsobit Váš conkyrc ke svému prostředí.
      Snímek conky
      Soubor conkyrc
      Odstavec Graphics jsem tam nechal i když v něm nejsou údaje, protože to zatím neumím.
      Ještě jednou děkuji za pomoc.
      Kdybyste příležitostně zveřejnil ten prográmek pro Currencies, bylo by to příjemné.

      Vymazat
    6. On tu ten skript na měny už je v jednom z odkazovaných článků, ale přidal jsem ho i sem. Jinak dobrá práce, to postupně doladíte. Části, které nepotřebujete, zakomentujte #, nebo smažte. K orientaci ve skriptu opravdu hodně pomáhá mé rozšíření geditu, pokud jste ještě nezkusil, doporučuji (je mezi odkazovanými články), bez zvýraznění syntaxe je to čiré peklo.

      Vymazat
    7. Díky. Rozšíření geditu jsem instaloval, opravdu to pomáhá. Akorát pozoruji, že často nerozezná conky script, i když je v názvu souboru řetězec conkyrc, ale to je maličkost.
      Ještě mám jeden problém, ten se týká Conky Manageru. S tím bych prosil o pomoc později, musím si nejdřív promyslet, jak ho dokumentovat.

      Vymazat
    8. Kursy měn z odkazu "~/.conky/curencies.py - dodává kurzy..." (viz výše) mi nejde stáhnout. Stáhnul jsem ho z dřívějšího článku "Monitorování systému pomocí Conky ", ale v Conky mi kursy měn nefungují.

      Vymazat
    9. Chybička se vloudila. Nastavil jste příznak pro spouštění ve vlastnostech currencies.py?

      Vymazat
    10. I u mě se vloudila - teď, když jste mě nakopnul k příznaku, už to funguje. Ach jo...

      Vymazat
    11. Tím ach jo jsem myslel ach jo, ta moje hlava ,,, tupá.

      Vymazat
    12. To si tak neberte, to chce prostě praxi :)

      Vymazat
  4. Po nějaké době jsem se opět vrátil ke svému dříve psanému conky a nedaří se mi rozběhat "removable drives". Zde umístěný skript jsem si trochu poupravil (viz.: http://pastebin.com/Gq8t8Z8S), ale korektně mi zobrazuje pouze externí disk, s flash disky se mu nechce pracovat->prostě je nevypíše :-( Nevíte co s tím mám?

    OdpovědětVymazat
    Odpovědi
    1. Pokud jste tam nechal cestu /media/user a nemáte uživatele user, tak je to jasné, tam musí být jméno vašeho uživatele. Pravdou je, že by bylo lepší, aby si to skript zjistil sám, pod kterým uživatelem běží, třeba to tam někdy dopíšu.

      Vymazat
    2. Místo "user" mám konkrétního uživatele :-) Zjistil jsem právě, že pokud je k pc připojena jen jeden flash disk, tak vypisuje právě tento, pokud připojím ještě navíc externí disk, tak vypíše ten externí a od flash disku pouze název, to samé pokud zapojím dva flash disky...

      Vymazat
    3. Já jsem si říkal, když jsem si to přečetl ještě jednou, že to musí být o něčem jiném :) Pokud se zobrazuje jen část, tak by to mohlo být malým text bufferem, ten je možné nastavit proměnnou text_buffer_size. Já mám 16384, ale mělo by stačit i méně.

      Vymazat
    4. To bylo přesně ono... Velmi děkuji za pomoc.

      Vymazat
    5. Není zač. Já jsem sice napsal "i méně", ale pravdou je, že je to dost vysoká hodnota, výchozí je 256 a v manuálu se píše, že zvýšení může drasticky snížit výkon Conky. To jen pro upozornění, já s tou hodnotou každopádně problém nemám a hlavně nemusím každou chvíli řešit, že se něco nevejde.

      Vymazat

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.