10 Simple Terminal (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

De vorige keer heb ik beloofd iets te vertellen over st, de ‘Simple Terminal’ van Suckless en de logische keus om te gebruiken met DWM. St is volgens dezelfde principes geschreven als DWM, je krijgt het minimale en als je meer functies wilt moet je dat zelf toevoegen.

Ook de configuratie is weer in de code en je moet het programma compileren om je instellingen toe te kunnen passen. Nu hoef ik meestal niet veel aan een terminal te veranderen, beetje kleuren aanpassen en misschien het lettertype dus dat zal niet veel problemen opleveren.

Als ik zeg dat je met st een minimale terminal krijgt, dan is dat zacht uitgedrukt. Allerlei dingen die we normaal voor lief nemen zijn niet aanwezig. Zo kun je niet terug scrollen. Dat is best wel lastig en daar moet ik wat aan doen. Verder is het lettertype absurt klein. Blijkbaar is het programma ontwikkeld in een tijd dat een 8px font nog goed leesbaar was op de toemalige monitoren. op mijn 1080p monitor is het wel erg klein. Tenslotte wil ik een beetje doorzichtigheid hebben om mijn mooie desktop behang een beetje te kunnen zien. Ik heb niet voor niets een compositor geinstalleerd eerder in dit project.

Allereerst het lettertype. Dit is gemakkelijk gefixed. In het begin van de config.def.h staat een regel waar de fontgrootte staat. Deze staat op 12, ik heb hem naar 14 gezet. De regel die begint met ‘//’ is de oude regel. ‘//’ aan het begin van een regel in C betekent dat de regel genegeerd kan worden tijdens het bouwen.

// static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
static char *font = "Liberation Mono:pixelsize=14:antialias=true:autohint=true";

Om scrollen mogelijk te maken moet ik 2 patches installeren, namelijk st-scrollback-20200419 en st-scrollback-mouse-20191024. De eerste zorgt ervoor dat er gescrolled kan worden en de tweede dat je dat met het scrolwiel van de muis kunt doen. Het werkt wel alleen als je daarbij ook de super toets indrukt. De patches moeten ook in de juiste volgorde aangebracht worden, eerst de scrol-patch, daarna pas die van de muis:

patch -Np1 -i st-scrollback-20200419-72e3f6c.diff
patch -Np1 -i st-scrollback-mouse-20191024-a2c479c.diff

Een tweede irritante eigenschap van st is dat de grootte van het venser geschaald wordt naar de lettergrootte. Als je een font van 8 pixels gebruikt schaalt het venster dus met stapjes van 8 pixels. Hierdoor krijg je rare dingen, kijk b.v. naar de volgende screenshot, waarbij het linker venster een andere lengte heeft dan de ‘stack aan de rechter kant en de vensters ook niet het hele scherm vullen:

2020_06_03_20_39_06

Om dit te fixen heb je de patch ‘st-anysize’. Ten slotte heb ik de alpha patch geinstalleerd. Deze zorgt samen met de eerder geinstalleerde compositor picom voor wat transparantie. Ik heb wel de alphawaarde van 0.8 naar 0.9 gezet, want te veel transparantie maakt voro mij het scherm onleesbaar.

Zie hieronder een screenshot met st zoals het standaard komt (rechts) en mijn gepatchte versie (links). Voor mij werkt het voorlopig goed zo.

2020_06_03_20_48_41

 

 

 

09. Tussenbalans (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

Ik wilde hier even een pauze inlassen en even kijken naar mijn gebruikservaring met DWM. Dit zijn natuurlijk mijn eigen meningen en indrukken. Ik ben zelf al wat verder met het configureren van de suckless tools dan waar we in de blog gebleven zijn. Met name st heb ik geconfigureerd, want ik vindt dat de default werking van st niet heel bruikbaar is. Ik denk dat ik hier later nog een blogpost over zal maken.

DWM vs XFCE

Ik denk dat het al wel duidelijk is dat ik een sterke voorkeur voor tiling windows managers heb. Allereerst heeft het authistisch deel van mijn hersenen een groot probleem met de ongeordende chaos van willekeurig over elkaar liggende vensters in een ‘stacking windowsmanager’ (zoals Gnome, KDE, XFCE, maar ook Windows) en is de geordende wereld van netjes naast elkaar liggende windows in een tiling wm een verademing.

Verder, Hoewel XFCE een relatief lichte desktop is, is het niet te vergelijken met DWM. Er is zo’n 200 mb verschil in RAM gebruik en XFCE heeft allerlei tools die ik niet nodig heb. Natuurlijk is dit voor Gnome en KDE nog veel erger. Dat gezegd hebbende, ben ik blij dat ik XFCE wel geinstalleerd heb naast DWM. Allerlei dingen die ik wel nodig heb hoef ik nu niet te configureren. Denk daarbij b.v. aan desktop notificaties e.d. die nu out-of-the-box door XFCE worden verzorgd, zelfs in DWM.

DWM vs I3WM

Het verschil tussen DWM en I3WM ligt voornamelijk in het feit dat DWM dynamisch is, d.w.z. de venster layout voor je doet, terwijl je bij I3WM zelf moet aangeven waar een venster geopend moet worden. Nu ben ik al aan de DWM methode gewend vanwege mijn eerdere gebruik van AwesomeWM, maar eerst was ik daar sceptisch over. Toch went het snel en heeft dynamisch nu mijn voorkeur over de I3WM methode. Ook hier voelt DWM/AwesomeWM weer net iets geordend en is er weer iets minder voor mij om over na te denken. De vensters worden automatisch geplaatst.

DWM vs AwesomeWM

Dit is denk ik de meest interessante vergelijking. AwesomeWM begon ooit eens als een fork van DWM. De gebruikerservaring is dan ook erg vergelijkbaar. Veel toetsencombinaties zijn hetzelfde. DWM heeft veel minder layouts, maar dat vindt ik eigelijk een voordeel. Veel van de layouts in AwesomeWM zijn in mijn ogen volslagen nutteloos. Ook in AwesomeWM gebruik ik meestal maar 2 tot 3 layouts.

Bij AwesomeWM wissel je van layout door door een lijst heen te cyclen. In DWM heeft elke layout een eigen toetsencombinatie. Ik merk dat ik dit laatste fijner vindt. Je kan heel snel naar de juiste layout. Bij Awesome is het  wel logisch dat ze voor het cylen hebben gekozen, omdat ze op die manier veel meer layouts kunnen aanbieden, maar zoals gezegd gebruik ik er toch al niet zoveel en dan valt dat voordeel weg.

Awesome heeft nog een paar vreemde dingen. Zo kun je een venster schermvullend maken. Dit heeft wel een vreemde bijwerking. De andere vensters op de betreffende desktop blijven hetzelfde in grootte en positie, waardoor je hele rare effecten krijgt als je een van de andere vensters activeert. Die komt dan op een of andere manier boven op het gemaximaliseerde venster te liggen. Bij DWM schakel je gewoon naar de ‘monocle’ modus, waarbij alle vensters schermvullend worden. natuurlijk kan dit ook met AwesomeWM, maar dan moet je weer door de layout-lijst heenlopen. In AwesomeWM kun je wel een venster full-screen zetten. Ook dat kan niet in DWM, al kun je bijna hetzelfde effect bereiken door naar de ‘monocle’ modus te schakelen en de toolbar te verbergen met de Super-b toetsencombinatie.

Een groot voordeel van AwesomeWM t.o.v. DWM vindt ik de applicatie starter. Awesome heeft een applicatie starter die ook de executables in categorieeen aanbiedt, zoals je ook gewend bent in XFCE. Dat is wel heel fijn als je niet precies weet hoe een programma heet. In dmenu krijg je gewoon een lange, alfabetisch gesorteerde lijst en kun je soms lang zoeken voordat je het juiste programma hebt gevonden.

Ik wil hier nog even wat kwijt over het configureren. Het feit dat DWM echt minimalistisch is heeft zo zijn voordelen. In AwesomeWM is de standaard configuratie file ruim 500 regels lang, bij DWM zo’n 100. Ik vindt het veel gemakkelijker om te zoeken in de config.def.h van DWM dan in de file van Awesome. Ook is de C-syntax veel overzichtelijker voor mij dan de Lua syntax in AwesomeWM. Een van de reden dat de AwsomeWM config zoveel groter is is natuurlijk dat je met Awesome veel meer functionaliteit krijgt out of the box. Maar eigelijk vindt ik de DWM manier beter. In plaats van weghalen wat niet van toepassing is, voeg ik bij DWM toe wat wel van toepassing is. Het gevolg is dat ik bij DWM veel meer het gevoel heb dat ik weet wat ik allemaal kan. Het voelt veel gerichter en meer ‘eigen’.

Uiteindelijk bleek het gebrek aan een losse config file niet echt het probleem te zijn dat ik vreesde. Door het op de goede manier op te zetten kan ik nu bijna net zo snel de configuratie van DWM aanpassen, bouwen en herstarten als dat ik dat bij AwesomeWM kan. Toegegeven, door het patch systeem is het aanpassen van DWM nog steeds een langer proces dan bij AwesomeWM, maar nu ik dat redelijk heb uitgevoerd werkt DWM eigelijk net zo fijn als AwesomeWM. Uiteindelijk denk ik dat er geen duidelijke voordelen voor een van beide methoden van configuratie zijn. Het is gewoon waar je je het prettigst bij voelt.

Conclusie, na configuratie is de gebruikservaring met AwesomeWM of DWM vrijwel gelijk en ik zie niet echt een reden waarom je de een boven de ander zou stellen. Ik voel me nu met beiden comfortabel. Ik denk dat ik voor de lol voorlopig op DWM blijf.

Volgende keer: mijn aanpassingen aan de terminal emulator st.

08. Een afsluit menu (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

Hoog tijd voor het volgende probleem.

Om nu de laptop uit te kunnen zetten kan ik de toetsencombinatie Supet+Shift+X gebruiken (zie mijn ingestelde key-bindings eerder). DWM sluit dan af en ik kom in het inlogscherm terecht. Daar is dan een knop om de computer af te sluiten. Nu is dit natuurlijk niet zo handig. De meeste desktops, Gnome, KDE, of zelfs Windows, geven je de mogelijkheid om te kiezen wat je wilt, of je de computer wilt afsluiten, herstarten of alleen maar wilt uitloggen uit de dektop omgeving. Ik wil ook zoiets maken.

Nu heb ik al de perfecte tool hiervoor, namelijk dmenu. Dmenu is vooral bekend als applicatie starter, maar het kan veel meer. Of eigelijk ook weer niet. In de basis is dmenu heel simpel en kan het maar een ding, maar door is het heel veelzijdig. Klinkt tegenstrijdig, niet?

Wat dmenu eigenlijk doet is het volgende. Je kan het een lijst van woorden geven, waar de gebruiker dan een van kan selecteren. De selectie wordt vervolgens naar, wat ze in Linux noemen, de ‘standaard out’ gestuurd. Als je dmenu vanuit de commandline zou starten, zou het na gerunt te hebben de keuze gewoon in de commandline printen. Als we dmenu echter in een scriptje aanroepen, kunnen we de keuze opvangen en weer gebruiken in het volgende commando in het scriptje en dat ga ik gebruiken. Klinkt dit te ingewikkeld, lees dan gewoon verder, ik hoop dat het met dit voorbeeld duidelijk wordt.

Ik wil aan de gebruiker dus 3 keuzes aanbieden via dmenu. En daarna moet een van de volgende acties uitgevoerd worden:

  • uitloggen
  • herstarten
  • uitzetten

Laten we eerst kijken welke commando’s dit zouden kunnen. Om uit te loggen kan ik gewoon het proces van DWM stoppen. Linux/Bash heeft daarvoor het commando ‘killall’ met als variable de naam van het proces, dus in dit geval ‘killall dwm’. Als je dat in de commandline uitvoert, kom je vanzelf bij het inlogscherm, probeer maar.

Voor de overige 2 commando’s kunnen we systemctl gebruiken. Het gaat hier nu te ver om uit te leggen wat systemctl is, maar re kunt herstarten met ‘systemctl reboot’ en de computer uitzetten met ‘systemctl poweroff’. Klinkt verij logisch vind ik. Ik denk dat dit in Xubuntu hetzelfde is, aangezien zowel Manjaro als Xubuntu systemctl gebruiken.

Dmenu heeft als input een lijst van woorden nodig, gescheiden door een regeleinde. In bash wordt een regeleinde ook wel aangeduidt met de tekst ‘\n’. Ik kom op het volgende scriptje:

#!/usr/bin/env bash

# eerst het lijstje maken, let op de \n
action_list="logout\nreboot\npoweroff"

# nu de lijst aan dmenu voeden en dmenu uitvoeren
# de keuze komt in de variable 'action' 
action=$(echo -e $action_list | dmenu "$@" )

# nu bepalen wat te doen aan de hand van de waarde in 
# variable $action
case $action in
  logout)  # als logout gekozen
    killall dwm ;; # zie hierboven
  reboot) # reboot gekozen?
    systemctl reboot;; # zie hierboven
  poweroff)
    systemctl poweroff ;;
esac # einde van keuzes

Bovenstaande scriptje kopieer ik met sudo naar /usr/local/bin/owndwm_close_menu.sh

Nu nog een keybinding toevoegen aan dwm. Ik heb al eerder beschreven hoe je keybindings maakt in DWM. In de config.def.h maak ik de volgende regels aan:

...
static const char *shutdowncmd[] = { "/usr/local/bin/own_close_menu.sh" };
...
static Key keys[] = {
  ...    { MODKEY|ControlMask, XK_x, spawn, {.v = shutdowncmd } },
  ...}

Als ik nu de toetsencombinatie Super+Ctrl+x gebruik krijg ik het dmenu te zien met de drie opties.

closemenu

 

Dmenu is echt een geweldige tool, zo simpel en je kunt er zoveel mee.

 

07. Geluid veranderen (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

De ‘desktop’ met DWM begint steeds meer bruikbaar te worden. Ik wil nu de volgende irritatie oplossen.

Als ik het geluid harder of zachter (of uit) wil zetten, heb ik daar geen handige methode voor. Op dit moment moet ik Super+D doen om DMenu tevoorschijn te toveren en dan ‘pavu’ in tikken om het ‘pavucontrol’ te starten. Maar op mijn keyboard zitten harder- en zachter toetsen. Die werken nu niet. Ik moet hier dus een keybinding voor verzinnen.

Eerst dus uitzoeken hoe ik het geluid kan regelen vanaf de commandline, dan kan ik dus voor die commando’s keybindings maken. Het blijkt dat in het geval van PulseAudio, zoals bij mij het geluid te regelen is met de volgende commando’s:

$ amixer -D pulse sset Master 1+ toggle  # zet geluid aan/uit
$ amixer -D pulse sset Master 5%-  # geluid 5% zachter
$ amixer -D pulse sset Master 5%+  # geluid 5% harder.

In de config.def.h maak ik de volgende veranderingen.

static const char *voldimcmd[] = { "amixer", "-D", "pulse", "sset", "Master", "1+", "toggle" };
static const char *volmincmd[] = { "amixer", "-D", "pulse", "sset", "Master", "5%-" };
static const char *volmaxcmd[] = { "amixer", "-D", "pulse", "sset", "Master", "5%+" };
...
static Key keys[] = {
   ...
    { 0,                            XK_F6,     spawn,          {.v = voldimcmd } },
    { 0,                            XK_F7,     spawn,          {.v = volmincmd } },
    { 0,                            XK_F8,     spawn,          {.v = volmaxcmd } },
   ...
};

De 0 in de Key regels is om de fn-toets tekunnen gebruiken in combinatie met F6,F7 en F8, de toetsten die bij mijn computer bedoeld zijn om het geluid te regelen.

Na opnieuw bouwen werkt dit bij mij prima. Een probleem is nog dat ik niet kan zien of het geluid aan of uit staat. Na een beetje onderzoek heb ik besloten om een sys-tray applet te installeren voor Pulse Audio. Daarvoor heb ik pasystray geinstalleerd.

$ sudo pacman -S pasystray
$ sudo apt install pasystray

Deze moet vervolgens gestart worden met DWM, dus maak ik de volgende toevoeging aan het bestand ~/.dwm/autostart.sh:

pgrep -u $USER -x pasystray > /dev/null || (pasystray &)

Nu heb ik een icoontje in de systray die aangeeft of het geluid aan- of uit staat en kan ik eventueel ook het geluidsniveau regelen met de muis.

2020_06_03_21_15_13

Volgende keer ga ik een shutdown-menu maken met Dmenu met de keuze van uitloggen. herstarten en uitzetten.

06. Een klok (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

De balk is nog wat kaal, zo mis ik vooral een klok met datum. DWM heeft geen klok van zichzelf.

Er zijn verschillende methoden om dit toe te voegen. De tekst ‘dwm-6.2’ is eigelijk de naam van wat in de XServer het ‘root’ venster wordt genoemd. Dit is eigelijk het oppervlakte waar X alles op tekent. Als je dus die naam veranderd in je eigen tekst, dan komt dat dus in de balk. We moeten dus een scriptje maken die regelmatig de datum+tijd kopieert naar de naam van het root-venster en we moeten een manier verzinnen om dit automatisch te starten. Dit laatste hoeft niet moeilijk te zijn. Ik heb al eerder een startscript gemaakt voor DWM dat de windowmanager herstart als ik de configuratie heb aangepast. Als ik daarin wat commando’s zet voordat DWM gestart wordt, dan zou dat moeten werken. De andere mogelijkheid is de patch autostart die ik de vorige keer heb toegevoegd aan DWM. Dan kan ik zelfs per gebruiker regelen wat ik automatisch wil starten.

De eerste vraag is natuurlijk hoe je de titel van het root-venster kunt aanpassen. Dat kan met het commando xsetroot. Het kan zijn dat je dat moet installeren, de commando’s voor Manjaro en Xubuntu zijn :

$ sudo pacman -S xorg-xsetroot  # commando voor Manjaro/Arch
$ sudo apt install x11-server-utils # Xubuntu/Debian

Je kunt nu gemakkelijk de tekst dwm-6.2 vervangen door je eigen tekst, type maar eens

$ xsetroot -name "Dit is mijn tekst"

Je ziet de tekst veranderen in “Dit is mijn tekst”. Hier kunnen we nu gebruik van maken. Ik ga dus gebruik maken van de autostart patch. Ik moet dan een bestand aanmaken in mijn home: .dwm/autostart.sh.

$ mkdir ~/.dwm

In die map maak ik dus het tekst bestand autostart.sh met daarin de volgende tekst:

#!/bin/bash
while true; do  # start de loop die oneindig doorgaat
  xsetroot -name "$( date +"%a %d %b %H:%M")"
  sleep 1m # een keer per minuut updaten is genoeg
done &

Bovenstaande code geeft de datum en tijd in de balk en update dat elke minuut. Sneller hoeft voor mij niet omdat ik geen seconden wil weergeven en dit belast het systeem zo min mogelijk.

Nu we toch bezig zijn met autostart, wil ik nog wat meer dingen starten. Ik wil een achtergrond zetten. Hiervoor zijn ook weer verschillende mogelijkheden, maar ik gebruik hier het programma nitrogen.

$ sudo pacman -S nitrogen # voor manjaro$ sudo apt install nitrogen # voor Xubuntu

Nitrogen kom ik later op terug. Een compositor is ook handig, Zonder zo’n compositor kun je geen speciale effecten hebben zoals schaduw en transparantie voor de vensters. Nou ben ik dar niet heel erg in geinteresseerd, maar ook zorgt een compositor ervoor dat de beeldafhandeling vloeiender wordt. Vorger gebruikte ik altijd compton, maar die schijnt vervangen te zijn door picom. Ook dit moet geinstalleerd worden. Volgens mij zit picom nog niet in de Ubuntu repo, dus daar moet compton geinstalleerd worden.

$ sudo pacman -S picom # manjaro
$ sudo apt install compton # Xubuntu

Als laatste wil ik ook nog de applet van networkmanager in de systray. Daarvoor moet ik nm-applet installeren. Volgens mij is deze automatisch geinstalleerd in Xubuntu, maar dat weet ik niet zeker.

$ sudo pacman -S nm-applet  # voor Manjaro

Mijn autostart.sh ziet er nu als volgt uit:

#!/bin/bash
# installeren of comptom
picom &
# XFCE nodig of installeren
xfce4-power-manager > /dev/null
# nitrogen voor wallpaper
nitrogen --restore &
# network applet starten
# het pgrep commando is om ervoor te zorgen dat de applet
# niet meerdere keren opgestart wordt als DWM wordt gerestart.
pgrep -u $USER -x nm-applet > /dev/null || (nm-applet &)
# de klok en datum
while true; do 
	xsetroot -name "$( date +"%a %d %b %H:%M" )"; 
	sleep 1m; # update elke minuut
done &

# Mijn eigen voorkeur: remap capslock naar escape. 
xmodmap -e 'clear Lock'
xmodmap -e 'keycode 0x42=Escape'

Zie hier, nitrogen bij de klok en systray van mijn systeem:

2020_06_03_21_18_54

05. Patching (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

Het belangrijkste aan de Suckless filosofie is dat een programma minimaal moet zijn en zo eenvoudig mogelijk. Een programma moet echt het minimum aan functies hebben om het bruikbaar te maken. Mensen kunnen zelf kiezen welke functionaliteiten ze nog meer in het programma willen hebben en moeten die zelf toepassen. Dit is erg handig voor de ontwikkelaars. Ze kunnen de code klein en eenvoudig houden. Ze hoeven ook niet rekening te houden met elke gril van een willekeurige gebruiker, omdat die gebruiker zelf zijn functionaliteit kan schrijven. ALs hij een ervaren C programmeur is moet hij gemakkelijk de bestaande code kunnen gebruiken en wijzigingen aanbrengen. Probleem is alleen dat de meeste mensen niet ervaren zijn met programmeren in C. Ikzelf heb ook maar beperkt ervaring met die taal en ben zeker niet in staat om DWM uit te breiden. Daar hebben ze het patching systeem voor bedacht. Dit is geen uitvinding van Suckless zelf, de ontwikeling van de Linux kernel geburt namelijk ook op die manier, maar ze hebben het wel integraal gemaakt in hun systeem.

Wat is een patch? Een programmeur breidt het programma uit. Als hij tevreden is vergelijkt hij zijn code met de oorspronkelijke code. Van de verschillen maakt hij een tekst file die al die verschillen beschrijft. Zo’n file noemen we een patch. Je kan namelijk zo’n file gebruiken om de originele code uit te breiden met de code die de programmeur had aangebracht. En zo heb je dus zijn functie aan jouw versie van de code toegevoegd. Het patch commando herkent de plekken waar de code neergezet wordt omdat in het bestand beschreven is welke regels er voor- en na de verandering komen. Hierdoor hoeft het bestand dat gepatched wordt niet exact gelijk op de regel gelijk te zijn aan het oorspronkelijke bestand. Er is echter een gevaar. Als de herkenningszinnen veranderd zijn voordat de patch wordt toegepast, kan de juiste plek niet gevonden worden. Dan faalt het patchen van DWM. Hieruit blijkt dus dat je wel kan patchen, maar zoveel te meer patches je toepast, zoveel te meer kans op een falende patch.

Ik ga een aantal dingen toevoegen. Ik wil in eerste instantie graag een systray. Die is nu niet aanwezig in DWM. Verder zou ik graag een klok en eventueel meer info in de balk willen hebben. Ik zou ook graag willen regelen dat een aantal programma’s automatisch opstarten bij het starten van DWM. Denk hieraan bij aan een programma voor powermanagement, de network manager etc. Ten slotte voor het mooie (het oog wil ook wat) wil ik wel gaps hebben. Dit is ruimte tussen de verschillende vensters, zodat ze beter herkent kunnen worden. Het is meer een persoonlijke voorkeur. En alse we toch met uiterlijk bezig zijn zou ik die Manjaro achtergrond wel willen vervangen. Dat laatste gaat zeker niet met een patch, dus ook daar moet ik later wat anders voor verzinnen.

Patches zijn te vinden op https://suckless.org. Er blijkt geen patch te zijn voor een klok, daar moet ik iets anders voor verzinnen. Wel voor een systray, gaps en autostart. Het is altijd zaak om de laatste patch te nemen, die is meestal gebaseerd op de juiste versie van DWM. Met curl download ik de volgende patches:

$ curl https://dwm.suckless.org/patches/systray/dwm-systray-6.2.diff --output dwm-systray-6.2.diff
$ curl https://dwm.suckless.org/patches/fullgaps/dwm-fullgaps-6.2.diff --output dwm-fullgaps-6.2.diff
$ curl https://dwm.suckless.org/patches/autostart/dwm-autostart-20161205-bb3bd6f.diff --output dwm-autostart-20161205-bb3bd6f.diff

Nu moeten we ze toepassen:

$ patch -Np1 -i ../patches/dwm-systray-6.2.diff
$ patch -Np1 -i ../patches/dwm-fullgaps-6.2.diff
$ patch -Np1 -i ../patches/dwm-autostart-20161205-bb3bd6f.diff

DWM met grote gaps:

2020_05_18_20_25_24

 

Gelukkig werken alle patches zonder problemen. Nog toevoegen aan git met gitadd en git commit en bouwen maar. Bij opnieuw opstarten kan ik de ruimte tussen de vensters groter en kleiner maken met Super + = en Super + -. Ik zie geen systray. Dat komt omdat ik eerst nog iets moet starten met de autostart. Dat is een mooi onderwerp voor de volgende blog. In die blog zal ik ook een klok maken voor in de balk.

04. Configuratie, keybindings (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

Tot nu toe was het niet ingewikkeld. Maar mijn eerdere test met DWM heeft me geleerd dat je gewoon ooit zo maar ergens mee kunt beginnen. Alles heeft voorbereiding nodig, zo ook simpel configureren.

Configuratie vn DWM is heel anders bij andere window managers. Volgens suckless filesofie is een apart config bestand niet handig, want het kost extra code om dit soort bestanden te kunnen lezen wat de code ingewikkelder maakt. Configuratie moet volgens hen altijd in de code.

Nu is er behoorlijk wat kritiek op deze methodiek en het is zeker niet zonder problemen. De belangrijkste kritiek is op het feit dat je moet bouwen na het veranderen van een configuratie. Bij Awesomewm kan ik een extern config bestand aanpassen, met een toetsencombinatie kan ik dan snel Awesomewm herstarten en direkt de gevolgen van mijn verandering testen. Zo niet bij DWM. Als ik wat verander moet ik opnieuw bouwen, want een nieuwe versie van DWM tot gevolg heeft. Nu is dat bouwen best snel, enkele seconden op mijn laptop, maar hierna moet ik uitloggen en weer opnieuw inloggen in DWM om de verandering te zien. Hoewel alles best snel gaat begint dit na een aantal veranderingen snel te vervelen. De kleinste verandering heeft een hele reeks van handelingen tot gevolg en ook worden alle programma’s die ik open had staan ook weer afgesloten..

Gelukkig biedt de Arch wiki van DWM uitkomst. Er is een weg omheen. Je kunt vanuit een bash script starten, waarbij DWM in een loop gestart wordt. Na een config verandering kun je dan de toetsencombinatie voor afsluiten van DWM gebruiken (Alt+Shift+q in de default instellingen) en de loop start dan weer een nieuwe instantie van DWM op met je nieuwe code. Dit gebeurt zonder dat de X-server wordt afgesloten, dus alle programma’s die je open hebt staan zullen gewoon nog steeds draaien.

Om dit te doen moeten we dus een scriptje maken. Ik maak hiervoor een nieuw mapje in mijn suckles map, scripts genaamd. Hierin maak in een tekst bestand mydwm_start.sh genaamd.

Het script krijgt de volgende inhoud:

#!/bin/bash
# herstart DWM als de binary veranderd, anders stop DWM
csum=$(sha1sum $(which dwm)) # bereken de originele shasum van dwm bij starten
new_csum=""
while true
do
    if [ "$csum" != "$new_csum" ] # eerste keer is de nieuwe sha1sum altijd anders dan de originele
    then 
        # als de oude en de nieuwe sh1sum verschillend zijn dan start dmw op
        csum=$new_csum # de oude sh1sum is nu de nieuwe sha1 sum
        # redirect output naar niets, hierdoor geen volle log bestanden
        dwm /dev/null 2>&1 
    else
        # als er niets veranderd is, gewoon stoppen.
        exit 0 
    fi
    new_csum=$(sha1sum $(which dwm)) # bereken de nieuwe sha1 checksum.
    sleep 0.5 # Wacht altijd een halve seconde voor je opnieuw opstart
done

Dit script maakt een soort vingerafdruk van het dwm bestand. Dat wordt gedaan door een checksum te berekenen, in dit geval van het type sha1. Elke keer als je DWM afsluit wordt deze checksum opnieuw berekend en vergeleken met de oude. Zijn ze verschillend dan is het bestand veranderd en wordt de nieuwe DWM versie opnieuw gestart. Zijn ze gelijk dan stopt het script en kom ik weer in de login pagina.

Bovenstaande script kopieer ik naar de de map /usr/local/bin

$ sudo cp mydwm_start.sh /usr/local/bin

Vervolgens moet ik de dwm.desktop file nog aanpassen die ik in het vorige blog heb aangemaakt. Die staat in /usr/share/xsessions/dwm.desktop

De regel ‘Exec=/usr/local/bin/dwm’ moet worden veranderd in ‘Exec=/bin/bash /usr/local/bin/mydwm_start.sh’. De inhoud wordt dus:

[Desktop Entry]
Encoding=UTF-8
Name=dwm
Commant=dwm window manager
Exec=/bin/bash /usr/local/bin/mydwm_start.sh
Type=Application

Zo dat was dat. Nu kunnen we dwm gaan configureren. Hier zit nog een addertje onder het gras en dit is iets wat ik moeilijk vind om simpel uit te leggen. Het gaat om het volgende. Suckless programma’s hebben twee config bestanden. Allereerst heb je de config.def.h. Hierin staan alle default settings. Als je gaat bouwen wordt er gekeken of er een config.h bestand is en indien dat niet zo is, wordt deze aangemaakt door het config.def.h bestand te kopieren. Het is de bedoeling dat je je eigen settings insteld in het config.h bestand en het config.def.h bestand laat voor wat het is. Nu klinkt dit best redelijk, maar er is een probleem en dat is het patching systeem van suckless. Als je funcites wilt toevoegen aan DWM moet je de code patchen. Dit is een systeem waarbij de code automatisch wordt veranderd. Deze negeren echter de config.h file. Het is dus heel lastig om die veranderingen door te voeren naar je config.h file, je kan dat alleen handmatig doen. Erg foutgevoelig en ik wil niet steeds mijn eigen settings opnieuw invoeren als ik een patch toe voeg. Ik hoop dat dit te volgen is. E.e.a. wordt denk ik duidelijker als we daadwerkelijk gaan patchen.

Ik ga dus de config.def.h file aanpassen. Voorwaarde is wel dat alle bestanden die tijdens de build worden gemaakt opgeruimd worden. De veranderingen die ik aanbreng in het bestand leg ik vast in git.

Nu kunnen we eindelijk gaan configureren. Ik open dus het config.def.h bestand in mijn teksteditor (ik gebruik vim). Allereerst wil ik de mod-key veranderen van Alt naar de Super (Windows) toets. Hiervoor zoeken we de regel ‘#define MODKEY Mod1Mask’ en veranderen de 1 in een 4, dus ‘#define MODKEY Mod4Mask’ en slaan het bestand op. We kunnen dit nu eerst testen door te bouwen en de Alt+Shift+q key combinatie te gebruiken:

$ sudo make clean install
$ git clean -f # dit verwijdert de tijdelijke bouw-bestanden

Na Alt+Shift+q start DWM opnieuw op en zowaar, nu moet ik de terminal starten met Super+Shift+Enter in plaats van de Alt toets.

Ik ga dit eerst maar eens vastleggen in git. Ik ga weer terug naar de dwm-6.2 map en type de volgende opdrachen:

$ git add config.def.h
$ git commit -m 'Alt naar super'

Er zijn nog wat dingen die mij irriteren. Komende van I3 wil ik de toetsencombinatie van de applicatie launcher graag veranderen naar Super+d. Ook wil ik graag vensters sluiten met Super+Shift+q, wat weer betekent dat ik het afsluiten van DWM weer met een andere toetsencombinatie moet gaan doen. Om dit te veranderen ga je naar het stuk in config.def.h dat begint met ‘static Key keys[] = {‘. Ik zet hieronder wat ik ervan gemaakt heb. De regels die ik veranderd heb heb ik aangegeven.

static Key keys[] = {
	/* modifier                     key        function        argument */
	{ MODKEY,                       XK_d,      spawn,          {.v = dmenucmd } }, // veranderd
	{ MODKEY,                       XK_Return, spawn,          {.v = termcmd } }, //veranderd
	{ MODKEY,                       XK_b,      togglebar,      {0} },
	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
	{ MODKEY|ShiftMask,             XK_i,      incnmaster,     {.i = +1 } },// veranderd
	{ MODKEY|ShiftMask,             XK_d,      incnmaster,     {.i = -1 } }, // veranderd
	{ MODKEY,                       XK_h,      setmfact,       {.f = -0.05} },
	{ MODKEY,                       XK_l,      setmfact,       {.f = +0.05} },
	{ MODKEY|ShiftMask,             XK_Return, zoom,           {0} }, // veranderd
	{ MODKEY,                       XK_Tab,    view,           {0} },
	{ MODKEY|ShiftMask,             XK_q,      killclient,     {0} }, // veranderd
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
	{ MODKEY,                       XK_space,  setlayout,      {0} },
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
	{ MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } },
	{ MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } },
	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
	TAGKEYS(                        XK_1,                      0)
	TAGKEYS(                        XK_2,                      1)
	TAGKEYS(                        XK_3,                      2)
	TAGKEYS(                        XK_4,                      3)
	TAGKEYS(                        XK_5,                      4)
	TAGKEYS(                        XK_6,                      5)
	TAGKEYS(                        XK_7,                      6)
	TAGKEYS(                        XK_8,                      7)
	TAGKEYS(                        XK_9,                      8)
	{ MODKEY|ShiftMask,             XK_x,      quit,           {0} }, // veranderd
};

Builden en herstarten zoals al eerder aangegeven en het werkt. Nog maar eens in git vastleggen dan:

$ git add config.def.h 
$ git commit -m 'Mijn eerste keybindings'

Ik heb nu de volgende keybindings:

Basic
=====

[Super]+[Enter]         - start terminal

[Super]+[b]             - show/hide bar.
[Super]+[d]             - dmenu for running programs like the x-www-browser.
[Super]+[Shift]+[Enter] - Maak actieve window master

[Super] + [j / k]       - focus op volgende / vorige window
[Super] + [h / l]       - Maak master groter/kleiner

[Super]+[2]             - Ga naar bureaublad 2
[Shift]+[Super]+[2]     - Verplaats actieve window naar bureaublad 2
[Super]+[Shift]+[i / d] - Meer / minder windows in master
[Super]+[, / .]         - Verplaats focus tussen meerdere schermen
[Shift]+[Super]+[, / .] - Verplaats actieve window tussen schermen

[Super]+[0]             - Bekijk alle windows op het scherm
[Shift]+[Super]+[0]     - Laat actieve window op alle bureaubladen zien
[Shift]+[Super]+[q]     - Sluit actieve window
[Shift]+[Super]+[x]     - Verlaat of herstart DWM

[Super]+[t]             - tiled mode. []=
[Super]+[f]             - floating mode. ><>
[Super]+[m]             - monocle mode. [M] (enkele window fullscreen)

[Super]+[R M B]           - Resizen van floating window (Right Mouse Button)
[Super]+[L M B]           - Verplaats floating window
[Super]+[Space]           - Maak layout floating
[Super]+[Shift]+[Space]   - Switch de actieve window tussen wel en niet floating

 

03. Een eerste indruk (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen. Zie voor meer de eerste keer installeren 01. Voorbereiding, download en eerste installatie DWM

In  hetvorige blog heb ik verteld hoe ik voor de eerste keer DWM heb gebouwd en geinstalleerd, samen met dmenu en st. Bij het inlogscherm heb ik nu inderdaad de mogelijkheid om DWM te kiezen als desktop. Ik zal hier vertellen van mijn eerste indrukken.

Zo ziet het eruit op Manjaro:
01_stock

Natuurlijk werkt er niet zoveel. Ik heb hier een terminal geopend in floating mode om een screenshot te kunnen maken met behulp import, een commando van het geweldige imagemagic pakket. Een screenshot programma is er natuurlijk niet, behalve dan die van XFCE, maar ik weet niet hoe die heet.

Alles lijkt naar behoren te werken. Een prettige verassing is dat er een panel bovenaan is, ik hoef dus geen aparte panel te installeren. In het panel gebeurt echter niet veel. Er staan nummers, van 1 tot 9. Deze representeren de workspaces of bureaubladen, net zoals bij XFCE. Maar waar bij XFCE er vaak maar 2 to 4 zijn, heet DWM er gelijk 9. Op zich wel logisch, want als je werkt met een tiling windowsmanager zoals DWM, dan worden verschillende werkbladen ineens veel handiger. Je kunt schakelen tussen de werkbladen met de modifier toets + het corresponderende getal. De modifier toets is bij default de Alt of Meta toets. Dus met Alt+3 ga ik naar desktop 3.

Naast de werkbladen lijst staan een paar tekens, namelijk “[]=”. Dit geeft aan dat ik in de master-stack mode zit. Het is de manier waarop DWM de vensters zal plaatsen als ik ze open, in dit geval ‘st’. Hierover later meer.

Rechts van de tekens is een ruimte waar de titel van het op dat moment actieve venster wordt weergegeven. Ten slote helemaal rechts staat dwm6.2, gewoon de versie van DWM die ik op dit moment gebruik.

Er zijn aardig wat toetsencombinaties te leren. Zo start Alt+Shift+Enter de terminal, in dit geval de “simple terminal” st, die ik in het vorige blog heb gebouwd. Ik kan dus in ieder geval met de terminal werken, wat het gelijk wat meer bruikbaar maakt. Alt+p start dmenu, ook vers gebouwd in het vorige blog. Dmenu is niet echt nieuw voor me. Ik gebruikte het in het verleden in I3 en het is een uiterst simpel programma, maar daardoor heel krachtig. Het enige wat het doet is een lijst weergeven met een prompt. In de pompt kun je letters typen en dan zoekt dmenu in ale termen van de lijst die die letters bevat. Druk je op enter dan wordt het meest links weergegeven item geselecteerd en daar wordt dan iets mee gedaan, afhankelijk de situatie. Het klinkt niet heel spannend, maar ik zal later nog eens laten zien hoe handig dat kan zijn, ook in volledige desktop omgevingen als XFCE of Gnome.

De standaard functioneerd dmenu is echter als een applicatie launcher. Met Alt+p en dan de letters fir en een enter kan ik dus heel snel firefox starten. Een beetje vreemd voor mensen die gewend zijn om met de muis te werken. Toch is het niet anders dan, zeg de dash van Gnome. Daar kun je op de super (windows) toets dukken en beginen te typen en druk dan Enter zodra je het programma hebt gevonden die je wilt starten. Veel sneller dan met de muis. Dmenu ziet er gewoon wat minder fancy uit maar doet hetzelfde.

Goed, het is duidelijk dat er heel wat moet gebeuren. In de balk missen veel dingen die in andere omgevingen normaal zijn. Zo mis ik een klok die de datum en de tijd weergeeft. Ook heb ik graag een systray, dat is zo’n stukje, vaak rechts in de balk, met allerlei icoontjes van programma’s die op de achtergrond actief zijn. Denk hierbij aan een netwerkmanager, powermanager of het icoontje van dropbox.

Ik kan nog een hele lijst opnoemen, bijvoorbeeld een zelf een wallpaper instellen. Nu is het de standaard van Manjaro (wat zou het bij Xubuntu zijn?). Het eerste wat ik moet doen is denk ik de key-bindings instellen zodat het voor mij logischer worden. De supertoets is logischer dan de Alt als modifier toets omdat die eigelijk nooit door andere programma’s gebruikt wordt. Ook st heeft nog wel wat aanpassingen nodig. Ik kan niet eens scrollen. Genoeg te doen dus.

Nu kijken hoe ik er weer uit kom.. Alt+Shift+q brengt me weer bij het login scherm, waar ik de computer uit kan zetten. Note to self: ik heb een afsluit menu nodig met uitloggen, herstarten en uitzetten.

Volgende keer ga ik beginnen met DWM naar mijn hand te zetten.

02. Voorbereiding, download en eerste installatie (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen. Zie voor meer informatie Voor we beginnen (DWM)

Als je een vaste bezoeker bent van het nederlandse Ubuntu forum heb je misschien gezien dat ik al begonnen was met installatie en configuratie van het systeem. Ik heb voor dit blog echter besloten om helemaal overniew te beginnen en het gestructureerd aan te pakken.

De ervaring met mijn kleine test heeft me geleerd dat om met dwm te kunnen werken, we in eerste instantie 3 tools van suckless nodig hebben, namelijk dmenu, st (simple terminal emulator) en dwm zelf. Ik heb besloten om de laatste stabiele versies te downloaden en niet de git repositories. Ik zet de code van elk pakket in zijn eigen folder en ga daar vervolgens met git de veranderingen bijhouden. Maak je geen zorgen als je dit allemaal nog niets zegt, ik ga dit allemaal nog uitgebreid uitleggen.

Wat heb ik eerst nodig? Om de programma’s te kunnen bouwen heb ik in in ieder geval een C-compiler nodig. In manjaro is GCC al geinstalleerd, dus dat is lekker gemakkelijk. De mensen die op een Ubuntu afgeleide werken moeten hiervoor het pakket build-essential installeren. Als je dit mee wilt doen hoop ik dat je weet wat de terminal is. Je kunt die vaak starten met de toetsencombinatie ctrl-alt-t en je krijgt dan tekst venster waar je commando’s in kunt typen. Alles wat ik ga doen doe ik daar en ik neem aan dat je een basis kennis hebt van het werken met de terminal, dus dat je weet hoe je naar folders kune gaan en kan zien welke bestanden er staan (dus de commando’s “cd” en “ls”).
Xubuntu, installeren van build-essentials.

$ sudo apt install build-essential

Ook moet je git hebben. Ook dit is op Manjaro standaard geinstalleerd, maar Xubuntu gebruikers kunnen de volgende commando’s gebruiken om git op te zetten, waarbij ze hun eigen naam en email adres in kunnen voeren.

$ sudo apt install git 
$ git config --global user.email "mijn@email.addr"
$ git config --global user.name $(USER)

In mijn home folder heb ik een map “suckless gemaakt met daarin de volgende structuur:

.
├── blog
│   └── 01.Intro.txt
├── dmenu
│   └── patches
├── downloads
├── downloads.txt
├── dwm
│   └── patches
└── st
└── patches

In download zal ik de gedownloade tar bestanden zetten en in blog schrijf ik deze blog posts.
Nu kunnen we de programma’s downloaden. Ze zitten in tar.gz bestanden en je kunt ze op de https://suckless.org website vinden. In echt suckless stijl ga ik dit natuurlijk vanaf de commandline doen (webbrowsers is bloat. Ik zorg ervoor om in de suckless folder te zijn in de commandline (cd ~/suckless) en voer dan de volgende commando’s uit.

$ curl https://dl.suckless.org/dwm/dwm-6.2.tar.gz --output downloads/dwm-6.2.tar.gz
$ curl https://dl.suckless.org/st/st-0.8.3.tar.gz --output downloads/st-0.8.3.tar.gz
$ curl curl https://dl.suckless.org/tools/dmenu-4.9.tar.gz --output downloads/dmenu-4.9.tar

Nu is het tijd om de gedownloade bestanden uit te pakken. Weer in de suckless folder:

$ cd dmenu
$ tar -xvf ../downloads/dmenu-4.9.tar.gz
$ cd ../dwm
$ tar -xvf ../downloads/dwm-6.2.tar.gz
$ cd ../st
$ tar -xvf ../downloads/st-0.8.3.tar.gz

Bij mij zijn er nu in de dmenu, st en dwm map “patches” map als een map met de broncode aanwezig. Voor ik iets ga doen ga ik de broncode in een eigen git repository zetten. Ik ga git gebruiken om elke werkende verandering op te slaan, zodat ik altijd na de laatste werkende versie terug kan gaan als er iets fout gaat en ik er niet meer uit kom. Weer vanuit de suckless map:

$ cd dmenu/dmenu-4.9
$ git init
$ git add -A
$ git commit -m 'start'
$ cd ../../dwm/dwm-6.2
$ git init
$ git add -A
$ git commit -m 'start'
$ cd ../../st/st-0.8.3
$ git init
$ git add -A
$ git commit -m 'start'

Zo, nu kunnen we hopelijk de eerste installatie doen. Ik geef hieronder het voorbeeld hoe ik dmenu installeer. De procedure is voor de andere pakketten precies hetzelfde, zei het dan in hun respectivelijke folders.

$ cd dmenu/dmenu-4.9
$ sudo make clean install
$ git clean -f

Je ziet dat ik aan het eind een git commando geeft. Dit commando verwijderd de tijdelijke bestanden die bij het bouwproces zijn aangemaakt en brengt de map weer terug naar de status voordat het bouw-commando was uitgevoerd. Op die manier hou ik de map mooi schoon.

Overigens is het niet zo dat ik nu klaar ben. De suckless jongens hebben het liefst dat je dwm start via het startx commando. maar dat is me toch echt te minimalistisch. Manjaro komt met lightdm waar je inlogged en kunt kiezen welke desktop je wilt starten. Ik wil dit ook graag gebruiken en naast XFCE ook dwm kunnen kiezen. Hiervoor heb ik een tekst bestandje nodig. Ik moet daarvoor met sudo een tekst editor openen en daarin de volgende tekst zetten:

[Desktop Entry]
Encoding=UTF-8
Name=dwm
Commant=dwm window manager
Exec=/usr/local/bin/dwm
Type=Application

Dit bestand moet ik opslaan als “/usr/share/xsessions/dwm.desktop”. Nu zal dwm te kiezen zijn vanuit mijn inlog scherm.

Xubuntu: ik heb bovenstaande niet in Xubuntu getest. Ik weet dus niet zeker of Xubuntu ook komt met lightdm. Als het niet werkt hoor ik dat graag en zal ik uitzoeken wat de juiste procedure voor Xubuntu is.

Zo dit is wel even genoeg voor vandaag, in de volgende blog ga ik DWM voor de eerste keer starten en ga ik eens kijken wat we out-of-the-box krijgen.

01.Voor we beginnen (DWM)

In deze serie ga ik proberen DWM (suckless) te installeren op mijn systeem. Ik probeer dit zo simpel mogelijk uit te leggen, zodat ook niet ‘power’ gebruikers dit zouden kunnen nadoen.

Misschien denk je nu, ik ben niet zo’n expert in Linux dat ik dit zie zitten. Laat je dit niet tegenhouden om dit ook eens te proberen. Ik zal proberen om alles zo simpel en toegankelijk mogelijk neer te zetten. Wat mij betreft hoef je niet , met de woorden van Suckless, ‘elitist te zijn om DWM te gebruiken. Overigens lijkt het zo op het eerste gezicht erg moeilijk allemaal, maar eigelijk is het installeren en bouwen van Suckless tools helemaal niet niet zo moeilijk. Ik hoop gewoon dat dit leerzaam wordt en leuk.

Disclaimer: Ik ben niet aansprakelijk voor het geval je je installatie verziekt. Hoewel het bouwen en installeren van DWM vrij veilig is, moet je een aantal stappen als root gebruiker uitvoeren. Dingen doen terwijl je root bent heeft altijd enige risico, en je moet altijd oppassen geen verkeerde dingen te doen. Het veiligste is natuurlijk om een oude laptop te gebruiken speciaal voor dit doel. Ikzelf voel me zeker genoeg en doe het gewoon op mijn hoofd machine.

Ik doe dit project op Manjaro Linux, de XFCE versie. Ik zal proberen om bij het installeren van afhankelijkheden ook de commando’s voor Ubuntu te plaatsen. Ik kan dat helaas niet testen, aangezien ik hier geen Ubuntu heb draaien, maar het is hopelijk een steun. Omdat ik plan om onderdelen van XFCE te gebruiken is het wel zo handig om Xubuntu of Manjaro XFCE te draaien en ik zal er ook steeds vanuit gaan de XFCE is geinstalleerd. Natuurlijk is het mogelijk de onderdelen los te installeren of het alternatief van Gnome e.d. te gebruiken, maar dat laat ik aan jezelf over.

Bij de volgende blog gaan we eenvoudig beginnen. Om het systeem te moeten draaien heb je 3 tools van Suckless nodig, namelijk de st-terminal emulator, d-menu en DWM zelf. We gaan die downloaden en bouwen zonder extra configuratie. Tot dan.