Instalace suckless dwm na FreeBSD
Published on: 2022-06-01
Úvod
Tento článek je stále pod vývojem. Ne všechny body jsou mi zcela jasné. Nicméně, už nyní zde najdete postup, který je možno úspěšně použít a bude vše fungovat.
Později bych rád doplnil i instalaci přes porty, ale nemám je ještě dostatečně zvládnuty a pro začátek si vystačíme s instalalcí předkompilovaných balíčků. Pokročilejší zvládnou instalaci pomocí portů i bez tohoto návodu.
Anglická verze zde nebo na konci článku. English version here or at bottom of this article.
Příprava
Instalace git
Program git
budeme potřebovat abychom byli schopni
stáhnout zdrojové kódu projektu dwm pomocí příkazu git clone
.
Zdrojové kódy lze stáhnout i jako .tar
soubory, ovšem při různých změnách
konfiguračních souborů se tyto změny lépe spravují pomocí git
hned od začátku.
To je čistě můj laický názor, který se může v budoucnu změnit.
$ sudo pkg install git
Instalace xorg
Program xorg
je open source X Window System, který poskytuje
grafické prostředí pro uživatele. Funguje na komunikaci
mezi XServer a XClient, kde XClient posílá požadavky typu, potřebuji
vykreslit takové okno apod. Xorg
neurčuje, jak co má vypadat, umístění
jednotlivých prvků jako tlačítka nebo způsob pohybu jendotlivých oken.
Tohle celé nechává na window managerech, jako je např. dwm
nebo na robustnějších desktop prostředích jako je GNOME nebo KDE.
Desktop prostředí už obsahuje i celé sady aplikací,
které jsou vytvořené přímo na dané prostředí.
U malých sítí nebo jednotlivých počítačích je většinou Xserver a XClient
na jednom počítači.
Níže uvedený příkaz nainstaluje i věci, které nejsou pro dwm
nutné.
Bohužel v tuto chvíli nejsem schopen s jistotou
říct, které balíčky jsou nutné a které nikoliv. Daní za instalaci celého
xorg
v tomto návodu je, že budete
mít nějaké balíčky navíc, což není hrůza, ale do budoucna
je dobré mít věci pod kontrolou a chci tuto část přepracovat, aby byla přesná.
$ sudo pkg install xorg
Instalace xorg
je součástí oficiální
Handbook pro FreeBSD,
kde naleznete další uvedené kroky.
Pokud xorg
instalujete na počítač, kde historicky už xorg
instalován
byl, je lepší resetovat konfigurační soubory
v domovském adresáři daného uživatele.
$ mv /etc/X11/xorg.conf ~/xorg.conf.etc
$ mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc
Dále je dobré přidat uživatale do skupiny wheel
nebo video
kvůli 3D akceleraci.
$ pw groupmod video -m jru || pw groupmod wheel -m jru
V tuto chvíli si můžete zapnout defaultní window manager TWM
,
který byl nainstalován také, pomocí příkazu:
$ startx
Pokud chcete TWM
window manager vypnout napište do terminálu exit
### Nastavení xorg
Tato kapitola se dodělává.
Instalace závislostí pro dwm
NEODZKOUŠENO
$ pkg install git xorg-server xorg-fonts-truetype gcr devel/glib20 \
xorg-fonts-type1 p5-X11-Xlib p5-PkgConfig xauth xrandr xinit libXft xrdb webkit2-gtk3 \
feh xf86-input-mouse xf86-input-keyboard linux-c7-libpng
Instalace suckless tools - dwm, dmenu, st
Podobný článek jako je tento je například zde
Nejdříve si uděláme složku, kde jednotlivé budeme mít uloženy zdrojáky jednotlivých nástrojů.
$ cd ~
$ mkdir .suckless_dwm
$ cd .suckless_dwm
Následně stáhneme všechny zdrojové kódy pomocí git clone
$ git clone https://git.suckless.org/dwm
$ git clone https://git.suckless.org/dmenu
$ git clone https://git.suckless.org/st
Instalace dwm
K instalaci jsem použil vlákno z FreeBSD fóra.
Přesuneme se do složky se zdrojovým kódem dwm
$ cd ~/.suckless_dwm/dwm
Poté musíme upravit konfigurační soubour ~/.suckless_dwm/dwm/config.mk
$ vim `~/.suckless_dwm/dwm/config.mk`
V souboru config.mk
je nutno provést tyto změny:
X11INC = /usr/X11R6/include -> X11INC = /usr/local/include
X11LIB = /usr/X11R6/lib -> X11LIB = /usr/local/lib
FREETYPEINC = /usr/include/freetype2 -> FREETYPEINC = /usr/local/include/freetype2
Nakonec provedeme samotnou instalaci
$ cd ~/.suckless_dwm/dwm
$ make
$ sudo make clean install
Zde bych rád vysvětlit posloupnost jednotlivých příkazů, které nemusí být začátečníkovi, který nemá zkušenost s kompilací hned zřejmé. Vycházím z tohoto vlákna na stackoverflow.
První make
je ve skutečnosti zkratka pro make all
a udělá build systému,
který se může skládat z několika různých kroků, které si autor nastaví.
Většinou tento příkaz není potřeba dělat, protože projekty jsou většinou
vytvořeny tak, že fungují správně i když zadáte samotný příkaz make install
.
Ale pro jistotu je vždy lepší udělat tento mezikrok.
make clean install
- už přímo instaluje požadované věci do systému. clean
většinou odstraní soubory o kterých se ví, že nahradí při instalaci novými.
Posledním bodem je vytvoření souboru .xinitrc
$ echo "exec dwm" >> ~/.xinitrc
nebo celou cestu
$ echo "exec /usr/local/bin/dwm" >> ~/.xinitrc
Teď když zadáme příkaz startx
, tak se nám už místo defaultního TWM
spustí dwm
.
Instalace dmenu
Instalace je skoro totožná jako v případě dwm
.
Přesuneme se do složky se zdrojovým kódem dmenu
$ cd ~/.suckless_dwm/dmenu
Poté musíme upravit konfigurační soubour ~/.suckless_dwm/dmenu/config.mk
$ vim `~/.suckless_dwm/dmenu/config.mk`
V souboru config.mk
je nutno provést tyto změny:
X11INC = /usr/X11R6/include -> X11INC = /usr/local/include
X11LIB = /usr/X11R6/lib -> X11LIB = /usr/local/lib
FREETYPEINC = /usr/include/freetype2 -> FREETYPEINC = /usr/local/include/freetype2
Nakonec provedeme samotnou instalaci
$ cd ~/.suckless_dwm/dmenu
$ make
$ sudo make clean install
Instalace st
Instalace je skoro totožná jako v případě dwm
a dmenu
.
Přesuneme se do složky se zdrojovým kódem st
$ cd ~/.suckless_dwm/st
Poté musíme upravit konfigurační soubour ~/.suckless_dwm/st/config.mk
$ vim `~/.suckless_dwm/st/config.mk`
V souboru config.mk
je nutno provést tyto změny:
X11INC = /usr/X11R6/include -> X11INC = /usr/local/include
X11LIB = /usr/X11R6/lib -> X11LIB = /usr/local/lib
tímto řadkem si nejsem jistý
FREETYPEINC = /usr/include/freetype2 -> FREETYPEINC = /usr/local/include/freetype2
Namísto FREETYPEINC
zkus najít PKG_CONFIG
a jeho hodnotu změň na:
PKG_CONFIG=/usr/local/bin/pkg-config
Nakonec provedeme samotnou instalaci
$ cd ~/.suckless_dwm/dmenu
$ make
$ sudo make clean install
Zde byste měli dostat chybu něco jako:
tic -sx st.info
Error: exec(tic) file not found
Tímto problémem se zabývá toto vlákno, které jsem v zásadě použil i pro vyřešení tohoto problému.
Musíme nainstalovat ncurses
, čímž získáme tic
.
$ sudo pkg install ncurses
Instalace by měla automaticky nalézt i závislost term-db
Po těchto krocích už instalace projde bez errorů. Nicméně je nutné ji ještě prozkoumat a zanalyzovat.
Jak používat dwm
- https://dwm.suckless.org/tutorial/
- https://srobb.net/dwm.html