Jakiś czas temu poświęciłem parę postów na anglojęzycznym stifflogu swojej konfiguracji środowiska pracy. Nie miałem jakoś wtedy wielkiej chęci żeby przełożyć te wpisy na polski, a jako że teraz potrzebuje czegoś niezbyt wyszukanego na ponowne blogowe rozruszanie, czas na zbiorcze wydanie opisujące dość dogłębnie zestaw oprogramowania, jakiego używam, podobne do wpisów ze StarychDobrychCzasów[tm]. Nie jest to dosłowne tłumaczenie, minęło dość czasu żebym kilka rzeczy w swoim ustawieniu pozmieniał, dodał i porobił nowe screeny pokazujące całość w akcji. Trąci niezdrowym lansem i genciarstwem, ale cóż, może kogoś jednak zainteresuje
Tak, kompiluje wszystkie pakiety ze źródeł. Nie interesuje mnie zbytnio szlifowanie flag do uzyskania 2% przyrostu wydajności, cenie sobie natomiast możliwość dokładnego dostosowania oprogramowania do swoich potrzeb (flagi USE), a przede wszystkim ilość wysokiej jakości i świeżości pakietów w Portage. Z innych dystrybucji, bardzo spodobał mi się Zenwalk, którego mam na laptopie. Całkiem możliwe, że gdyby np. padło mi teraz Gentoo, to zainstalowałbym właśnie Zenwalka , zamiast znowu kompilować system przez tydzień. Wprawdzie bogactwo pakietów jest dużo mniejsze, a właściwie to nie ma ich prawie wcale, ale za to całość jest prosta, domyślny zestaw programów bardzo sensowny, system jest gotowy do pracy praktycznie z marszu, działa WiFi, wszystko jest ładnie zintegrowane i w pewnym sensie “przystrojone”. Faktycznie jest w tej dystrybucji pewien powiew zen… Od bardziej pragmatycznej strony jest tym, czym powinien był stać się Slackware pewien czas temu (Zenwalk jest zreszta na nim oparty).
Jestem wiernym “wyznawcą” serii -ck – różnica w responsywności między zwykłym jądrem a -ck jest wyraźnie odczuwalna, w przeciwieństwie do wielu innych “optymalizacji” polecanych przez lokalnych guru, szczególnie np. w co większych aplikacjach Javowych. Problemów ze stabilnością – nie stwierdzono.
Wraz z wersją 4.4 nareszcie mogłem pozbyć się z czystym sumieniem przerośniętego, a niezbyt funkcjonalnego Gnome, które w pewnym momencie zaczęło cofać się w rozwoju (Sawfish to był menadżer okien, Metacity to żart jakiś chyba)… Nigdy nie miałem zbyt wielu wymagań w stosunku do środowiska graficznego, ale te istniejące były na tyle kiepskie, albo na tyle brzydkie, że i tak nigdy nie dawało rady znaleźć czegoś sensownego. XFCE też może nie wymiata jakoś szczególnie, ale nie pożera zasobów i ma garść potrzebnych rzeczy – menadżer okien, konfigurowalne panele, skróty klawiaturowe, garść potrzebnych apletów, konfigurator do Gtk, szybki menadżer plików… Do tego garść dodatków – Devils Pie, o którym za chwile, odrobina własnych malutkich haczyków, temat Zenith dla gtk+, jakiś Milk dla Xfwm (chyba sam go rzeźbiłem, nie jestem pewien) oraz troche ikon pozbieranych z różnych miejsc. Tapeta przeważnie z DeviantArta albo rzadziej z Flickra. Przed użyciem wstrząsnać :> Wygląda i działa tak jak tego oczekuje, a jedyną alternatywą jest żmudne dłubanie w .fvwm2rc, a tego chciałbym uniknąć, za stary jestem…
Niestety wirtualne pulpity zarówno w XFCE jak i w Gnome sens mają mizerny. Żadną bowiem przyjemnością jest ręczne przeciąganie za każdym razem nowo odpalonej aplikacji na “swój” pulpit. Devils Pie pozwala kontrolować zachowanie nowo pojawiających się okien w dość wyrafinowany sposób – mamy dostępny mały język (dobry przykład DSLa) wzorowany na Lispowych sexp’ach, z zestawem “predykatów” pozwalających określić które okna chcemy “zmanipulować” i “poleceń”, zajmujących się samym aktem manipulacji
Do tego dopisałem sobie malutki programik w C + parę shell scriptów które realizują np. takie coś – kiedy wciskam Ctrl+Alt+t pierwszy raz, otwiera mi się nowy terminal z nową sesją screena. Odpalam coś, potem zapominam o tym terminalu, robię 15 różnych innych rzeczy. Kiedy teraz wcisnę ponownie Ctrl+Alt+t nie otworzy mi się nowe okno terminala, tylko nowa sesja screena, a istniejący terminal dostatnie focus. Jest kilka istniejących programów pozwalających manipulować Xowymi okienkami z poziomu konsoli czy skryptów, ale mimo szczytnych idei, okazały się nie działać wcale, albo działać tylko czasami (próbowałem m. in. wmctrl i xwit, napisanie tego co chciałem w C/Xlib zajęło mi 3 podejścia, dobrych kilka godzin, było absolutnie poniżające i skończyło się w 100 liniach kodu).
Jestem programistą, spędzam codziennie przynajmniej pare godzin przed edytorem tekstu. Komfort pracy z nim jest dość krytyczny dla mojej produktywności – trudno się skupić na pracy koncepcyjnej kiedy trzeba spędzić 30 minut szukając definicji jakiejś funkcji, czy zajmując się ręcznym “znajdź i zastąp”. Trudno jest nie tylko wymienić wszystkie funkcje które Emacs posiada (jest to wręcz niemożliwe, przez lata snipplettów ELispa które ludzie napisali nazbierała się olbrzymia ilość), ale nawet trudno jest mi ogarnąć wszystkie te możliwości, których sam używam. Brak okien dialogowych, wymyślnych file chooserów i innych tym podobnych może początkowo odstraszać, ale potem okazuje się, że ma to też dobre strony – wszystko da się zrobić szybko i sprawnie z klawiatury. Krótki rzut oka na to, co mi się podoba w Emacsie: podświetlanie składni dla wielu języków i w pełni customizowalne, poprawnie działający auto indent, snippletty podobne do tych modnych ostatnio za sprawą TextMate, integracja z systemami kontroli wersji, rozbudowany znajdź i zastąp (z użyciem wyrażeń regularnych, takżę w kombinacji z odpalaniem fragmentów Elispa na znalezionych matchach, w wielu plikach, we wszystkich otwartych buforach itp. itd.), interfejs do grepa, zaznaczenia prostokątne, osadzenie konsoli SQL / Ruby’ego / Lisp’a / shella / czegokolwiek, śledzenie zmian w pliku na bierząco (tail), świetny wbudowany diff, sprawdzanie pisowni, edytowanie plików przez ftp/sftp/ssh, a takżę jako inny użytkownik przez sudo. Skróty klawiaturowe, które początkowo wydają się dziwaczne, także mają swój sens – bez notacji prefixowej nie da się po prostu przyporządkować całej tej funkcjonalności odpowiednim skrótom. Złożone są one jednak z dość logicznych części, pozatym Emacs to edytor samodokumentujący się, w razie czego wiele rzeczy można bardzo łatwo sprawdzić w dokumentacji, albo np. zwyczajnie kliknąć w menu. A najważniejsze jest to, że Emacsowy język programownia w przeciwieństwie do systemów rozbudowy większości innych edytorów jest dość potężny, plus ma pod sobą sporaśne API, dzięki czemu rozszerzenia faktycznie pisze się całkiem znośnie.
Początek Emacsowania
Jak szaleć to szaleć, opisze także zestaw pakietów Emacsa które używam, nazbierało się trochę tego przez czas użytkowania (liczony w latach, ale dokładnej daty iniciacji nie pamiętam
) (Jeśli nie pasjonuję Cię temat, przeskroluj od razu do “Końca Emacsowania”) Część z tych pakietów wchodzi w skład zwykłego Emacsa, a część tylko Emacsa umiarkowanie CVS-owego (takiego używam, obecnie 22.0.93.1, jeśli ktoś jest gotów na eksperymenty może też ściągnąć 23 wreszcie z Xftowymi wygładzonymi czcionkami).
Psvn – dodaje rozbudowane wsparcie dla Subversion do Emacsa. Nie korzystam z pełnego zestawu poleceń svn, ale myśle że większość z nich jest pokryta. Ręcze za to osobiście, że cykl commit/update przebiega zawsze poprawnie i bez zarzutu, koniec z rzucaniem się do konsoli w tym celu.
Browse-kill-ring – “Wieloschowek”, czyli coś co pamięta poprzednie zawartości schowka i pozwala je ponownie wkleić.
Rails – Dla RoRowców prawdziwe zbawienie. Pozwala generować migracje, modele, kontrollere, oglądać logi, sterować serwerem, odpalać konsolę Railsową i SQLowa do Railsowej bazy, odpalać taski rake’a, przełączać się między kontrolerem i pasującym testem funkcjonalnym itp. Brakuje tylko trybu z prawdziwego zdarzenia dla plików rhtml… Chociaż widzę, że chłopaki poszli ostatnio jeszcze bardziej do przodu z tym pakietem, więc moje informacje nie są już najświeższe.
Msf-abbrev – słynne “snippety” w wydaniu dla Emacsa. Nieco przereklamowana funkcjonalość skąd inąd, miła, ale nie aż tak jak można by sądzić po zachwytach blogosfery
Nxml-mode – Podstawa jeśli chodzi o edycje jakiejkolwiek formy dokumentów XML, w tym także XHTML. Domyka, dopełnia, waliduje itp.
Tramp – To właśnie Tramp pozwala na wyżej wspomnianą edycję zdalnych plików.
Ido-mode, mcomplete – bardzo sprytne formy dopełniania, pierwsza super-przydatna przy otwieraniu plików, druga przy wszelkich innych poleceniach.
Ibuffer – przeglądarka otwartych buforów. Zanim rozlegną się błagania o zwykły tabbar, chciałbym powiedzieć, że bufory można np. zaznaczać i wykonać na nich określone polecenia, można je grupować, filtrować, sortować itp.
Dired/wdired – edycja katalogów w Emacsie. Komuś może się to wydać idiotycznym pomysłem, ale nie jest to takie głupie. Pomyśl, co by było, gdybyś mógł np. wziąść wyjście ls, przejechać je znajdź/zastąp, a następnie zmiany te zostałyby zastosowane do nazw plików… Tak właśnie działa Wdired i ze wszystkich form zmieniania nazw wielu plików ta jest jedną z lepszych (zmv z zsh też daje radę, nieco też tęsknię za Total Commanderem, najlepszym programem pod Windows ewer moim skromnym zdaniem). Zwykły dired potrafi też milion różnych rzeczy których jeszcze nie zdążyłem się nawet nauczyć, zawsze można też go użyć po prostu jako wybieraczki do plików.
Rcodetools – zestaw tooli z eigenclass.org, z interfejsem do Emacsa. Pozwalają one m. in. na prawdziwe, inteligentne (context-sensitive) dopełnianie nazw metod w Rubym (sprawdziłem, działa, nie miałem za to cierpliwości zawalczyć z Rails, ale i tu powinno to być możliwe). Eigenclass wypuścił też FastRI, czyli przyśpieszony interfejs do doków Ruby’ego, chyba nawet wraz z interfejsem Emacsowym doń, ale tu zaszalałem i napisałem sobie własny. Ruby’owcy powinni się też zainteresować RTags, jedynym programem który sensownie generuje pliki TAGS dla kodu w Rubym.
Pabbrev – to coś trochę ciężko wytłumaczyć, ale przyśpiesza pisanie całkiem nieźle. W czasie kiedy emacs jest bezczynnny, pabbrev indeksuje zawartość wszystkich buforów, a potem w czasie pisania, kiedy rozpoczyna się słowo, podpowiada w czymś w rodzaju, hm, tooltipu? możliwe dopełnienie. Interfejs jest taki, że w niczym nie przeszkadza, a potrafi pomóc. Identycznie wygląda Predictive, tylko działa ze słownikiem zamiast indeksować.
W3m – przeglądarka WWW do Emacsa. Nie zamierzam rezygnować z Firefoxa, ale dokumentacje zupełnie fajnie jest mieć wewnątrz prostej tekstowej przeglądarki w edytorze.
Hidelines – potrafi ukryć/pokazać tylko liniie pasujące do danego regexpa, zrobić coś z nimi, a potem z powrotem pokazać cały bufor.
Hideshow – folding, jedyny jaki udało mi sie zmusić do działania
Recentf – Lista ostatnio otwartych plików.
Winner-mode – pamięta poprzednią konfigurację ramki emacsa i potrafi robić na niej undo/redo. Możliwość podzielenia jednego okna Emacsa na wiele częśći jest jednym z najprostszych i najlepszych jego funkcji i trudno mi sobie teraz wyobrazić używanie edytora jej pozbawionego – przez prawie cały czas mam otwartą jednocześnie np. definicję struktury bazy danych i Railsowy model, kontroler i jego test funkcjonalny albo jeden z widoków itp.
Po więcej informacji odsyłam zwyczajowo do EmacsWiki oraz do tutoriala Martineza.
Koniec Emacsowania
Uff, starczy tego dobrego, czas na resztę programów:
Jeśli nie używam akurat Emacsa, to pewnie używam Firefoxa. Poza zjadaniem pamięci jestem z niego w 100% zadowolony. Absolutnym killer featurem są zdecydowanie rozszerzenia – przede wszystkim totalnie genialny FireBug (screencast“), ale też Sage do RSSów, wtyczka do del.icio.us, Tab Mix Plus do podrasowania tabów, viewer do Googlowego pageranku i kjustomizator do fullscreenu czyli rozszerzenie o nazwie Autohide. Do tego skórka “macfoxII graphite” i mój “browsing experience” jest radosny i produktywny
Nie prowadzę jakiejś przytłaczającej ilości korespondencji w setkach maili na dzień, ale coś tam jednak codziennie dostaje i piszę. Potrzebuje podstawowych funkcji – folderów, filtrowania spamu, filtrów na temacie czy nadawcy wiadomości itp. Mam dwa konta pocztowe, a jak ostatni raz sprawdzałem Thunderbirda to skonfigurowanie takiej zastraszającej ich ilości bolało strasznie, nie wspominając u zużyciu pamięci. Ramu mam gigabajt, ale wolałbym przeznaczyć go na coś użytecznego, szczególnie że kiedyś do podobnych zastosowań wystarczało mi z powodzeniem 64mb… Jasne, trochę się rozbestwiłem od tego czasu, ale programy też się roztyły niemiłosiernie. Dlatego zostałem z małym i szybkim Sylpheedem, który mimo to funkcjami jest całkiem nieźle naładowany.
Gaim zbliżając się do wersji 2.0.0 osiągnął perfekcje – zachowuje się pod każdym względem tak jak tego chcę i mimo że do releasu zostało jeszcze trochę czasu, jest stabilny jak skała. Nie do pogardzenia jest przede wszystkim jednoczesne, natywne wsparcie zarówno dla Gadu-Gadu i dla Jabbera, czym żaden inny IM pochwalić się chyba nie może. Przeglądarka historii dla odmiany działa, są taby, powiadamianie o nowych wiadomościach można ustawić na 100 sposobów, jest mnóstwo pluginów, roster, emoty i interfejs ogólnie wyglądają ładnie itp. Nie bardzo wiem czego więcej mógłbym chcieć od programu tego typu.
Linux bez shella to jak Windows bez blue screenów
Zsh oferuje przede wszystkim świetnie, inteligentne dopełnianie dla najróżniejszych poleceń, znacząco ułatwiajać żmudne wklepywanie długich linii. O masowym zmienianiu nazw plików za pomocą zmv już wspominałem, do tego kilka trików i można pracować. GNU Screen po prostu wybija z głowy korzystanie z jakichś multi-terminali, dużo wygodniej to działa i da się wygodnie obsługiwać z klawiatury.
Ekhem, trudno Audacious’a nazwać dobrym programem… Nie bardzo widzę w który miejscu autorzy zrobili postęp od czasów Beep Media Player’a, zdarzały się za to jakieś okropne babole. Teraz jest już jako tako, a że Beepa nie ma już w Portage, to nie bardzo mam inne wyjście. Z innych playerów interesujący był Listen i Songbird, ale oba żrą zasoby, a pierwszy do tego ma jakieś dziwne gnomowe zależności…
Trudno się zdecydować na jeden odtwarzacz do filmów, a posiadanie trzech ma tą zaletę, że w razie posiadania czegoś w egzotycznym formacie któryś zawsze sobie poradzi. Interfejsowo niestety wszystkie trzy ssą po całości… Dlatego przez większość czasu używam mplayera wołanego z konsoli. Xine za to dobrze radzi sobie z DVD, a szczególnie z obsługą menu. VLC byłoby z tego wszystkiego może i najlepszym odtwarzaczem, gdyby tylko ktoś powalczył z bugami i usunął z 80% interfejsu.
Wyświetla obrazki, robi to szybko i nie ma setki zależności. Niestety jeden z programów wybranych na zasadzie negatywnej selekcji. Taki IrfanView jednak działa trochę lepiej i trochę więcej potrafi…
Jak na człowieka plastycznie ograniczonego, używam GIMPa bardzo dużo. Retusz fotek, jakieś drobne sprawy dyzajnowe, malutkie projekty w rodzaju jakichś zaproszeń, okładek itp. Sprawdza się bardzo dobrze, choć niektóre rozwiązania interfejsu są/były denerwujące.
Niestety pod względem biurowym wybór pod Linuxem jest zerowy. KOffice i AbiWord częśćiej działają niż nie działają, więc do pisania sprawozdań z pracowni zostaje OpenOffice. Boleje głównie nad słabo gtkowym interfejsem, sama edycja dokumentów przebiega całkiem sprawnie i rezultaty są nienajgorsze. Bardzo sobie chwalę także eksport do PDF.
aMule (ze stroną coś dziwnego się dzieje chyba) i Azureus
Przydatne w chwilach wyjątkowego pożądania jakiejś mp3. aMule ma duży wybór plików i przeważnie wystarcza do znalezienia dowolnego materiału. W trudniejszych przypadkach przydaję się Azureus, który ma tą genialną możliwość ściągnięcie wybranych plików, np. 10mb z 2gb torrenta, co kompensuje jego własną kobyłowatość.
Ruby / Rails / PostgreSQL / Exim / lighttpd / Nginx / Gcc / SBCL
Na koniec został stosik developerski, który wielkich tłumaczeń raczej nie wymaga. Ciekawy, acz mało znany jest tu głównie Nginx, bardzo szybki serwerek rodem z Rosji. SBCL służy mi od paru lat do pisania kolejnych “Hello World!” w Lispie
Z takiego oto zestawu jestem generalnie bardzo zadowolony. Nigdy, pod żadnym systemem, nie miałem nic lepszego. Miałbym natomiast kilka życzeń:
* OpenOffice działający w 100% jak normalna aplikacja gtk+, albo AbiWord rozbudowany do poziomu edytora tekstu (raczej mało prawdopodobne)
* Menadżer plików na poziomie Total Commandera dla Linuxa
* Evince mogłoby pamiętać miejsce w którym skończyło się czytać pdfa, jak to robi taki np. KPDF (Szkoda dla jednego czy dwóch programów instalować Qt i całe KDE)
* Odtwarzacz muzyki z działająca kolekcją. Żeby był w Portage, napisany w C++ i nie segfaultował. Bmpx rodzi jakieś tam nadzieje, ale na razie skromne.
* Podstawowy, ale działający edytor filmów… To już nawet nie życzenie, raczej marzenie. Z Kino coś tam się jeszcze da zrobić, może w pryszłości będzie się nadawało do prostej edycji.
Na koniec konieczne screeny:
Wpis funkowo sponsoruje Gnarls Barkley i “Crazy”








