A Debian desktop experience

As my adventure with using Linux goes on and on, I am learning about advantages and disadvantages of distributions, desktop environments and window managers. Mainly for curiosity and for getting my hands dirty, I have decided to try Debian – first as a desktop solution. I am hoping to deepen my knowledge in an empirical way.

I have installed the usual development required apps: VS Code, docker. Together with this, I have added Chromium, the Brave browser, balenaEtcher, VLC media player, Steam.

Don’t break Debian

Debian is a robust system, as long as you have the proper habits and use it “in the debian way”. A small summary of the most important rules for beginners:

  1. Pay attention at installing, but even more at removing software;
  2. Install software from Debian repositories, do not use Ubuntu packages or repositories, as not all of them are compatible;
  3. Be careful at the commands you execute on your system, try to understand what they will do before running them. This includes running entire scripts directly from the web;

More information:

zsh

Some of the programmers – probably most of them actually – spend a lot of time in the shell. Therefore, it is important to have one as nice as possible and zsh provides a good solution. To install it:

sudo apt install zsh

You can immediately start using the new shell by typing zsh. When starting the first time, you will be prompted to create the usual files it needs – creating an empty file should do the trick. Some other changes are necessary to start it by default and related to this, my recommendation is just to update your terminal’s emulator profile.

You can use it in combination with antigen, which is a plugin manager for zsh:

  • mkdir ~/.antigen/ && cd ~/.antigen
  • curl -L git.io/antigen > antigen.zsh
    (Remember the 3rd rule about preserving debian)
  • nano ~/.zshrc and load antigen, together with your configuration

An example configuration, straight from the project’s repository is:

I personally like bira or ys as theme. And other bundles I use:

Should you have special commands you run with your shell, you should add them in .zshrc as well. A good idea might be to extract them to a common file, e.g. ~/.profile.

More information:

The boot loader

By default, Debian uses GNU GRUB as a boot loader. With the initial look it is not the nicest possible. I think you can change it to something else, but I wouldn’t do that, especially as a beginner.

New themes

The default look

The default theme of the boot loader – GNU GRUB – can be improved by using a custom theme. The commands to prepare for using the new theme:

  • sudo apt install grub-customizer -y
  • cd /usr/share/grub && ls -la
  • sudo cp /boot/grub/grub.cfg /usr/share/grub/grub.theme-bak.cfg – make a backup of your current grub configuration file, in case you break any of the options later;
  • mkdir -p /usr/share/grub/themes – this command will create the themes directory, in case it does not exist and it will do it as root, preserving the ownership inside the folder;
  • sudo chown $(whoami):$(whoami) /usr/share/grub/themes – this will change the owner of the themes folder, which will allow you to use the file manager to copy themes without elevated privileges.

To keep things easy and friendly, we will now move to move away from the command line and do rather visual activities:

  • The first thing to do is to pick the theme we want to install. Using a rather famous website for themes, what I liked was: https://www.gnome-look.org/p/1230780/
  • Download the theme and copy the new file to /usr/share/grub/themes
  • Open the previously installed Grub Customizer, go to Appearance settings, check and modify the custom resolution to 1920x1080 and in Theme select the folder of the new theme.
  • Hit save – ! be cautious not to ignore any message or error which might have been previously displayed ! – and restart to see the new theme in action.

More information:

Hide the bootloader

An easy solution, which was my choice in the end, is to hide the bootloader:

  • sudo cp /etc/default/grub /etc/default/grub.backup
  • sudo nano /etc/default/grub
  • Update the following variables, as shown:
    • GRUB_HIDDEN_TIMEOUT="0"
    • GRUB_TIMEOUT="0"
  • sudo update-grub
  • Restart your computer to see the changes.

More information:

KDE Plasma to the rescue

KDE Plasma is supposed to be the most configurable desktop environment for Linux. I found a lot of customization options indeed, maybe even more than I found it comfortable.

In the following lines I will point out some ideas about how I have prepared it.

Applications

Probably the list of applications can improve, as most of the apps I picked some are some of the first search results in DuckDuckGo which also looked good in pictures or video.

So, here they are:

  • Yakuake – a terminal application which slides down from the top of your current desktop;
  • UMenu – a widget with a simple menu;
  • Flameshot – this application is used to create screenshots, an alternative to Spectacle which comes preinstalled and it is quite nice, actually.

Some ideas for other applications can be found here:

https://github.com/luong-komorebi/Awesome-Linux-Software

Themes

I was not too adventurous about the theme. I have used Breeze Dark as the main theme, Breeze for the splash screen, Plastik for the window decorations and Breeze Noir Dark or Monochrome for the Login manager.

Menus and titlebar

I do not have an application menu bar. I like having as much space as possible on the work area.

The panel

As I already mentioned, I like to keep things on my screen to a bare minimum – this helps me concentrate on the task at hand.

In the workflow I prefer using, I have just one panel on the right side which I try to keep as simple as possible. Depending on how many apps I am using at the same time in a virtual desktop, I change its height from time to time.

If you are using multiple screens and you want the panel on all of them, you can just create one for each. (So far, I could not find an option to put the panel on all the screens, which is not actually too problematic)

The widgets inside this panel are:

  • Application launcher;
  • Task manager;
  • Pager;
  • System tray.

As I am using a scroll wheel mouse, I find it rather easy to switch between the applications (Task manager), the desktop (Pager) just by scrolling above it.

For now, I am also using just 2 desktops:

  • The first is for the working and it contains the editor, a browser with the preview of what I am working on etc;
  • The second is for entertainment.

Important note: if you have multiple displays, the default behavior is to switch to the next virtual desktop on all of them. I think this is different from other operating systems and it is worth a try, as part of the whole experience.

Another note is that I am not quite comfortable or even familiar with what this distribution has to offer (e.g. Activities), so this workflows might suffer important changes in time.

Latte dock

In the setup above, there is no need for a dock, as the main panel itself is a kind of a dock. However, should you need something in that direction, latte is the most famous dock out there and it does a pretty nice job. To install it, run:

sudo apt install latte-dock

I find it useful pinned to the side of the display, with transparency and containing just a task manager widget. This widget would discretely show only the apps started on that screen, in the current desktop.

More information:

Troubleshooting

Connecting a Bluetooth speaker

I have used the following solution for solving the connection issues to the bluetooth speaker:

  • sudo apt install pulseaudio-module-bluetooth
  • pulseaudio -k
  • pulseaudio --start

https://unix.stackexchange.com/questions/258074/error-when-trying-to-connect-to-bluetooth-speaker-org-bluez-error-failed

Disconnecting the display set as primary

I have Debian setup on my laptop, which I often use with an external display. As a workflow, regardless of the OS, I use the external display as a primary and do most of the work there. However, if you disconnect the external one you might end up with an empty desktop on your laptop screen.

A general and accidental fix for myself was described above and it’s about having the same panel on all the screens, which includes the Display configuration widget.

The “more serious” fix came in combination with the Yakuake terminal, which opens in the active desktop on a key combination. The command used was simply, without any arguments: xrandr

xrandr is a command-line tool which – among other things – offers the reconfiguration of the X server without restarting it. It might even be preinstalled on your system.

More information:

Failed to start Raise network interfaces

When starting the computer, I kept noticing this error: Failed to start Raise network interfaces. Since nobody likes a small error showing up among many other successful steps, I spent some time trying to figure it out, and the following worked:

  • edit /etc/network/interfaces.d/setup
  • replace auto eth0 with allow-hotplug eth0

https://askubuntu.com/questions/824376/failed-to-start-raise-network-interfaces-after-upgrading-to-16-04

General impressions

I think Ubuntu with its Gnome default was more comfortable to get into. Maybe it was just my feeling, but it seemed that connecting the external monitor was easier, connecting Bluetooth devices was also easier.

I would like to stick with Debian, especially for getting familiar with it: how packages are handled, updates, the ecosystem. For now, I intend to make it my operating system of choice when it comes to servers.

Nice information sources

But, I look forward to trying Manjaro, the baby and friendly brother of Arch. And further, as I get more experience, I’d like to try a bare window manager, like i3.