Archive for Wrzesień 2008

PrzegladarkaFolderow i SzybkiDostep – funkcje funkcje..
4 września, 2008

Nowy rok szkolny zaczął się parę dni temu, a wraz z nim pojawiły się w moim configu dwie nowe funkcje. Nazwy w tytule, mogą wydawać się trochę dziwne (polskie?), ale po dłuższym zastanowieniu wydaje mi się, że tak będzie łatwiej znajdywać je i odwołania do nich w gąszczu tych wszystkich linii kodu. Przejdźmy do pierwszej.

PrzegladarkaFolderow jest to skrypt generujący menu z nazw katalogów znajdujących się w danym katalogu. Jest to rekurencyjne, więc służy jako przeglądarka folderów, gdy celem moim jest szybkie dostanie się do jakiegoś folderu i uruchomienie w nim terminala czy thunara. Chciałem do tego użyć specjalnie do tego przygotowanego skryptu perla fvwm-menu-directory, ale niestety sam, ani nikt na fvwm.lair.be nie umiał sprawić, by wyświetlały się jedynie foldery. Po za tym skrypt ten jest dość toporny i nie jest rozwijany (bądź rozwijany jest w tempie podobnym do samego FVWM:). Wobec tego zastosowałem niewielki skrypt explorer.sh autorstwa Arsena, z nieistniejącego już blogu arsen.gentoo.pl. Poniżej jego kod:


#!/bin/bash
if [[ -n $1 && -d $1 ]]
then
echo DestroyMenu recreate $1
echo AddToMenu $1
echo + DynamicPopDownAction DestroyMenu $1
echo + MissingSubmenuFunction PrzegladarkaFolderow
echo + \"Otworz terminal%ikony/terminal.png%\" Exec exec ~/.fvwm/skrypty/urxvt.sh $1
echo + \"Thunar%ikony/thunar.png%\" Exec exec thunar $1

echo + \"\" Nop
for i in ${1}/*
do \
if [[ -d "${i}" ]]
then
echo + \"$(basename "${i}")%ikony/folder.png%\" Popup "${i}"
continue
fi
done
fi

Miałem pewne problemy z tym, by działało uruchamianie mojego ulubionego terminala urxvt, ale jak widać z powyższego kodu, poradziłem sobie dość okrężną metodą. Kod pliku urxvt.sh:


#!/bin/bash
cd $1 ; urxvt

Pozostaje jeszcze stworzenie odpowiedniej funkcji w configach i odniesienia do niej w menu:


DestroyFunc PrzegladarkaFolderow
AddToFunc PrzegladarkaFolderow
+ I PipeRead `$[FVWM_USERDIR]/skrypty/explorer.sh $0`

i samo menu

DestroyMenu MenuPrzegladarka
AddToMenu MenuPrzegladarka
+ MissingSubmenuFunction PrzegladarkaFolderow
+ "bookmarks%ikony/harddisk.png%" Popup /

Korzystanie z funkcji PrzegladarkaFolderow, moze i fajne, ale po jakimś czasie konieczne jest zmienianie w configu folderów, do których chcemy mieć szybki dostęp. Z kolei thunar i duża część aplikacji gtk posiada coś takiego jak Ulubione. Nie wiem dokładnie jak to nazwać – poniżej screenshot:

Free Image Hosting at www.ImageShack.us

Pomyślałem – fajnym pomysłem byłoby stworzenie menu z tymi katalogami do których miałbym szybki dostęp za pomocą tamtej funkcji. Tak powstała kolejna funkcja, tym razem całkowicie napisana przeze mnie. Tutaj jej kod:


DestroyFunc SzybkiDostep
AddToFunc SzybkiDostep
+ I DestroyMenu recreate bookmarks
+ I AddToMenu bookmarks "...::Miejsca::..." Title Top
+ I + DynamicPopDownAction DestroyMenu bookmarks
+ I PipeRead `$[FVWM_USERDIR]/skrypty/bookmarks.sh`

I kod samego pliku bookmarks.sh:


#!/bin/bash
echo + "%ikony/folder_home.png%Home" Exec exec thunar ~
for i in $(cat ~/.gtk-bookmarks | grep file | cut -b 8-); do
export folder=`basename $i`
echo + \"$folder%ikony/folder.png%\" Exec exec thunar "${i}"
done;

echo + ""
echo + ""

echo + MissingSubmenuFunction PrzegladarkaFolderow
echo + "%ikony/folder_home.png%Home" Popup ~
for i in $(cat ~/.gtk-bookmarks | grep file | cut -b 8-); do
export folder=`basename $i`
echo + \"$folder%ikony/folder.png%\" Popup "${i}"
done;

Odrobina wyjaśnienia dla tych mniej kumatych:

Bookmarks.sh odczytuje zawartość pliku ~/.gtk-bookmarks, w którym są zapisane nasze zakładki. W pierwszej części skryptu tworzy z elementów tego pliku listę. Po kliknięciu na któryś z nich, otworzy się thunar w danym katalogu. Poniżej wyświetlane są dwa seperatory, a po nich ta sama lista, tyle że po najechaniu na któryś z jej elementów tworzą się podmenu za pomocą funkcji PrzegladarkaFolderow.

Mam nadzieje, że mój bełkot jest choć w części zrozumiały dla Was:)

Dobra, ale ktoś spyta: po co dwa razy ta sama lista? Z wygody. Rzeczą, którą robiłem najczęściej było otwieranie thunara w danym katalogu, no więc czemu nie zrobić, by ta czynność była szybsza? Jak to się sprawdzi na dłuższą metę – zobaczymy. Menu to podpinam do lewego przycisku myszy za pomocą funkcji:


AddToFunc Bookmarks
+ I SzybkiDostep
+ I Menu bookmarks

i wpisu


Mouse 1 R A Bookmarks

I to by było na tyle. Jeszcze screenshoty:

Free Image Hosting at www.ImageShack.us

Free Image Hosting at www.ImageShack.us

Prawda, że fajne to?:)