K čemu to je dobré? No, fantazii se meze nekladou, já to používám například na:
- změnu pozadí
- záložky Firefoxu
- záložky Thunaru (Nautilu)
- killnutí nejvíce vytěžujících aplikací (CPU, RAM)
- rychlý přístup k TODO souborům
- rychlý přístup k dokumentaci (v
/usr/share/doc
)
Kde je získat
Po internetu se nějaká toulají. Mohlo by jich sice být víc, ale když se hledá, najde se ledacos. Některé zajímavé odkazy jsou pod článkem.
Mám v úmyslu dát k dispozici má pipe-menu (ono ohlášené překvapení), ale bohužel vůbec nebyl čas je dopsat, takže je dodám v pozdějších dílech seriálu.
Jak je psát
Pište si je jak chcete, ale pokud chcete, aby vám to chodilo, mělo by to mít zhruba takovýto výstup:
<openbox_pipe_menu> <menu id="jedinecny_identifikator" label="Linux"> <item label="Root"> <action name="execute"> <execute>firefox www.root.cz</execute> </action> </item> <item label="Slashdot"> <action name="execute"> <execute>firefox www.slashdot.org</execute> </action> </item> </menu> <menu id="jedinecny_identifikator_II" label="Ruby"> <item label="The Pragmatic Programmers"> <action name="execute"> <execute>firefox www.ruby-doc.org/docs/ProgrammingRuby</execute> </action> </item> (...) </menu> </openbox_pipe_menu>
Jdeme na to
Asi není tak úplně nejlepší psát je hned v Céčku, Fortranu nebo assembleru, nejideálnější bude sáhnout po něčem jako je Ruby, Python a podobně. Kdyby to náhodou (nedej Tuxi!) někoho napadlo – rozhodně ne bash
, tyhle skripty už jsou nad jeho schopnosti.
Ale abych tu o nich jen nežvanil, zkusíme si rovnou jedno drobné napsat. A použijeme třeba Ruby. Budou to záložky Nautilu, Thunaru a podobných GTK filemanagerů.
Jediné, co potřebujeme vědět, že záložky jsou uloženy v souboru ~/.gtk-bookmarks
. Tedy samozřejmě pokud jste si nějaké vytvořili.
#!/usr/bin/env ruby # Vyberte filemanager. # Nautilus je nutné spouštět s volbou --no-desktop, # jinak vám nastaví plochu z Gnome, což má mj. za následek, # že se vůbec nedostanete k menu (nemáte-li ho namapované # na nějaké klávesové zkratce) a budete muset nautilus killnout. program = "thunar" #program = "nautilus --no-desktop" # otevření souboru se záložkami # (ENV je hash proměnných prostředí, jako je třeba HOME nebo CFLAGS) gtk_file = File.open("#{ENV['HOME']}/.gtk-bookmarks", "r") # tag počátku pipe-menu puts "<openbox_pipe_menu>" # Cyklus prolézá řádky souboru, vytahuje data # a tiskne je na STDIN v námi zadané podobě # Totéž dosáhneme zápisem "for line in gtk_file", # nicméně v Ruby se zpravidla dává přednost zápisu # metody each nebo jí podobných - inu Ruby # je prostě vyloženě objektový jazyk. gtk_file.each do |line| line.chomp! # odstranění znaku konce řádku label = line.sub(/\w+:\/{2}/, '') # název bude bez "file://" na počátku # jeden z možných zápisů stringu, ve kterém # mají být interpretovány escape sekvence # a vyhodnocovány kusy kódu v #{} puts %Q{ <item label="#{label}"> <action name="Execute"> <execute>#{program} #{line}</execute> </action> </item> } end # ukončovací tag puts "</openbox_pipe_menu>"
Menu máme. Kromě uložení není od věci dát mu právo spuštění ( chmod +x gtk_menu.rb
). Teď už stačí pouze zapsat do souboru menu.xml
:
<menu execute="~/.config/openbox/gtk_menu.rb" id="gtk" label="GTK záložky"/>
Poslední věc, kterou je třeba udělat, je zavolání openboxové akce reconfigure
(pravděpodobně máte v menu) a je hotovo. Jednoduché, že?
Příště
Původně jsem se chtěl věnovat jenom Openboxu jako samostatnému prostředí, ale protože Openbox můžete používat jako správce oken místo Metacity nebo KWin v Gnome či KDE, určitě toto téma aspoň naťuknu.