Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Pipe-menu v Openboxu

Pipe... co to? Pipe-menu! Pokud jste to nikdy neslyšeli, pak vězte, že je to menu, které vznikne "on the fly" jako výstup skriptu, právě v okamžiku, kdy dané menu rozbalíte. V okenním manažeru najde velmi široké uplatnění. Dnes se na ně podíváme a zkusíme si rovnou jedno takové drobné demonstrační napsat.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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:

davame_internetu_obsah
       
<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.

Odkazy

Jakub Šťastný

Jakub Šťastný

Jakub Šťastný byl v letech 2007 až 2008 redaktorem serveru Root.cz. Mezi jeho zájmy patří Linux, programování a typografický systém TeX.

Školení: Linux – Zálohování, Vysoká dostupnost, SNMP dohled

Na třídenním školení se naučíte nainstalovat a spravovat systém zálohování, replikace dat a vysoké dostupnosti dat. Dále také pracovat s RAID a LVM poli a nainstalovat a spravovat si vlastní dohledový systém.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,83

Přehled názorů

Co proti bash-i?
J. 22. 1. 2007 07:00
Nový
├ 
Re: Co proti bash-i?
Zdenek 22. 1. 2007 07:46
Nový
│
├ 
Re: Co proti bash-i?
Tayto 22. 1. 2007 10:42
Nový
│
│
└ 
Re: Co proti bash-i?
hello world 22. 1. 2007 19:31
Nový
│
│
 
└ 
Re: Co proti bash-i?
miroušek 22. 1. 2007 20:28
Nový
│
└ 
Re: Co proti bash-i?
LesTR 22. 1. 2007 14:47
Nový
│
 
├ 
Re: Co proti bash-i?
Jakub Hegenbart 23. 1. 2007 03:32
Nový
│
 
├ 
Re: Co proti bash-i?
Martin Lebeda 23. 1. 2007 13:39
Nový
│
 
└ 
Re: Co proti bash-i?
anonymní uživatel 23. 1. 2007 20:40
Nový
│
 
 
└ 
Re: Co proti bash-i?
Jakub Hegenbart 23. 2. 2007 19:10
Nový
├ 
Re: Co proti bash-i?
wake 22. 1. 2007 08:03
Nový
└ 
Re: Co proti bash-i?
Jakub Šťastný 22. 1. 2007 14:43
Nový
 
└ 
Re: Co proti bash-i?
J. 22. 1. 2007 15:36
Nový
Bash
Honza 22. 1. 2007 09:01
Nový
├ 
Re: Bash
Dusan Halicky 22. 1. 2007 09:08
Nový
│
└ 
Re: Bash
petr 22. 1. 2007 09:17
Nový
│
 
└ 
Re: Bash
Zero 22. 1. 2007 10:49
Nový
│
 
 
└ 
Re: Bash
Zero 22. 1. 2007 10:52
Nový
│
 
 
 
└ 
Re: Bash
petr 22. 1. 2007 11:22
Nový
│
 
 
 
 
└ 
Re: Bash
hello world 22. 1. 2007 19:33
Nový
│
 
 
 
 
 
└ 
Re: Bash
petr 22. 1. 2007 20:24
Nový
├ 
Re: Bash
Honza 22. 1. 2007 10:40
Nový
├ 
Re: Bash
Jakub Šťastný 22. 1. 2007 14:49
Nový
│
└ 
Re: Bash
Honza 22. 1. 2007 21:07
Nový
├ 
Re: Bash
miroušek 22. 1. 2007 20:31
Nový
└ 
Re: Bash
Indigo 26. 10. 2007 13:06
Nový
...
... 22. 1. 2007 13:36
Nový
├ 
Re: ...
ja 22. 1. 2007 13:42
Nový
│
└ 
Re: ...
Franta 22. 1. 2007 17:04
Nový
│
 
└ 
Re: ...
ja 22. 1. 2007 19:20
Nový
│
 
 
└ 
Re: ...
miroušek 22. 1. 2007 20:35
Nový
├ 
Re: ...
... 23. 1. 2007 09:55
Nový
└ 
Re: ...
petr 23. 1. 2007 15:47
Nový
File.open
disorder 22. 1. 2007 15:41
Nový
└ 
Re: File.open
disorder 22. 1. 2007 15:45
Nový
 
└ 
Re: File.open
anonymní uživatel 22. 1. 2007 22:07
Nový
Co proti Céčku?
Franta 22. 1. 2007 17:10
Nový
├ 
Re: Co proti Céčku?
miroušek 22. 1. 2007 20:37
Nový
├ 
Re: Co proti Céčku?
BLEK. 22. 1. 2007 20:39
Nový
│
├ 
Re: Co proti Céčku?
anonymní uživatel 22. 1. 2007 20:40
Nový
│
├ 
Re: Co proti Céčku?
petr 22. 1. 2007 22:12
Nový
│
│
└ 
Re: Co proti Céčku?
anonymní uživatel 23. 1. 2007 20:01
Nový
│
│
 
└ 
Re: Co proti Céčku?
petr 23. 1. 2007 20:56
Nový
│
└ 
Re: Co proti Céčku?
Iggy 22. 1. 2007 22:15
Nový
└ 
Re: Co proti Céčku?
anonymní uživatel 22. 1. 2007 22:09
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem