Openbox pipemenu – wylistowanie partycji

Ta, nie tak dawno zajmowałem się Fluxboksem, teraz bawię się Openboksem. Zainteresowała mnie ostatnio ciekawa właściwość menu w Openboksie – tzw. “pipemenu”, czyli krótko pisząc: menu generowane przez jakiś zewnętrzny skrypt, program etc. – wystarczy, że wyrzuci wyniki na standardowym wyjściu. Postanowiłem skorzystać z tej opcji, zamiast pieczołowicie tworzyć menu (i później je modyfikować) zawierające spis partycji w moim systemie. Oto moje rozwiązanie (w bashu):

#!/bin/bash

echo ""
echo ""

for x in `ls /media/`
do
        if test ! -h "/media/$x"
        then
                echo ""
                echo -e "\t"
                echo -e "\t\t"
                echo -e "\t\t\tthunar \"/media/$x\""
                echo -e "\t\t"
                echo -e "\t"
                echo ""
        fi
done

echo ""

Rozwiązanie bardzo proste – słowo wyjaśnia: lecimy po wszystkich plikach w katalogu /media, czyli partycjach zamontowanych wraz ze startem systemu (przynajmniej w Ubuntu). “If” w środku sprawdza, czy nie mamy do czynienia z linkiem symbolicznym (dzięki temu nie wyjdą nam 2 dyskietki (ma ktoś jeszcze?:), lub – moim przypadku – 3 cdromy).

Jak używać? wstawiamy do pliku menu:


.config/openbox/menu.xml

taki mniej więcej zapis:


<menu id="menu-partycje" label="Partycje" execute="[ścieżka do skryptu]" />

Powinno już zadziałać, zawsze można też uruchomić ten skrypt – przydatne dla testów. Pozdrawiam.