Opis moich konfiguracji

Opis moich konfiguracji, tzw. dotfiles

Siedzę pod Linuxem od ponad 24 lat. Widziałem i testowałem sporo różnych rozwiązań, systemów, managerów okien i widziałem, jak fajne projekty giną odsunięte przez nowsze i mniej udane, niedopracowane... Zebrałem tutaj opis tych rozwiązań z których korzystam lub korzystałem, na przykład pliki konfiguracji, zbiór czcionek, które mi się podobają, itp. Może coś tu znajdziesz dla siebie.

Systemy okien

NIE jest to terminal o nazwie dosłownej qterm! Jest to mój skrypt perlowy do uruchamiania xterm z okolicy lat 2000-2003 (tak podejrzewam) natomiast używałem go znacznie wcześniej, już w roku 1995, pracując na stacjach roboczych Irix, Silicon Graphics, i Sun. Potrzebowałem jakiegoś okna z dobrym kontrastem, więc napisałem sobie prosty program, który nie tylko otwierał takie okno, ale też ustawiał w nim czcionkę, i odpowiednie, przyjemne dla mojego oka, kolory. Ten skrypt nazwałem qterm.pl, i używałem go przez ponad 10 lat. Potem jakoś wyszedł z użycia, pojawiły się lepsze terminale, z Unikodem i wsparciem dla ładnych czcionek skalowalnych...

Najstarszy

Najstarszy, jaki mam, pochodzi kwietnia 2002 roku, i co ciekawe, nadal działa jeżeli masz zainstalowanego xterm-a, no i oczywiście - Perla. Ale w większości systemów Linuxowych Perl jest nadal obecny.

Ostatni

Najnowszy jest z lipca 2011 roku, i widać w nim spory postęp - dodane zostały opcje uruchomieniowe, zwiększyła się liczba możliwości. Obecne wersje konsole lub xfce4-terminal-emulator potrafią same losować kolory tła.

Jak widać, oba te skrypty (i 32 inne wersje), korzystają jeszcze z kodowania ISO, które obowiązywało na moich komputerach przed czasami powszechnego teraz Unikodu. A wcześniej jeszcze, gdy dopiero powstawał Windows 3.1 - na komputerach kontrolowanych przez DOSa - królował standard Mazovia oraz IBM852. Polskie litery wpisywało się trzymając wciśnięty Alt i podając w tym czasie numer na klawiaturze numerycznej. Pomysł, żeby polskie litery pojawiały się z naciśnięciem prawego Alt i zwykłej litery przyszedł dużo później; pamiętam jeszcze że pisałem pracę zaliczeniową w trakcie studiów na komputerze gdzieś w pracowni we Write (był taki edytor - poprzednik Wordpada), w którym to windows NIE miał jeszcze polskich znaków. Ten pracownik u którego gościnnie mogłem pisać po prostu nie miał polskich znaków w systemie... widać nie potrzebował! Pisałem czcionką Times New Roman... Która wtedy była nowa i jeszcze nie "opatrzona". Ale to były zamierzchłe czasy studiów i windoze 3.11 lub nawet 3.0. Tak wygląda jedno z okien otwierane przez programik qterm.pl - masz je poniżej. Kolor tła ustawiany jest losowo z pewnej grupy predefiniowanych kolorów.

Wygląd okna otwieranego przez qterm.pl.
Wygląd okna otwieranego przez qterm.pl

W oknie tym brakuje znaków unikodowych, z których teraz korzystam, dlatego w znaku zgłoszenia systemu pojawia się taki żółtawy prostokącik. Nie używam już tego rodzaju okien. Poza tym, xterm można już uruchamiać z antyaliasingiem i czcionkami TrueType, więc wyglądać może inaczej, i w sumie nawet lepiej.

Obecne okno: konsole + konfiguracja

Pracuję ostatnio wyłącznie na silnych komputerach, więc mogę pozwolić sobie na odrobinę rozpusty i używanie środowiska KDE, a właściwie Plasma. Sporo w nim pracowałem w latach 2003-2007 - gdy było jeszcze w wersji bodaj 3.5.10 lub podobnej. Potem wypuszczono wersję 4.0 lub 5.0 (nie pamiętam) - która była bardzo niedopracowana, straciła w moich oczach swój urok i przesiadłem się parę lat na Gnome i pochodne managery okien. W każdym razie teraz mogę używać tego środowiska w bardziej skomplikowanych konfiguracjach, np. tam gdzie mam kilka monitorów, i gdy chcę, aby określone okna robiły określone rzeczy (np. monitor otwierał się zawsze gdzieś na konkretnym ekranie, nie miał dekoracji, nie reagował na mysz, i żeby nie było tego okna w liście po Alt-Tab...). Zrobiłem sobie następującą konfigurację konsoli: - płaskie gęsto ustawione litery, małe odstępy między wierszami, aby tekstu weszło więcej, no i ładna czcionka, dopasowana grubością do swojej wielkości. Wygląda to wspaniale, a przynajmniej teraz - przez jakiś czas - mi się tak podoba :) Oto konfiguracja:

Profil konsoli

piotao.profile - mój profil konsoli, z którego korzystałem na co dzień (czyli do 2021 roku). Należy go wrzucić do katalogu ~/.local/share/konsole i potem wybrać w profilach konsoli. Gdy ustawi się go jako domyślny, będzie ładowany automatycznie.

Konsola zdefiniowana z czcionką Inconsolata Semi Expanded Medium wygląda tak:

Wygląd konsoli w mojej konfiguracji
Wygląd konsoli w mojej konfiguracji, kolory są losowane.
Wygląd tekstu w Codium
Wygląd tekstu w Codium

Powyżej widzisz fragment kodu tej strony zapisany w Codium z czcionką w wersji Light. Sama czcionka jest REWELACYJNA! Oczywiście wiem, że JetBrains zdefiniował prawie na nowo czcionkę idealną do programowania, ale tutaj można wybrać sobie proporcje szerokości i grubości - coś czego kiedyś nie było! Poza tym ta czcionka przypomina mi stare bezszeryfowe czcionki bitmapowe których używał Xterm - np. w rozmiarze 9x15 lub 8x13... to były bardzo fajne proporcje i doskonale wyglądające czcionki. Oczywiście, uwielbiałem także czcionkę Terminus... gdzie ona teraz jest? Jej namiastka w ttf niekoniecznie jest taka sama.... :)

Edytory tekstu

VIM - oczywiste!

Mój ulubiony edytor od 20 lat. Obecnie trochę migruję w kierunku większego wygodnictwa i czasami piszę jakieś proste teksty w Codium - to open-sourcowa wersja VSCode zrobionego przez M$. VIM jednak towarzyszy mi co najmniej od roku 2000, gdy zacząłem w nim pracę; i przez wiele lat użytkowania zmieniły się nie tylko jego wersje, ale też instalowane i definiowane przeze mnie paczki i zasoby. Sam nie wiem, ile tego było... Miałem wersje konfiguracji, która była doskonała do kodzenia w Perlu, miałem takie, które oparte były o system pluginów i wtyczek (to te nowocześniejsze) a ostatnio zdefiniowałem sobie najnowszą konfigurację od zera, z niewielkimi dodatkami potrzebnymi do prac nad surowymi plikami HTML. Tak konfiguracja była używana zarówno przez VIMa jak i przez NVIMa jednocześnie. Przerabiałem kurs CBX i VIM okazał się do tego najlepszy, absolutnie - niezastąpiony. A to dzięki genialnie prostym i szybkim makrodefinicjom, które można było tworzyć ad-hoc w celu wykonania jakichś skomplikowanych operacji, potarzanych co najmniej kilkukrotnie. VSCodium tego nie zapewnia (być może - "jeszcze nie").

Aby użyć konfiguracji VIMa, którą tutaj umieściłem, trzeba plik .vimrc położyć w swoim katalogu domowym, i oprócz tego założyć katalog .vim/colors. Schematy kolorów muszą wylądować w tym katalogu .vim/colors, i wtedy z poziomu VIMa można je załadować pisząc po prostu :color piotao lub :color atomdark256 Oczywiście na końcu wciska się ENTER!

Tak wyglądają te schematy kolorów (zauważ, że atomdark256 i schemat linii stanu są dopasowane, w schemacie piotao.vim tego dopasowania nie ma, bo w czasie gdy z niego korzystałem, nie używałem tej dokładnie linii stanu).

Schemat kolorów do VIM - atomdark 256
Schemat kolorów do VIM - atomdark 256
Schemat kolorów do VIM - piotao
Schemat kolorów do VIMa: piotao
Schemat kolorów do VIM - piodesert
Schemat kolorów do VIM - piodesert

Więcej fajnych schematów do VIMa można znaleźć w „internetach”, na przykład tutaj: Vim Color Schemes. Gdy ostatnio sprawdzałem, było tam (w 2022 roku) 1275 schematów kolorów!

Od wielu lat nie przepadam za Micro$oftem, ale przyznać muszę, że VSCode to jeden z lepiej zrobionych edytorów (bo na pełnoprawne środowisko typu RAD to chyba on jednak nie zasługuje). Można nawet w nim włączyć klawiszologię zaczerpniętą z VIMa (i niestety, nie jest ona nawet w połowie tak dobra jak ta prawdziwa która działa w VIMie), ale mnogość wtyczek, łatwość ich instalacji, pewne graficzne rozszerzenia, których tekstowy, terminalowy VIM nie ma i mieć nie może oraz w miarę OK wydajność jakoś powoli mnie przekonują do tego edytora. Na pewne prace programistyczne czasami decyduję się użyć właśnie Codium. Nie „Visual Studio Code”, ponieważ ten zawiera jakieś paskudne własnościowe i śledzące kody M$, natomiast Codium jest to ta sama baza kodowa, ale pozbawiona śmiecia. Ostatnio nawet udało mi się zdefiniować JSON przez który Codium po wciśnięciu Ctrl+Shift+Alt+Enter wstawia mi do dokumentu tag <br> (wstawka z roku 2024: teraz mam to pod Alt-Enter)! Dla kogoś to może być trywialne, ale dla mnie to wcale takie nie było. W VIM tego typu skrótu nie da się zrobić, ponieważ nie jest on możliwy do wychwycenia, gdy kodzi się w terminalu (na przykład gdzieś zdalnie przez ssh, co jest dość częste). No ale jak to w świecie M$ bywa - przegadana konfiguracja, bo wpis dodający ten tag <br> zajął AŻ 8 wierszy w konfiguracji (z zachowaniem formatowania lokalnego, z wcięciami, itp.). No BEZ SENSU z lekka :) W VIMie tego typu definicja (gdyby działała) to jak zwykle jedna linijka (i to krótka!) w pliku konfiguracyjnym! No, ale VIM nie używa formatu JSON do konfiguracji... pewnie gdy powstawał, tego formatu jeszcze nie wymyślono...

Po dłuższej pracy w VSCodium zauważam także jego wady: spowolnienie (czasem znaczne) przy edycji skomplikowanych dokumentów HTML z dużą ilością kontenerów, itp. Dodatki, które powinny działać szybko zaczynają wtedy "mulić" - i czasami szybciej sam wpiszę domknięcie tagu lub inne elementy, niż system "załapie". Przypuszczam, że w VIMie można byłoby uzyskać takie efekty szybciej, bez zamuły. Chociaż - sprawiedliwie muszę dodać, że w przypadku bardzo długich wierszy, wiele edytorów zwalnia, VIM nie jest tutaj wyjątkiem (tylko wiersze muszą liczyć sobie kilka tysięcy znaków co najmniej, aby to zauważyć). Taki plik, z tak długimi wierszami pewnie w ogóle zamordowałby wydajność w VSCodium.

Czcionki

Jestem wzrokowcem (chociaż to podobno ściema). Dlatego lubię widzieć rzeczy ładne, proporcjonalne, dobrze ustawione i przyjemne dla oka. W tym temacie ważne są dla mnie czcionki, których używam na co dzień we wszystkich chyba miejscach, gdzie pracuję. Konfiguruję swoje systemy okien, terminale, przeglądarki i wszystko co się da, aby wyglądało tak, jak lubię. Nie do końca podoba mi sie domyślna konfiguracja systemów i programów, chociaż bywają lepsze i gorsze... Ale trudno mi zrozumieć ludzi (i skrycie trochę ich podziwiam), którzy mówią, że lubią te domyślne, standardowe konfiguracje... Może naprawdę nie robi to im różnicy, czy piszą czytelną czcionką, na wyraźnym tle, czy nie. Ja się męczę wtedy :)

O czcionkach wspomniałem też na poprzedniej stronie Zasobów, wskazując fajną porównywarkę czcionek: https://www.programmingfonts.org/. Zobacz także stronę, na której możesz wybrać sobie najlepszą czcionkę dokonując porównania między dwiema czcionkami - kolejne kliknięcia eliminują "gorsze" fonty i zostajesz z jedną czcionką, najlepszą, którą wybrałeś najczęściej: https://www.codingfont.com/. Nawet fajnie. Po paru kliknięciach trzeba było podjąć naprawdę trudne decyzje bo pojawiały się moje ulubione czcionki! A wybór między Inconsolata a np. Source Code Pro wcale nie jest taki łatwy... Ostatnio, w 2024 roku ponownie przeszedłem przez ten „konkurs” i wygrała nowa czcionka, której jeszcze nie używałem - Red Hat Mono. Ciekawe, bardzo podobna do mojej ulubionej Inconsolaty, która oczywiście była na drugim miejscu. Taki przypadek może.

Czcionki, które instaluję w systemie trzymam w katalogu domowym, w podkatalogu .fonts. To standardowe miejsce na czcionki użytkownika, i działają w prawie każdym systemie Linuksowym (nie sprawdzałem, ale tak myślę). Mogą w tym miejscu być podkatalogi, nie ma problemu. Po dodaniu nowych czcionek, wchodzę do tego katalogu, w terminalu, i zarzucam polecenie fc-cache -f . i po chwili mam wszystkie nowe czcionki widoczne w systemie. Działa to dla jednego użytkownika oczywiście.

Zatem, jakich czcionek używam? Podobają mi się takie:

Warto tu wspomnieć kilka innych, z których korzystałem lata temu, gdy jeszcze nie znalazłem wspomnianych wyżej doskonałych czcionek. W terminalach nie obsługujących FSAA korzystałem z domyślnych systemowych czcionek typu fixed-misc-*, które nazywały się 10x20, 9x15, 8x13 itp. Były to czcionki bitmapowe, więc nie było z nimi żadnego aliasingu, wyglądały perfekcyjnie co do piksela. Sprawdzały się dobrze przy niewielkich rozdzielczościach, które w tamtych czasach mieściły się w 1024x768 lub mniejszych. Potem podobała mi się DejaVu Sans Mono (ale krótko) bo znalazłem Liberation Mono (ich rodzina jest opisana na wikipedii), i w pewnych konfiguracjach czcionka ta wyglądała bardzo ładnie (podobna jest też do DejaVu Sans Code). Pamiętam, że podziwiałem jej miłą okrągłość w Eclipse w którym jakoś czytelnie wyglądała (to był też jedyny edytor w którym kodziłem na białym tle). Używałem też przez sporo lat czcionki Terminus, która niestety nie doczekała się sensownej kontynuacji w wersji TTF lub OTF. Nie lubię za bardzo czcionki Courier i pochodnych, oraz wręcz nie cierpię windowsowych Fixedsys - są po prostu okropne. Natomiast w przypadku gdy zmuszony jestem korzystać z putty u kogoś na Windows, ustawiam w nim czcionkę Consolas z włączoną ClearType, i jakoś daje się wytrzymać.

Fajne są też inne czcionki, z których jednak nie korzystałem - np. Viktor Mono która jest dla mnie trochę zbyt okrągła, Cascadia Code która ma strasznie wydziwiony krój pochyły - niby italic, ale jakiś taki powykręcany. Jest też Monoid, dla mnie jednak jest jakiś taki chudy i trochę jakby za wąski. Są też płatne czcionki z dodatkowymi symbolami, znakami chemicznymi i innymi bajerami, ale nigdy takich nie zakupiłem, bo najzwyczajniej w świecie nie potrzebowałem.

Czcionki można porównać wizualnie np. na tej stronie: http://classic.typetester.org/ ale nie mają tam wszystkiego.

Ikony

Od wielu lat moim ulubionym schematem/wyglądem ikon jest zestaw Faenza, zrobiony przez Tiheum. Niestety, zestaw ten się trochę zestarzał, ale ma godną i sensowną kontynuację - ikony Delft. W zestawie tym znajdziesz typowe dla Linuxa ikony w rozmiarach 16x16, 24x24, 32x32, 48x48, 64x64 oraz 96x96 dla aplikacji, miejsc, urządzeń i stanów. Najlepsze jest to, że ikony te są dostępne także w postaci wektorowej, w formacie SVG, a co za tym idzie będą dobrze wyglądały na każdym urządzeniu i w każdej rozdzielczości, w której zostaną prawidłowo wyświetlone! Można także z plików SVG przygotować 'rendery' w zadanej rozdzielczości bez strat wynikających z konwersji innego rozmiaru bitmapowego. Oto jak wyglądają niektóre ikony z tych zestawów:

Mimo, że ikony te - ich nazwy, wielkości i cały schemat zaprojektowane zostały dla środowiska Gnome, znaleźć można wiele adaptacji, nawet pod Windows i na komórkę. W przypadku KDE/Plasma używam standardowego zestaw ikon o nazwie Ciemna Bryza, ale wszystkie aplikacje, które wyciągnąłem na pasek zadań aby je uruchamiać jednym kliknięciem nadal mam w postaci ikon typu Faenza. Ikony systemowe w schemacie Ciemna Bryza mają tę miłą cechę, że większość ikon w zasobniku systemowym (tray icons) jest monochromatyczna, co akurat dość elegancko wygląda. W managerach okien typu XFCE ten zestaw ikon także pracuje znakomicie. Wystarczy zainstalować pakiet o nazwie faenza-icon-theme.

Wskaźniki myszy

Jest jeden rodzaj strzałek, którego używam od roku '95!!! Jest to zestaw nazywający się oryginalnie Color-4 lub ColorWave, i stworzony do użytku w Windows 95 przez Erica Kobresa. Oryginalne kursory miały format ANI i zapisane były jako pliki RIFF. Zestaw pod Win95 możesz pobrać stąd. Przerobiłem wszystkie te kursory w GIMPie i używając odpowiedniego pluginu oraz programiku xcursorgen wygenerowałem sobie swoje własne animowane kursory pod Linuxa. Działają na X11 i na XOrg, z tego co widziałem, pokazują się też pod Waylandem. Miałem z nimi jednak problem, bo nie były widoczne podczas nagrywania ekranu za pomocą ffmpeg, zatem gdzieś mają jakiś błąd. Zrobiłem najpierw dokładną kopię (pixel do piksela) w rozmiarze 32x32, a potem 2x większe, dobre do monitorów 4K przy wysokim DPI, gdzie prezentują się całkiem świetnie. Oto pogląd tych kursów i pliki do pobrania:

Nie tylko ja korzystam z tych kursorów. Dowiedziałem się że jedna z moich znajomych, od czasu gdy mieszkaliśmy po sąsiedzku - także ich używa od wielu lat. Fajna sprawa, a kursory, gdy się do nich przyzwyczaić są dużo ładniejsze niż standardowe strzałki. Przydałoby się zrobić jeszcze lepszą wersję np. w rozmiarze 48x48 i dodać nieco więcej kursorów, ponieważ ten zestaw z roku 1995 ma ich niewiele. Systemy okien typu X11 które są w Linux, używają dość sporego bogactwa różnych kształtów kursora (więcej niż pod windoze), więc w temacie tych kursorów pozostaje wciąż sporo żmudnej pracy zrobienia. Gdyby to były kursory statyczne, nieanimowane, to ich wygenerowanie byłoby łatwe, i można byłoby zrobić za pomocą Inkscape oraz paru skryptów, np. tak jak tutaj: https://github.com/charakterziffer/cursor-toolbox. Znajdziesz tam nowoczesny sposób wygenerowania kursorów i całkiem niezłe uniwersalne zestawy gotowych kursorów.

Jak zainstalować taki kursor? To proste pod Linuxem. W swoim katalogu domowym zrób podkatalog .icons (jeżeli go tam jeszcze nie było). Taki katalog będzie "ukryty" dla domyślnych poleceń typu ls w konsoli. W środku rozpakuj plik archiwum z kursorem. Przypuśćmy, że powstanie nowy podkatalog o nazwie piotao-32x32. Upewnij się, że kursory są w tym podkatalogu, i że jest tam w środku również podkatalog cursors zawierający poszczególne pliki. U mnie cała ścieżka wygląda tak: .icons/piotao-32x32/cursors. Następnie w katalogu .icons zrób dowiązanie symboliczne do katalogu piotao-32x32 w którym trzymasz kursory, wpisując polecenie:

cd ~/.icons; ln -s piotao-32x32 default

Od tego momentu, po zalogowaniu się, Twój system okien będzie traktował kursor wskazywany przez link .icons/default jako kursor domyślny.

Ostatnia zmiana: 20240302, by Pio.