abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:44 | Pozvánky

    Sníh roztál a roztávají i bastlíři. Žene se na nás celá řada konferencí a seminářů technického rázu. Zajímá vás, jaké? Pak se připojte k 60. Virtuální Bastlírně, tedy k veřejné diskuzi bastlířů, techniků, učitelů i vědců. Jako vždy přijde na přetřes spousta novinek ze světa hardwaru, softwaru i bizáru. Na začátek lze očekávat hardwarová témata, tedy například nový KiCAD 10, nové akcelerátory LLM s nízkou spotřebou, nejvíce fosforeskující

    … více »
    bkralik | Komentářů: 0
    dnes 11:22 | Zajímavý článek

    IuRe (Iuridicum Remedium) v rámci programu Digitální svobody zveřejnila analýzu dopadů a efektivity systémů ověřování věku v digitálním prostoru, která srovnává implementace ověřování věku v Austrálii, Velké Británii a Evropské unii.

    |🇵🇸 | Komentářů: 0
    dnes 04:22 | Nová verze

    Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.3 (𝕏, Mastodon). Přehled novinek a vylepšení v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 03:55 | Nová verze

    Byla vydána nová verze 14.4 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 4
    včera 23:22 | Nová verze

    Databáze DuckDB (Wikipedie) byla vydána ve verzi 1.5.0. S kódovým názvem Variegata (husice rajská). Přináší řadu vylepšení, včetně nového ergonomičtějšího CLI klienta nebo podporu pro typ VARIANT a vestavěný typ GEOMETRY.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Zajímavý software

    V pátek 6. a sobotu 7. března proběhl v pražském sídle Nejvyššího kontrolního úřadu (NKÚ) Hackathon veřejné správy 7.1. Publikovány byly vytvořené aplikace. V kategorii projektů rozvíjených z krajského kola zvítězil tým „Mackokládi“. Čtyři středoškoláci ze Dvora Králové uspěli s aplikací KompaZ. Jde o digitálního průvodce, který pomůže s rychlou a srozumitelnou orientací v životních i krizových situacích „krok za krokem“. Aplikace

    … více »
    Ladislav Hagara | Komentářů: 5
    včera 13:33 | Nová verze

    QGIS, svobodný desktopový GIS, byl vydán v nové hlavní verzi 4.0. Změny zahrnují několik nových analytických a editačních funkcí, rozšíření podpory 3D, více možností úprav uživatelského rozhraní či mnoho dalších zlepšení použitelnosti. Řada 3.44 má aktualizace plánovány do září.

    |🇵🇸 | Komentářů: 0
    včera 05:11 | Komunita

    Dan Blanchard vydal knihovnu pro Python chardet v nové verzi 7.0.0. S novou verzí byla knihovna přelicencována z LGPL na MIT. Souhlasili s tím všichni přispěvatelé? Dan Blanchard souhlasy vůbec neřešil. Zaúkoloval umělou inteligenci (Claude), aby knihovnu zcela přepsala a výslovně jí nařídil, aby nepoužila žádný LGPL kód. Dan Blanchard tvrdí, že se jedná o clean room design. Protistrana argumentuje, že umělá inteligence byla trénována

    … více »
    Ladislav Hagara | Komentářů: 17
    8.3. 18:44 | Komunita

    Andy Nguyen si na svou herní konzoli PlayStation 5 (PS5) pomocí exploitu Byepervisor nainstaloval Linux (Ubuntu). V Linuxu si spustil Steam a PS5 tak proměnil v Steam Machine. Na PS5 může hrát hry, které jsou vydané pouze pro PC a jsou na Steamu [Tom's Hardware].

    Ladislav Hagara | Komentářů: 12
    8.3. 12:22 | Nová verze

    Správce sbírky fotografií digiKam byl vydán ve verzi 9.0.0. Jedná se o větší vydání provázené aktualizacemi knihoven. Mnoho dílčích změn se vedle oprav chyb týká uživatelského rozhraní, mj. editace metadat.

    |🇵🇸 | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (2%)
     (13%)
     (25%)
    Celkem 1045 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Openboxové pipe-menu, znáte ?

    12.11.2006 17:23 | Přečteno: 2558× | GNU/Linux | poslední úprava: 12.12.2006 20:43

    Správce oken OpenBox má jednu moc fajn fičůrku, jmenuje se pipe-menu, zprvu jsem jí nevěnoval pozornost, později se nad ní rozplýval blahem Botanicus na ubuntu@chat.linjab.net , tak jsem začal zjišťovat co že to umí, a ono to umí :-)

    Je to vlastně úplně jednoduché, je to dynamicky generované menu, tedy položka menu je generovaná jako výstup z nějakého skriptu, je jedno jestli Python, Ruby nebo cokoli ... důležitý je správně naformátovaný výstup, potom se dá vykouzlit teba 5 nejvíce RAM-žeroucích procesů s možností killu po kliknutí, nebo měnič pozadí který zobrazuje výpis souborů z určené složky, nebo udělátko které vypíše .iso soubory ze složky, a po kliknutí jej připojí, právě toto jsem řešil já.
    Skript jsem psal v Pythonu, konečně jsem se rozhoupal a začal něco tvořit, pořád jenom čučím na cizí skripty, nebo louskám PyGTK tutoriál, ale k psaní jsem se nějak neměl. Skriptík je to pravda jedoduchý, ale i přesto jsem s ní měl problémy, naštěstí hodní lidé na fóru pomohli, stejně tak na Ubuntu konfeře se mi pomoci dostalo.

    Takže, obecně platí, do menu.xml se musí fláknout toto:

    <menu id="ID" label="TITLE" execute="COMMAND" />
    
    Přičemž COMMAND je právě onen příkaz, který spustí náš skript a zajistí výstup do menu. label je popisek menu.
    No a ten onen výstup, musí vypadat takto:
    <openbox_pipe_menu>
      <item label="LABEL">
        ACTIONS
      </item>
    </openbox_pipe_menu>
    
    LABEL je popisek položky, ACTIONS je akce, která se provede po kliku na položku, je to kapitolka sama pro sebe.
    Možných ACTIONS je docela dost, obecně to vypadá takto:
    <action name="NAME">PARAMETERS</action>
    
    A prakticky, například když chceme po kliku spustit příkaz :
    <action name="Execute"><execute>xterm</execute></action>
    
    O dalších ACTIONS se dočtete tady

    Teorie hezká že, můj výtvor vypadá zhruba takto :
    #!/usr/bin/python
    ## STIBIHO MOUNTOVATKO PRO OPENBOX - PIPE MENU
    ## VERZE 1.0
    
    import os,re
    
    class Mountovatko:
    
      def __init__(self):
        def vypis():
          regexp = re.compile("([a-zA-Z0-9_]+).(iso)")
          pole_out = []
          for prvek in os.listdir("/home/stibi/ISOimage/"):
            if regexp.search(prvek) is not None:
              pole_out.append(prvek)
          return pole_out
        
        polozka = vypis()
    
        def menu():
          print "<openbox_pipe_menu>"
          for x in range(len(polozka)):
            print '<item label='+'"'+polozka[x]+'"'+'>' 
            print '<action name='+'"'+'Execute'+'"'+'>'
            print '<execute>'
            print 'gksu'+' "'+'mount -t iso9660 -o loop /home/stibi/ISOimage/'+ polozka[x]+' /mnt/dvd/'+'"'
            print '</execute>'
            print '</action>'
            print '</item>'
            print "</openbox_pipe_menu>"
    
        menu()
    
    if __name__ == "__main__":
        mount = Mountovatko()
    

    No, Jsem na něj pyšný :-) Projede zadaný adresář a do menu vyplivne jenom .iso soubory. Nejlepší by bylo, kdyby se testoval typ souboru, to už mám v ToDo do další verze.
    Je mi jasné, že to má hromadu chyb, rád se z kritiky přiučím, třeba 8x print v tom cyklu je asi hodně šílenost, musím to pak upravit, je to provizorně, v jednom printu se to dost blbě ladilo.
    Absolutní cesty ve skriptu taky nejsou úplně ončo, to je další věc kterou budu dál řešit.
    Myslel jsem si, že když připojím .iso soubor, tak před připojením jiného musím ten připojený odpojit, ale ne, odpojí se sám, to jsem se docela divil, žádný program na automatické připojování mechanik či souborů u mě nebeží, takže určitě záleží na nastavení....
    Budu si s tím hrát dál, jsme rád že jsem s Pythonem začal, moc mě to baví, minimálně chci dopsat zvýraznění souboru který je zrovna připojený, velikost souborů... no, je co dělat :)

    Takže tak no, snad si netrhnu moc ostudu :)

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    12.11.2006 17:46 Boris Dušek | skóre: 22 | blog: everything
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    for x in range(len(polozka)):
    Pokud dojde k přejmenování polozka-->polozky, tak se to da napsat prehledneji:
    for polozka in polozky:
    ...
    vim ~/.emacs
    12.11.2006 17:50 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    Myslel jsem si, že když připojím .iso soubor, tak před připojením jiného musím ten připojený odpojit, ale ne, odpojí se sám, to jsem se docela divil, žádný program na automatické připojování mechanik či souborů u mě nebeží, takže určitě záleží na nastavení....
    Nemountuješ spíše ty isa přes sebe?
    Martin Stiborský avatar 12.11.2006 17:52 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    To jsem taky zjišťoval, a ne .. ale, ale všechny ty isa které jsem připojoval jsou dvd filmy, mají stejnou strukturu adresářů, takže možná se přepíšou, nevím ..
    Kvík ..
    Josef Kufner avatar 12.11.2006 18:02 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    tak tam přihoď
    if mount | grep " on $adresar "
      then umount "$adresar" && mount "$novej_soubor"
      else mount "$novej_soubor"
    fi
    a máš to :)
    Hello world ! Segmentation fault (core dumped)
    Martin Stiborský avatar 12.11.2006 18:04 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    Něco podobného jsem zkoušel ...
    Kvík ..
    12.11.2006 20:12 br
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    jj a mňam a jsem s díky za další návrh :)
    Martin Stiborský avatar 12.11.2006 20:18 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    tyyy jo, tyhle jsem nenašel .. hmmm
    Kvík ..
    12.11.2006 20:57 rajcze | skóre: 6 | blog: rajcze | kus od Brna
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    ahoj :),
    k tomu filtrovani podle pripony iso - ten regexp nedela to co si asi myslis. Kdyz to pouzivas se search, tak si musis uvedomit ze to opravdu vyhledava v tom retezci - tzn pokud ve vstupnim retezci najde posloupnost aspon jednoho malyho pismena a/nebo velkyho pismena a/nebo cislisce a/nebo podtrzitka, jednoho jakehokoli znaku a posloupnosti znaku iso, vyhledani vrati "True" hodnotu. Dopad muze byt treba takovy: existuje soubor ktery se jmenuje imgiso1.jpg, ktery regexpu vyhovi. takze bud navrhuju tohle:
    def vypis():
      regexp = re.compile("\.iso$") # na konci retezce je posloupnost znaku .iso
      return filter(regexp.search, os.listdir("/home/stibi/ISOimage/"))
    
    nebo uplne bez regexpu:
    def vypis():
      path="/home/stibi/ISOimage/"
      return filter(lambda f:os.path.splitext(f)[1].lower()=='.iso', os.listdir(path))
    
    pripadne pokud bys jeste chtel kontrolovat jestli zakerny uzivatel nevytvoril adresar ktery se jmenuje "cokoli.iso" tak:
    def vypis():
      path="/home/stibi/ISOimage/"
      return filter(lambda f: os.path.isfile(path+f) && os.path.splitext(f)[1].lower()=='.iso', os.listdir(path))
    

    tak sem si zas trochu zarypal, snad nejsem moc zlej :)
    Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
    12.11.2006 21:00 rajcze | skóre: 6 | blog: rajcze | kus od Brna
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    a kdyz uz sem v tom rypani, tak nested precedures sou slovy klasika "zla, zla, nepekna vec"
    Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
    Martin Stiborský avatar 12.11.2006 21:01 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    ou, co že to ?
    Kvík ..
    12.11.2006 21:13 rajcze | skóre: 6 | blog: rajcze | kus od Brna
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    eh promin, cesky ekvivalent je asi vnorene procedury - konkretne ze:
    ....
      def main(self):
        def vypis():
        def menu():
    ...
    
    je zverstvo :) (bez urazky).
    zrovna v tomhle pripade je to myslim i celkem zbytecny - vzhledem ktomu ze kod nepouzivas vickrat, tak proc to nenapsat jako obsah metody __init__?
    class Mountovatko:
    
      def __init__(self):
        path="/home/stibi/ISOimage/"
        polozky=filter(lambda f: os.path.isfile(path+f) && os.path.splitext(f)[1].lower()=='.iso', os.listdir(path))
    
        print "<openbox_pipe_menu>"
        for polozka in polozky:
            print '<item label='+'"'+polozka+'"'+'>' 
            print '<action name='+'"'+'Execute'+'"'+'>'
            print '<execute>'
            print 'gksu'+' "'+'mount -t iso9660 -o loop /home/stibi/ISOimage/'+ polozka +' /mnt/dvd/'+'"'
            print '</execute>'
            print '</action>'
            print '</item>'
        print "</openbox_pipe_menu>" #tenhle radek mas v originale ve for cyklu - asi chyba odsazeni, nebo sem to nepochopil :)
    
    Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
    Martin Stiborský avatar 12.11.2006 21:16 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    Beru na vědomí, ale možná jsem na dobré cestě... říkal jsem si proč to tak je...
    Kvík ..
    12.11.2006 21:19 rajcze | skóre: 6 | blog: rajcze | kus od Brna
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    promin, asi sem myslel na veceri, tohle
    ....
      def main(self):
        def vypis():
        def menu():
    ...
    
    ma byt samozrejme
    ....
      def __init__(self):
        def vypis():
        def menu():
    ...
    
    Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
    Martin Stiborský avatar 12.11.2006 21:24 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    já to pochopil :)
    Kvík ..
    12.11.2006 21:33 rajcze | skóre: 6 | blog: rajcze | kus od Brna
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    no doubt :), kazdopadne jestli neznas tak doporucuju py.cz, hlavne teda mailing list - ale to uz urcite najdes sam :) kdyz budes chtit s necim poradit, radi odpovime :)
    Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
    Martin Stiborský avatar 12.11.2006 21:01 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?

    jej :)
    No, tak to se mám ještě co učit :) JInak díky, mám v tom jasno trošičku víc :) S regulárními výrazy se člověk nenudí... hmm, že bych si to dal do patičky ... :) To je hláška jak z laTrine (kdo zná ... )

    Kvík ..
    12.11.2006 22:14 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    Znám, akorát to nepoužívám v openboxu, ale v PekWM (a teď se můžeme pohádat, který je lepší ;-)).
    θηριον ειμι
    Martin Stiborský avatar 12.11.2006 22:44 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    A já bych tak rád .. ale PekWM neznám :(
    Kvík ..
    David Watzke avatar 13.11.2006 05:16 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    PekWM je miniaturní WM, kterej se _hodně_ rychle zkompiluje, takže je vhodný použít ho ve chvíli, kdy si omylem smažeš KDE, tak jako jsem to nedávno udělal já :-D
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    13.11.2006 12:01 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    PekWM je tak male a rychle, ze se nejen rychle kompiluje, ale i rychle startuje a bezi s minimalnimi naroky na RAM, takze se hodi i na beznou praci, kdyz cloveka nebavi cekat 3 minuty nez nabehne KDE :-D
    θηριον ειμι
    12.12.2006 20:39 Botanicus2 | skóre: 2 | blog: Vyber_distra
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    Hehe, jen technicka: RoR == Ruby on Rails, to je ten webovy framework (rulez) jedouci na Ruby. Ruby je programovaci jazyk (taky rulez), tak jen...neplest to dokupy ;) Botanicus
    Martin Stiborský avatar 12.12.2006 20:48 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
    Rozbalit Rozbalit vše Re: Openboxové pipe-menu, znáte ?
    chybička se vloudila .. ok.. opraveno
    Kvík ..

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.