Desktop Environments

GNOME

I'm adding this quick paragraph at a later date, when I realized I forgot to talk about one of the most famous desktop environments!

GNOME's the desktop environment (DE) I've used for the longest amount of time, so it holds a special place in my heart. Overall, it's pretty intuitive to use, and pretty beginner friendly, so it makes sense why Ubuntu ships with it. The tradeoff we make, however, is performance and customizability. Also, installing and uninstalling DE's can be pretty painful, as I quickly discovered.

XFCE

The Problem

So ... I was procrastinating on a few assignments and was looking into different desktop environments. After a bit of Googling, I landed on Xfce (comes as default with Xubuntu, which I don’t have installed). 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/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.

Here’s some important advice: don’t install something unless you know how to uninstall it. Seriously. The uninstallation process for Xfce was not clean.

The Solution

I tried uninstalling some packages and things based off some answers I got from Stack- Overflow/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:

  1. sudo apt-get autoremove --purge xubuntu-* && sudo apt-get autoremove --purge xfce*
  2. 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.

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 dated 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 organizationare really worth it.

Brightness and audio were a bit weird. Previously, I used xrandr to manage brightness. This doesn'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:
#! /bin/bash
setb () {
  b=$(xrandr --verbose | grep -m 1 -w connected -A8 | grep Brightness |\
   cut -f2- -d: | tr -d ' ')
  b=$(echo "$b+$1" | bc -l)
  #eDP1 is the name of my display, run xrandr to find out what yours is
  xrandr --output eDP1 --brightness $b
  echo $b
}

# if up, bright_constant = 0.1; if down, bright_constant = -0.1
set bright_constant
For obvious reasons, that was a terrible solution, so I looked to brightnessctl for a solution that modified the backlight. 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; the workaround is to make 100% audio not much at all using pavucontrol). I have no idea how to fix or deal with this, but it certainly does annoy me. That was for i3 on Debian, but on Arch, I'm no longer having that issue! 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