Desktop Environments

Table of Contents

  1. XFCE
  2. Cinnamon
  3. i3/i3-gaps

XFCE

The Problem

As I was procrastinating on my physics homework, I started looking into different desktop environments. After a bit of searching, I landed on Xfce, which is supposed to be a lightweight and customizable desktop environment. It comes as default with Xubuntu, which I don’t have installed. Since I run Ubuntu, I figured it’d be compatible. I honestly don’t remember how I installed it; it had something to do with xargs or xorgs or something to that effect.

Update: future me knows what these things are. Xorg (or just “X”) is used for GUI displays. Literally anything other than a sad-looking terminal requires this. There are a whole lot of related packages like xorg-input and xorg-xrandr which all help you enable and configure X. Hint: use your package managers search or query function to take a look at some of the related packages! xargs is entirely unrelated; it’s used when you want to supply an argument to a command from standard input. The man pages are an amazing resource if you want to learn more!

Long story short, it was a disaster. I half-heartedly tried to customize it, but it’s really not worth it (at least with my config). From my experience, GNOME is far more user-friendly. Perhaps Xfce would have been nicer had I spend more time with it, but for the few hours I spent with it, It was the worstTM.

The Solution

I tried uninstalling some packages and things based off some answers I got from StackExchange. I’m honestly not sure what the difference is between Xubuntu and normal Ubuntu, but whenever I rebooted my computer, it started out with the Xubuntu screen (maybe this was harmless, or maybe not, but either way it was bugging me).

Other StackOverflow answer to the rescue! I used a couple of commands:

sudo apt-get autoremove --purge xubuntu-* && sudo apt-get autoremove --purge xfce*
sudo apt-get autoremove --purge $( dpkg-query -l *xubuntu* | grep ii | tr -s " " | cut -d" " -f2; dpkg-query -l *xfce* | grep 'ii' | tr -s " " | cut -d" " -f2 )

I’m not sure if both commands are necessary, but I ran both, rebooted, and the Xubuntu screen did not appear!

I’m probably going to wind up configuring a desktop environment for Pippin at some point in time. Right now, I’m considering i3, but I’m not sure. If/when I do set it up, I’ll update it here.

Cinnamon

I didn’t like XFCE much after using it on my VM, Gwaihir. However, I now use Cinnamon on my Dell XPS. It feels more lightweight than GNOME, but I’m now starting to feel the burden of not using the most popular version of something. Certain tools have backwards compatibility, but others certainly don’t. One of my favorites, for example, gnome-tweaks works in a really jank way: it’ll let you set the Compose key, but literally let you do nothing else. Also, you can’t install a window manager like i3 if you only have Cinnamon (muffin window manager, to be specific). To get around that, I installed GNOME as well, then got it to log into i3.

i3/i3-gaps

I now use i3, a window manager that replaces your DE. I actually really like it. The customizability is really nice. There’s a bit of a learning curve, since you have to kinda set up most things you want yourself. For example, I can’t control the audio or brightness via my keyboard without setting that up myself. The default bar is really minimalistic, but probably needs customizing (This entry is dateed 11/25/20).

As of 4/21/21, I’m head over heels in love with this setup. I’m not sure I’ll even be able to switch to another WM. I now use polybar as my bar, which seems really nice! I’ve also switched over to i3-gaps (an i3 fork), which is really comparable. The performance is a bit lower, but that’s something I can live with. I use alsamixer for the audio, and sometimes pavucontrol (pulseaudio). They keyboard shortcuts are indeed a bit of a learning curve, but I’d say the speed and organization are really worth it.

Brightness and audio were a bit weird. Previously, I used to use xrandr to manage brightness. This didn’t affect the brightness of the display; it just impacted what a user might perceive to be brightness by adjusting the saturation. My config used to contain the following:

bindsym XF86MonBrightnessUp exec path/bright_up.sh
bindsym XF86MonBrightnessDown exec path/bright_down.sh

where the respective scripts contained the following:

set b {
	b=$(xrandr --verbose | grep -m 1 -w connected -A8 | grep Brightness | cut -f2- -d: | tr -d ' ')
	b=$(echo "$b+$1" | bc -l)
	xrandr --output eDP-1 --brightness $b
	echo $b
}

set 0.1 # increase brightness, comment next line
set -0.1 # decrease brightness, comment previous line

For obvious reasons, that was a terrible solution, so I looked to brightnessctl for guidance. The first time I tried it, I ran into weird errors regarding permissions, but it seems to work fine now. My i3 config now contains the lines

bindsym XF86MonBrightnessUp exec brightnessctl s +2%
bindsym XF86MonBrightnessDown exec brightnessctl s 2%-

As for sound, the combo of alsamixer and pavucontrol is really, really weird, especially for certain apps like Spotify and Zoom (which used to blow my ears out because it would default to 100% audio on alsamixer). I have no idea how to fix or deal with this, but it certainly does annoy me. At any rate, my i3 config now contains the lines

bindsym XF86AudioRaiseVolume exec --no-startup-id amixer set Master 2%+
bindsym XF86AudioLowerVolume exec --no-startup-id amixer set Master 2%-
bindsym XF86AudioMute exec --no-startup-id amixer set Master toggle

Hopefully future me will figure this out!

Update: future me no longer has this issue, but I’m on Arch.