Anders är en webbutvecklare och hårdrockare som gillar brädspel, kaffe och öl.

2022 linux desktop rice - i3 med polybar, rofi, picom och pywal

Jag har efter några år med Mac OS och diverse skrivbordsmiljöer blivit motiverad att sitta med en tiling window manager igen, och betämde mig för att ta litet inspiration från r/unixporn för att lägga litet kärlek på utseendet.

Skärmdump med neofetch och joshuto

Jag var själv osäker på vad ricing betyder, så här kommer en definition:

The term ‘rice’ is used to describe a person’s unix deskton where ‘ricing’ is when someone is custom their desktop such as the icons, panels, or system interface. When it comes to ricing a tiling window manager though, the ricing of a user’s system becomes much more involved. Basic things such as the panel bar and application launcher must be configured by the user.

Tack så mycket, Jie Fang.

Vad som behövs

Jag kör Arch, så nedanstående exempel använder pacman, men alla dessa program finns gissningsvis i alla andra linuxdistar.

Först, några paket som finns i de officiella repositorierna.

pacman -Syu
pacman -S \
  i3 \
  polybar \
  rofi \
  scrot \
  xclip \
  kitty \
  zsh \
  starship \
  tmux \
  picom

Därefter, några fler paket från AUR.

paru python-pywal
paru joshuto

Tiling window manager: i3

Jag är bekant med i3 sedan tidigare, och är för bekväm för att lära mig att konfigurera en annan fönsterhanterare.

Jag gillar däremot det luftiga och konfigurerbara som forken i3-gaps ger. Denna fork är default vid installationen med pacman.

Jag kör i3 med hjälp av lightdm, med lightdm-gtk-greeter. I dessa dyker i3 upp automatiskt i valet mellan befintliga skrivbord.

Paneler: Polybar

Vanilla i3 har en helt okej panel, men nu handlar det om nästa nivå. :)

Jag letade reda på en polybar-konfiguration jag gillade, och kopierade det jag ville ha från den och ändrade saker efter eget tycke.

  • left: i3 workspaces 1-10.
  • center: xwindow, visar titeln på fokuserat fönster.
  • right: Muteknapp för Pulse audio, växlare för tangentbordslayout, klocka och datum.

För grundläggande tips och hur att sätta upp polybar med i3, se Polybar på Arch Wiki. För inspiration, se Polybars webbplats.

Launcher: Rofi

Jag gillar s.k. launchers - att kunna trycka ett tangentbordskommando och som öppnar en textruta för att ge mig förslag på program att öppna när jag börjar skriva.

i3 har förvisso dmenu, men jag vill egentligen ha något mer tjusigt.

Det finns flera launchers att välja på, men mitt val föll på Rofi. Jag kör en combi-box, och valde ett tema här.

rofi-theme-selector

Jag valde ett standardtema, med fonten Fira Sans.

Bakgrundsbild och matchande terminalfärger: pywal

Ingen rice är komplett utan ett snyggt skrivbord!

feh är förvisso precis vad jag behöver, men verktyget pywal ser också till att matcha färger i terminaler med aktuell bakgrund.

Därefter krävs en katalog med bakgrundsbilder för att skapa en karusell.

*/30 * * * wal -i /backups/Rahvin/allpapers/$(ls /backups/Rahvin/allpapers | shuf -n 1)

Detta läggs i en crontab som kör scriptet en gång i halvtimmen.

Fades och annat ögongodis: picom

Då det här är en ambitiös rice så vill jag ha litet mjuka övergångar mellan workspaces och fönster. För detta används compositors, och då jag kör i3 kan en standalone compositor användas. Som exempelvis [picom]]pc!

picom har trevliga defaults, så jag ändrade inte särskilt mycket.

Filbläddrare: Joshuto

Normalt sätt brukar jag låna Thunar eller liknande från en existerande DE, men denna gång vill jag gå all in utan sådana beroenden.

Då det är bekvämt för mig att browsa kataloger i träd med piltangenter, snarare än att använda ag eller ls, vill jag därför ha en CLI-optimerad filbläddrare.

En klon av ranger, skriven i Rust. Denna kopplade jag till ett snabbkommando för att snabbt öppna en filutforskare.

Screenshots: Scrot + i3

Jag gillar hur MacOS hanterar skärmklipp, så jag kopierade en rad ifrån en tråd på reddit och kopplade till PrintScr.

  1. Gå till vyn som ska skärmdumpas.
  2. Tryck PrintScr, muspekaren byts till ett kors.
  3. Ruta in en yta att skärmdumpa, avsluta med klick.
  4. Öppna filen, som nu sparats med screenshot_<timestamp>.png.

För det mesta övrigt: kitty, tmux och starship

En av de mest lockande sakerna med tiling window managers är att kunna göra allt med CLI. Jag kör tmux sedan lång tid, och har inte haft skäl att byta ut den mot något annat.

Jag kör den i sin tur i Kitty, som låter grafikkortet ta litet av rendering.

För att få litet annat blandat smågodis för terminalbruk, kör jag sedan en tid Starship för att ha ett likartat skifte mellan Windows, Mac och linux.

# aktivera Starship i Bash
eval "$(starship init bash)"

# Aktivera Starship i ZSH
eval "$(starship init zsh)"

dotfiles

Alla dotfiles för detta finns på Github.