Wednesday, May 2, 2018

Ubuntu 18.04 LTS

This is my personal Ubuntu 18.04 LTS setup guide, it includes my initial impressions, programs I like, GNOME extensions and minor tweaks.

Initial impressions:

Ubuntu 18.04 LTS offers a new installation type: Minimal install. This new type avoids the bloatware that normally comes with Ubuntu, such as the office suite LibreOffice, shotwell, transmission, thunderbird etc. I quite like this new mode, as I normally either manually remove the apps I don’t use, or I simply leave them on the drive, thus wasted space.

Recently I have been using GNOME 16.04 LTS as my primary OS, empowered by the dash to dock GNOME extension, which coincidentally offers a look and feel that is pretty much identical to the new Ubuntu LTS. This is mainly due to the fact that Canonical, the company behind Ubuntu, decided to discontinue their custom graphical shell Unity and adopted the GNOME shell, which is the graphical shell that have been used on the native GNOME desktop environment since version 3, which was released back in 2011. They also added a custom version of dash to dock GNOME extension to make it look and feel more like the discontinued Unity application launcher. So on a personal note: nothing new under the sun.

Ubuntu also had plans to change the default display server from X11 to Wayland in this latest LTS, alas that did not happen, but they did however include the Wayland option from the cog on the login screen - the new goal is to make it the default display server in the next LTS - in Ubuntu 20.04 LTS.

My list of programs

I have a long list of program I simply adore and a few new ones I am trying out.

Because I used the Ubuntu Minimal install, I didn’t get the default music manager Rhythmbox, and I wanted to try something new, so I have instead installed Clementine in order to see if it is as good as people make it up to be, I was sold by the Dropbox and Google Drive media streaming capabilities. I am using Hexchat as my IRC client, which I use primarily to communicate to the open source project I am a part of. I am using Discord as my gaming chat client, Slack as my work chat client and Telegram as my private chat client. I am currently using the Chrome Browser for everyday browsing, and the Tor browser for private browsing. I am using VNC Viewer as a tool to get remove desktop access over my Raspberry Pi 3. I have also installed a pomodoro performance timer, which I can enable when I need to stay focused. And to stay focused while I type, I use FocusWriter. I use Visual Studio Code, the insider build, as my default lightweight text editor, and I also use it for .Net development, where I am current developing a ASP.NET Core MVC project for my Raspberry Pi 3. Currently I use Cake as my build, test and deployment tool, mainly due to the nice metrics it offers of each phase. I use Git as a version control tool and GitLab as my global free private repository of choice. I use Open Broadcaster Software as my default screen recorder tool.

I also have latest stable version of Wine installed, which allows me to play windows games, as I simply adore the turn based strategy game Heroes of Might and Magic 3 Complete (so it includes all of the expansion packs - which can be found for a steal on GOG.com (remember to download BOTH files and that the location is not the default one)) - I also use the non-official fan made HD addon, where I am offered a greater resolution, game bug fixes and a very functional online multiplayer lobby and a ingame online chat client with the ability to add friends - quite awesome!

My list of GNOME extensions

One of the benefits of using the GNOME shell as the default graphical shell on Ubuntu, is that we now have the ability to use GNOME extensions, which can modify the behaviour of the GNOME shell - BUT be aware that the extensions are not developed by the official GNOME team, but by third party developers, which I have experience myself, can lead to a unbootable system. I have however found a list of extensions that both are compatible with the latest version of GNOME shell and they are quite useful.

But first, if you want to get GNOME extensions, then you have to install the following:
sudo apt install gnome-shell-extensions
and
sudo apt install chrome-gnome-shell
Now you are ready to install my recommended list of extensions: 


  • SomaFM internet radio
    • A small extensions that adds a SomaFM internet radio player in the top panel of the desktop, it includes the ability to select favorites.
  • Todo.txt
    • Create and manage a TODO list in the top panel
      • Not working on Ubuntu 19.10
  • Extensions
    • An overview of the extensions installed, with the ability to enable and disable and edit the settings of the individual extensions - this can also be achieved from the GNOME tweak tool, but I find it more handy.
  • Remove Dropdown Arrows
    • It removes the dropdown arrows from apps that have that in the top panel.
  • Frippery Move Clock
    • It simply moves the clock/date/calendar to the right in the top panel. I have gotten used to have all of my apps to the right of the top panel.
  • Hide Activities Button
    • I hides the activities button. I find this button quite useless, as I hit the ‘super-key’ when I want to see my activities.
  • Google Earth Wallpaper
    • An awesome extensions which auto-shuffles through selected locations on earth and displays them as your desktop background. You are able to enable a time interval, if you should download them etc.
  • OpenWeather
    • A simple weather app embedded in the top panel, highly configurable.
  • Status Area Horizontal Spacing
    • There is a lot of horizontal spacing between the icons in the top panel, this extensions reduces the space between each app, which is neat.
  • TopIcons Plus
    • Used for displaying the icon of legacy apps in the top panel.
  • Show Desktop Button
    • Adds a show desktop button in the upper left corner of the screen.
      • Ubuntu 19.04 fix: sed -i 's/global.screen/global.workspace_manager/g' ~/.local/share/gnome-shell/extensions/show-desktop-button@amivaleo/extension.js
  • Refresh Wifi Connections
    • Adds a WiFi refresh button to the manual network selection in the top panel.
  • ShellTile
    • A tiling window extension, which allows you to snap an application to quarters of screen, very handy if you are using applications which do not allow this behavior, such as Discord.
      • Minor tweak: Disable 'grouping edge tiling' of windows in settings

Minor tweaks

Gnome tweaks

Two things slightly annoy me about the default behavior of the dash to dock extension, the first being that when I re-select an item on the dock then the item doesn't minimize, which can by fixed through the terminal:
gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'
The other issue I have with the dock, is that I can't cycle through a list of opened items with my scroll-wheel, e.g. if I have opened multiple folders or browsers. This can also be fixed through the terminal:
gsettings set org.gnome.shell.extensions.dash-to-dock scroll-action 'cycle-windows'

Right-click create untitled document

I love to have the ability to right-click anywhere I like, and be able to create a new file. This behaviour was removed in Ubuntu 18.04. We can reenable this ability, by adding a new template, like this:
touch ~/Templates/"Untitled Document"

Legacy applications as startup applications

While I really enjoy the TopIcons Plus GNOME extension, there is seemingly a visibility issue when adding a legacy application to the list of startup application of the session (gnome-session-properties), this is due to the legacy applications starting before the GNOME extension, this can be fixed by adding a slight delay to the app in question, like this:
sh -c "sleep 10; exec clementine"
And if I want it to start the application to tray, then I will use:
sh -c "sleep 10; exec hexchat --minimize=2"
telegram-desktop -startintray

Handle lid switch

If you like me like to close your laptop lid, but do not want your machine to go into hibernation, then you will need to edit the following file: logind.conf
sudo gedit /etc/systemd/logind.conf
Change "#HandleLidSwitch=hibernate" (around line 24) to "HandleLidSwitch=ignore" and be sure to remove the hashtag: #
Save and lastly you need to reboot the systemd service:
systemctl restart systemd-logind.service

XPS 15 9570

You might experience static noise from your speakers when there is no sound playing. Use the following command to fix that issue:
sudo echo -e '\n# Disable snd-hda-intel power saving\noptions snd-hda-intel power_save=0 power_save_controller=N\n' |  sudo tee -a /etc/modprobe.d/alsa-base.conf