The Fedora Workstation Experience

10 minute read

Fedora

Overview

A lot of people always ask me what is the best way to contribute to opensource? Of course contributing code, documentation, spreading the gospel or even talking about opensource are great. However the easiest and seemingly least obvious method is to actually use opensource. The best way to do that is by running Linux on your workstation. There are a lot of great Linux distro’s to choose from and me being a RHatter, well let’s just say I have an impartial view.

Being an ex-macbooker, I love the simplicity and minimalist approach of Apple’s UI design and experience but I dislike their proprietary, closed system approach. As such I aim to find the best of both worlds: great UI experience without compromising on freedom, choice and promoting the power of opensource!

Hardware

Currently I have a Lenovo Thinkpad X1 but great thing here is you have choice. I get that Apple’s Macbook hardware has a great look and feel (touchpad works great) but those are pretty minor things and your going to cover your laptop in stickers anyway, right?

Installing Fedora Latest

Fedora has a media writer and you can download this to create a USB Image to install Fedora. You can provide your own ISO or just let it create an image using the latest Fedora. Once you have USB image simply reboot your laptop/desktop press F12 or F8 to enter boot menu and boot from your USB. The rest is just accepting defaults. If your more advanced user you may want to also setup your own filesystem partitions and I always recommend turning on disk encryption with LUKS.

Customizing Fedora Workstation

Once you get booted into Fedora it’s time to customize. Unlike MacOS or Windows you can truly customize the desktop environment and while that is powerful and rewarding it also can be time consuming as well as turn most people off. The point here is to get something great with limited effort.

Update Fedora

Just like any OS clicking the update button is usually the first step. You can of course click on Applications->System Tools->Software which launches the UI software package manager but this is Linux right?

$ sudo dnf update -y

Fedora

Install GNOME Extentions

GNOME is the UI operating environment and has a modular plugin framework for extending it. There have been huge advances in GNOME performance and while developers do all the hard work, users make those contributions meaningful which in turns leads to more development resources.

$ sudo dnf install gnome-extensions-app

GNOME Extentions

Install Dock from Dash Extensions

This extension will add a docking bar in center for favorite applications just like MacOS. Navigate to https://extensions.gnome.org/ and in search filled enter “dock from dash”. Click on the extension and in upper right there is a slider to enable the extension.

Dock and Dash

Install GNOME Tweaks

Using GNOME tweaks you can configure many aspects of the UI we will be using later

$ sudo dnf install -y gnome-tweaks

Install Google Chrome

$ sudo dnf install google-chrome

Disable Wayland

Overall wayland works but one area there is still issues is in screen sharing. If you care about that I would recommend disabling it.

$ sudo vi /etc/gdm/custom.conf
WaylandEnable=false

Configure MacOS Theme

These steps will enable MacOS icons and desktop theme.

$ sudo dnf install la-capitaine-icon-theme
$ git clone https://github.com/paullinuxthemer/Mc-OS-themes.git
$ mkdir ~/.themes
$ cp -r Mc-OS-themes/McOS-MJV ~/.themes

Open GNOME Tweak tool Applications->Utilities->Tweak and navigate to appearance section. Set application theme to McOS-MJV and icons to La-Capitane. Navigate to window titlebars section and enable maximize/minimize under titlebar buttons. This adds buttons to all windows that let you maximize or minimize them.

Themes

Appearance

Window Buttons

Install RPM Fusion

This is a tool that gives you access to a lot of community developed tools and is very useful for workstations.

$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Optimize Battery Usage

There are additional drivers needed to ensure your battery is used efficiently. Not installing these leads to quicker battery drain.

$ sudo dnf install tlp tlp-rdw

For thinkpads add additional driver from RPM fusion.

$ dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Install Multimedia Codecs

$ sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
$ sudo dnf groupupdate sound-and-video

Setup Solarized

Solarized is a color scheme for terminal sessions. Let’s face it staring at a black screen with green text is bad and tiring for your eyes. These color patters are soothing and will let you enjoy starring at CLI terminals.

$ sudo dnf install -y p7zip
$ mkdir ~/solarized
$ cd ~/solarized
$ git clone https://github.com/sigurdga/gnome-terminal-colors-solarized.git
$ gnome-terminal-colors-solarized/install.sh

Setup vim and install solarized colors for vim.

$ sudo dnf install -y vim
$ git clone https://github.com/altercation/vim-colors-solarized.git
$ mkdir -p ~/.vim/colors
$ cp vim-colors-solarized/colors/solarized.vim ~/.vim/colors/

Install VSCODE

Pretty much the standard IDE for software development, infrastructure-as-code, blogging or anything that requires editing text.

$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ cat <<EOF | sudo tee /etc/yum.repos.d/vscode.repo
[code]
name=Visual Studio Code
baseurl=https://packages.microsoft.com/yumrepos/vscode
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
EOF
$ sudo dnf check-update
$ sudo dnf install -y code

Install Ansible (Optional)

If you aren’t automating stuff with Ansible it is never to late to change your life.

$ sudo dnf install -y ansible
$ sudo dnf install -y python-ansible-runner
$ pip install ansible-runner-http
$ pip install openshift
$ ansible-galaxy collection install kubernetes.core

Install Go (Optional)

Golang is by far my language of choice for it’s simplicity and elegance.

$ mkdir -p ~/go/src/github.com
$ sudo dnf install -y go
$ vi ~/.bash_profile
export GOBIN=/home/username
export GOPATH=/home/username/src
export EDITOR=vim

Install OpenShift and Kubectl (Optional)

Likely there are newer releases so grab latest. OpenShift and Kubectl 4.9

Install Operator SDK (Optional)

If you want to put all those Ansible skills to use in cloud-native world start writing Operators.

Likely there are newer releases so grab latest or release for your OCP release. Operator Framework 4.9

Summary

In this article we discussed the importance of choice and at least why you might consider Linux for your next workstation operating system. We also go through a step-by-step guide in configuring your Fedora workstation and give it similar look and feel to MacOS. If I only convinced one person to give Linux a try then it was all worth it!

(c) 2022 Keith Tenzer