WindowMaker

Mam małego i niezbyt wydajnego laptopa „podróżnego”. Zabieram go prawie wszędzie i jeśli ktoś ukradnie, to mi nie szkoda. Partycje są zaszyfrowane i nie dałem za niego wiele pieniędzy. Co prawda Gnome działa na nim całkiem nieźle, ale pomyślałem, że pora na coś bardziej wyszukanego. Zwłaszcza, że jest tam Fedora Rawhide i aktualizacje zepsuły mi niedawno GDM na tyle, że Gnome przestał działać. 🙂 Wybór padł na jedne z moich ulubionych okienek: WindowMaker. Tak, to ten, który wygląda jak pulpit NeXTstation, albo Workbech Amigi, który swoją drogą też mi się podoba.

Żeby doprowadzić lekki pulpit do stanu używalności, trzeba chwilę nad nim spędzić. Konfiguracja WindowMakera zawarta jest w katalogu ~/GNUstep, można trochę też poustawiać rozbudowanym kreatorkiem. Osobiście wolę, kiedy wszystko jest w kilku prostych plikach konfiguracyjnych, jak w IceWM, albo Fluxboksie, ale trudno.

Dosyć ważne jest dla mnie szybkie włącznie i wyłączanie wifi oraz jasność ekranu. Mam więc skróty w bashrc:

# jasnosc ekranu
alias jasnosc='sudo /usr/local/bin/jasnienie'

# wifi
alias wifion='nmcli radio wifi on'
alias wifioff='nmcli radio wifi off'

# wylaczanie
alias wylaczanie='xterm -e /usr/local/bin/wylaczanie_dialog'

# przyspieszenie klawiatury
xset r rate 180 60

Jak to zazwyczaj w bashrc jest tutaj mały bałagan, więc po kolei. Jaśnienie jest niewielkim skryptem, ale pomagam sobie faktem, że przy sudo nie muszę wpisywać swojego hasła:

#!/usr/bin/bash

echo -n "Jest: "
cat /sys/class/backlight/radeon_bl0/brightness
echo -n "Ustaw na: "
read bright
sudo echo "$bright" > /sys/class/backlight/radeon_bl0/brightness
echo " "

W pliku brightness zapisana jest liczba pomiędzy 1 i 255 (albo 0 i 254, zapomniałem teraz), która odpowiada za jasność ekranu. Można więc bardzo precyzyjnie dostosować jasność do oświetlenia w autobusie, nie zużywając niepotrzebnie baterii. Wieczorem i w nocy można sobie pomóc ograniczając ilość niebieskiej barwy na ekranie:

xgamma -bgamma 0.8

Aliasy wifi odwołują się do nmcli, czyli narzędzia NetworkManagera, które coraz bardziej lubię. Co prawda dodawania nowej sieci to polecenie na dwie linijki, ale dorobię sobie kiedyś ułatwiacze w dialogu. wylaczanie_dialog to bardzo prosty mechanizm naśladujący gnomowe odliczanie do wyłączenia komputera:

#!/usr/bin/bash

echo " "
echo " W Y L A C Z A N I E   Z A   1 0   S E K U N D ."
echo " Nacisnij ctrl+c, zeby przerwac."
sleep 5

echo " "

echo " W Y L A C Z A N I E   Z A     5   S E K U N D ."
echo " Nacisnij ctrl+c, zeby przerwac."
sleep 5
sudo shutdown -h now

Tyle w bashrc. Trzeba się też zabrać za wygląd pulpitu. Żeby było mi łatwiej, szukam programów napisanych w GTK2 i konfiguracja jest w jednym miejscu, czyli pliku ~/.gtkrc-2.0:

gtk-icon-theme-name = "Cheser"
gtk-theme-name = "Adwaita"
gtk-font-name = "DejaVu Sans 11"

Do sprawdzania stanu baterii, pamięci i tym podobnych używam starego, dobrego Gtkrellm z moją ulubioną skórką Egan.

WindowMaker doczekał się też w ciągu lat kilku apletów, między innymi zegarka widocznego w prawodolnym rogu ekranu. Są też między innymi kontrolki głośności ALSY oraz kontrolki XMMS, ale nie cofam się aż tak. 🙂 Zdecydowana większość to ledwo cokolwiek robiące zabawki (jak zegar szesnastkowy), ale akurat klasyczny zegar jest przydatny.

Ostatnie miejsce, gdzie warto zajerzeć, to plik autostart w katalogu ~/GNUstep, gdzie (zgadliście) możemy owe zegarki oraz gkrellmy uruchamiać razem ze startem pulpitu. Szukałem też prostego i łatwego do ogarnięcia emulatora terminala. Wybór padł na LilyTerm, będący nieco dziwaczną mieszanką surowej prostoty oraz graficznego klikania w bardzo rozbudowanym menu kontekstowym. Do plików używam Thunara z Xfce, który nie został jeszcze przepisany na GTK3 oraz może łątwo montować udziały Samby, co dla mnie jest przydatne. Do logowania mam LightDM, a Xscreensaver robi za blokowanie ekranu po wybudzeniu.

Używam tego wszystkiego od jakiś dwóch miesięcy i wrażenia są jak najbardziej pozytywne. Przyjemnie jest wrócić do dawno nieużywanych aplikacji, a konieczność konfiguracji kilku rzeczy w terminalu dodaje mi przy okazji więcej możliwości.

bashrc

Bashrc to prosty skrypt interpretowany zaraz po zalogowaniu się. Prościej się nie da, dopóki nie wrócimy do autoexec.bat. Można ustawiać w nim przeróżne aliasy oraz krótkie polecenia, które i tak wpisywałbym zaraz po zalogowaniu. Fragment mojego pliku:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias 'dir'='ls --sort=extension --color -h -al'
alias 'top'='htop --user=lukasz --sort=PERCENT_CPU --delay=25'
alias vi='vim'
alias sjava='/usr/java/default/bin/java -jar'
alias xterm='xterm -bg 'black' -fg 'grey' -fa 'Monospace' -fs 14'
alias men='LANG=C man'

Trzy pierwsze aliasy są dla mnie zawsze obowiązkowe, żebym nie usunął, ani nie nadpisał sobie przypadkiem ważnych plików i katalogów. Do dira jestem przyzwyczajony i pisałem już o tym. Xterma używam czasami do kompilacji i budowaniu pakietów, gdzie nie zależy mi na super poprawnym wyświetlaniu wszystkich komunikatów, ale od czasu do czasu rzucam okiem co się dzieje. Kilka parametrów pozwala widzieć cokolwiek na dużym monitorze.

Co jednak w sytuacji, kiedy chcę topa, a nie htopa? Bash automatycznie uruchamia htopa i niby nic nie można na to poradzić, oprócz „zunaliasowania” potrzebnego mi programu. Wystarczy uruchomić program z pełną ścieżką, np. /usr/bin/top. Skoro nie ma do tego aliasu w bashrc, zostanie zwyczajnie uruchomiony top.

Ostatnie co mam, ale wam nie pokażę, to aliasy w rodzaju

alias frytka='ssh ADRES_IP'

, bo zapamiętanie adresów IP to dla mnie kosmos. 🙂 Jedyne, co jestem w stanie zapamiętać, to 8.8.8.8, którego i tak nie używam, ale przydaje się od czasu do czasu.

ls i sortowanie

ls to całkiem przydatny program. Pokazuje różne pliki, wiadomo kto jest właścicielem, kto ma jakie uprawnienia i inne fajne rzeczy. Problem w tym, że domyślnie sortuje pliki i katalogi alfabetycznie, przez co wyjście jest zupełnie nieczytelne. Można sobie jednak pomóc parametrem –sort, który zrobi z tym bałaganem porządek:

ls --sort=extension --color -h -al

Standardowo, po kolei:

  • –sort=extension poukłada pliki i katalogi według rozszerzenia: najpierw katalogi bez kropki na początku, potem z kropką, potem według rozszerzenia, przy czym pliki avi będą przez exe, a exe przed pdf, itd…
  • –color mówi samo za siebie, bardzo przydatne,
  • -h pokaże wielkość plików w megabajtach,
  • -al to moje ulubione: pokaż pokaż wszystkie pliki i informacje o nich na kolumnowej liście.

Nie zaszkodzi stosowny alias w bashrc:

alias 'dir'='ls --sort=extension --color -h -al'

Man po angielsku

Skoro ostatnio było na temat manuali, to warto wspomnieć o jednym istotnym szczególe: polskich manualach. Są lepsze i gorsze. Tłumaczenie może być technicznie poprawne oraz pozbawione błędów merytorycznych, ale „apropos – przeszukiwanie nazw i opisów stron podręcznika ekranowego” sugeruje użycie automatycznego tłumacza. W takim wypadku, jeżeli czujemy się mocni w angielskim, warto sięgnąć do anglojęzycznej wersji. Wystarczy:

LANG=C man apropos

Korzystam z tego na tyle często, że mam gotowy alias w pliku .bashrc:

men='LANG=C man'

Fonty w xterm

Xterm bywa bardzo przydatny. Na codzień używam gnome-terminala, ale jeżeli program zasypuje nas tekstem na standardowym wyjściu, który niekoniecznie chcemy przeczytać w całości, to gnomowy terminal niepotrzebnie zużywa procesor. Rpmbuild, i ogólnie make, to najlepsze przykłady.

Autorzy xterma wyszli chyba z takiego właśnie założenia, gdyż domyślny font jest tak mały, że nie widać kompletnie niczego. Szczęśliwie dla nas xterm można uruchomić z kilkoma parametrami:

xterm -bg 'black' -fg 'grey' -fa 'Monospace' -fs 14

Kolejno:

  • -bg to kolor tła,
  • -fg to standardowy kolor fonta,
  • -fa to nazwa fonta,
  • -fs to wielkość fonta.

Można oczywiście dodać stosowny alias do .bashrc i mieć to z głowy:

alias xterm='xterm -bg 'black' -fg 'grey' -fa 'Monospace' -fs 14'

 

Upiększamy terminal z powerline

Masz już ustawione wszystkie kolorki w gnome-terminlu? Okno wyświetla już idealny font, a kursor pomryguje zawadiacko, czekając na rm -rf?  Jak to mówią: „no to se jeszcze poczeka,”, bo przed nami trochę pracy.

Powerline to program-nakładka na stare dobre PS1, czyli ciąg znaków, w którym terminal informuje o bieżącym katalogu, numerze IP, zalogowanym użytkowniku, itd… Zwykłem oczywiście modyfikować ów znak zachęty, ale na dobrą sprawę ograniczało się to jednak do kolorowania nazwy użytkownika, żeby się nie myliło.  Zaczytałem o Powerline na blogu Fedory i w głowie miałem tylko „właśnie tego mi brakowało”.

Jak to działa? Po instalacji nie zobaczysz żadnej różnicy, dopóki w bashrc (czy bash_profile) nie dopiszesz kilku linijek:

if [ -f `which powerline-daemon` ]; then
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. /usr/share/powerline/bash/powerline.sh
fi

 

Kiedy teraz na to patrzę widzę, że klauzula if nie jest mi potrzebna, bo nie loguję się zdalnie, ale jak już jest, to niech zostanie. Domyślne zachowanie powerline to wyświetlanie loginu użytkownika na niebieskim tle i dodanie ładnego paska zamiast oddzielania wszystkiego spacjami.

terminal-powerline2

Ładnie i praktycznie zarazem. Sytuacja oczywiście nie wygląda tak różowo w czystej konsoli, prompt minimalnie się krzaczy, ale jest w dalszym ciągu czytelny i w tym przypadku to jest najważniejsze. Najlepsze zostawiłem na koniec: powerline zawiera rozszerzenie do vima, więc warto upiększyć również jego.

terminal-powerline3

I weź tu teraz człowieku używaj Emaksa. 🙂 Podobnie jak w przypadku shella, tu również wystarczy krótka informacja do .vimrc:

python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup
set laststatus=2
set t_Co=256

 

Ciąg dalszy nastąpi…