I den här videon pratar jag om Dmenu och hur det kan användas.
Jag går också igenom hur man skriver ett enkelt shellscript för att välja tangentbordslayout.
Det fullständigt modifierade skriptet finns längst ned i beskrivningen, med en test-kontroll för att hantera "cancel".
Hela skriptet:
#!/bin/sh
# Litet skript för att välja tangentbordslayout i X
rtrim (){
printf '%s\n' "${1%%$2}"
}
# avgränsare
delimiter=" -"
# språk
languages="se - Swedish\nus - English\nCancel"
# Skickar språken till Dmenu
selected=$(echo "$languages" | dmenu)
if test "$selected" != "Cancel" ;then
# Trimmar
trimmed="$(rtrim $selected $delimiter)"
setxkbmap $trimmed
fi
Transkription (svenska)
Hej YouTube, Cristian Herrera här med en liten uppdatering om dmenu. Jag såg en fråga om tangentbordsväljare och föreslog ett shellscript med dmenu + setxkbmap.
Jag har inte kodat på många år och hatar att koda på svensk layout—allt ligger fel—så jag byter till amerikansk layout när jag kodar. Jag är rostig men vill komma igång igen. Föredrar POSIX sh framför Bash så det funkar överallt och undviker bashisms.
dmenu är ett suckless-verktyg (länk ovan). Det används av pass och clipmenu. Med clipmenu kan man t.ex. plocka urklipp utan radnummer. dmenu tar bara en nyradsdelad lista och returnerar valet: printf "bananer\näpplen\napelsiner\n" | dmenu ger en meny och returnerar valet.
Scriptet är POSIX: inga arrayer, enkla strängar, försökte undvika sed/awk. Jag hittade Dylan Araps Pure sh Bible med en rtrim-funktion. Kommandosubstitution behövs för att få den trimmade strängen.
Tips: kör sh -x languages.sh för att debugga. Mitt script sätter en avgränsare, definierar languages="se - Swedish\nus - English\nCancel", skickar till dmenu, trimmar valet och kör setxkbmap. Välj us för kodvänlig layout; kör igen och välj se för att gå tillbaka.
Inte perfekt—jag använde case, så varje ny layout kräver ett nytt case. Bättre: testa om valet är “Cancel”, annars använd det valda så att nya layouter bara läggs till i listan. Lätt att bygga ut med ryska, spanska osv. Fixar det senare.
Om du gillar detta, gilla/prenumerera/kommentera—det hjälper motivationen. Önskemål om förklaringsvideor (t.ex. HTTP-protokollet) tas gärna emot. Ha en fin påsk trots tiderna. Hej!