Skip to content
L Luka Piplica
linux gnome ubuntu dotfiles customization

GNOME goes Nord: Transforming Ubuntu into a Keyboard-Driven Workstation

A comprehensive developer guide to custom-building a high-productivity tiling desktop environment on Ubuntu GNOME, featuring Pop Shell window tiling, Nordic GTK aesthetics, and advanced CLI workflows.

L

Luka Piplica

9 min read
Retro 8-bit pixel art of a vintage desktop computer with an infinite recursion effect on the screen

GNOME is highly regarded in the Linux ecosystem for its stability, modular extensions framework, and polished desktop services. However, power users and developers often prefer the hands-on-keyboard efficiency of tiling window managers. Traditionally, this required switching to a custom window manager like BSPWM or i3.

Fortunately, by leveraging the GNOME Shell extension ecosystem and System76's Pop Shell auto-tiling compiler, it is possible to transform Ubuntu’s standard GNOME desktop into an ultra-productive, keyboard-driven tiling workstation—retaining the convenience of desktop environment system daemons while achieving window manager efficiency.

This guide provides a detailed walkthrough for building a sleek, auto-tiling workspace on Ubuntu, centered around the professional Nordic color palette and customized command-line utilities.


Core System Architecture & Visual Palette

To build a unified, high-performance workstation, we replace standard window interactions with automatic tiling scripts and apply a consistent, high-contrast dark GTK theme. The core specifications of the environment are structured below:

ComponentSoftware / ProjectTechnical Purpose & Role
Operating SystemUbuntuStable Debian-based Linux distribution
Desktop EnvironmentGNOMECore desktop manager and display compositor
Window Tiling EnginePop ShellKeyboard-driven auto-tiling extension
Aesthetics / GTK ThemeNordicDeep arctic blue palette for application frames
Icon SetFlatery DarkHigh-contrast, minimalist flat icon vectors
Cursor PointerOreo BlueCustomized circular modern cursor pointer
Default BrowserFirefoxHigh-performance, privacy-focused web browser

Step-by-Step Installation & Workspace Tweaks

To ensure absolute system stability, we recommend starting from a clean installation of Ubuntu (such as the Minimal installation flavor to reduce initial package bloat).

1. Repository Synchronization and Upgrades

First, synchronize your package indexes and upgrade core system components:

sudo apt update
sudo apt upgrade -y

2. GNOME Extensions & Tweak Suite Setup

To manage themes and custom panel extensions, we install the GNOME extensions package manager and the Tweaks utility:

sudo apt install -y gnome-tweaks gnome-shell-extensions

Installing Essential GNOME Shell Extensions

Open Firefox, navigate to the GNOME Extensions Portal, download the browser connector plugin, and install the following three extensions by toggling their sliders to On:

  1. Dash to Panel: Combines the top bar and system dock into a single, cohesive taskbar, saving valuable screen real estate.
  2. User Themes: Enables loading custom GTK shell themes directly from user folders.
  3. Transparent Window Moving: Adds subtle opacity adjustments when moving floating window layers, improving spatial visibility.

Tip: Open the Gnome Tweaks application, navigate to the "Extensions" tab, verify the extensions are active, and turn off legacy Desktop Icons. Set the Transparent Window Moving opacity value to 0.2 in its configurations for an optimal visual balance.

3. Integrating the Pop Shell Auto-Tiler

System76's Pop Shell extension provides advanced tiling features (such as binary-tree auto-tiling, gap configurations, and keyboard window focus swaps) directly on top of GNOME.

Install compilation dependencies:

sudo apt install -y git node-typescript make

Navigate to your local Downloads folder, clone the Pop Shell source repository, and compile it:

cd ~/Downloads
git clone https://github.com/pop-os/shell.git
cd shell
make local-install

Once successfully compiled, reload your GNOME Shell (by pressing Alt + F2, typing r, and hitting Enter, or logging out and logging back in). Enable the tiling feature from the new tiling icon in your top status panel.


Compiling & Installing the CLI Productivity Suite

To populate our tiled workspaces with efficient terminal-based applications, compile and install these utilities:

1. Terminal System Information & System Monitors

Install standard system visualization and monitoring programs:

# Visual hardware dashboard (Htop)
sudo apt install -y htop

# Command-line system details fetcher (Neofetch)
sudo apt install -y neofetch

# Terminal file explorer (Ranger)
sudo apt install -y ranger

# Terminal digital clock (Tty-clock)
sudo apt install -y tty-clock

# Retro code visualizer (Cmatrix)
sudo apt install -y cmatrix

# Terminal text processors (Vim and Zathura PDF reader)
sudo apt install -y vim zathura

2. Desktop Music Player (Lollypop)

For managing local media files with a beautiful, lightweight interface:

sudo apt install -y lollypop

3. Terminal character-art generation (cbonsai)

Compile the ncurses-based terminal bonsai tree generator:

cd ~/Downloads
sudo apt install -y libncursesw5-dev
git clone https://gitlab.com/jallbrit/cbonsai.git
cd cbonsai
make install PREFIX=~/.local

4. Interactive Terminal Tetris Game (tty-tetris)

Compile a custom, high-performance Tetris game directly for terminal windows:

cd ~/Downloads
sudo apt install -y cmake
git clone https://github.com/Holixus/tty-tetris-v2.git
cd tty-tetris-v2
cmake .
make 
sudo make install

5. Compiling CAVA (Console Acoustic Visualizer for Alsa)

Compile the CAVA audio visualizer to monitor sound output with deep contrast bars:

# Install compilation headers
sudo apt install -y libfftw3-dev libasound2-dev libncursesw5-dev libpulse-dev libtool automake libiniparser-dev

# Export header flag
export CPPFLAGS=-I/usr/include/iniparser

# Clone and compile CAVA source
cd ~/Downloads
git clone https://github.com/karlstav/cava.git
cd cava
./autogen.sh
./configure
make
sudo make install

6. Terminal Typing Speed Auditor (Ttyper)

Install the Rust-based terminal speed typing monitor:

sudo apt install -y cargo
cargo install ttyper

Grub Bootloader & Themes Overhaul

A premium visual setup begins before the operating system even boots. We install a custom bootloader screen and deploy the Nordic color palette across all desktop application shells.

1. Bootloader Visual Upgrade

Clone the Sekiro GRUB bootloader theme repository and run the automated installation script:

cd ~/Downloads
git clone https://github.com/semimqmo/sekiro_grub_theme.git
cd sekiro_grub_theme
sudo ./install.sh

2. Deploying Nordic Visual Assets

To customize window borders and icon vectors, create two hidden directories in your local home directory:

cd ~/
mkdir -p .themes
mkdir -p .icons

Open GNOME Tweaks, navigate to the Appearance tab, and select Nordic for applications/shell themes, Flatery Dark for icons, and Oreo Blue for cursors.


Workspace Layout & System Customization Showcase

Once the auto-tiler is enabled and the themes are deployed, your workspace arranges application screens with clean, geometric gaps and high visual contrast.

System Layout & Terminal Workspace

The terminal workspace utilizes standard layout grids to keep key system metrics and text files visible in real-time, eliminating window overlaps:

Ubuntu GNOME customized with a Nordic theme displaying active terminal layouts and system specifications

Minimalist Home Page & Music Workspace

The home screen showcases customized desktop wallpapers, dynamic music audio visualizers (CAVA), a minimalist Firefox start page, and local terminal-based Python utilities:

Full custom Nordic desktop workspace including browser start page, live terminal window tiling, and system widgets


Technical Glossary: The Custom Workstation Lexicon

ToolTechnical OverviewVisual & Operational Benefit
Pop ShellWindow manager manager wrapperTranslates raw application launches into clean binary-tree partitions. Saves monitor space and reduces mouse dependency.
NeofetchCryptographic visual info fetcherFormats core specifications (kernel, shell, system themes) alongside a high-resolution ASCII representation of the OS.
ZathuraVim-like lightweight PDF readerRenders documents utilizing customizable keyboard shortcuts and minimal memory footprint, with dark mode page-color inversions.
Rangerncurses python file navigatorTranslates folder navigation into a fast terminal grid with multi-column hierarchical directory previews.
VimAdvanced terminal text editorHigh-speed terminal-based IDE featuring modal editing shortcuts and deep code customization options.
cbonsaiCLI vector animation algorithmIteratively prints character trees inside open shells, adding visual flavor to background terminals.
tty-tetrisC++ terminal game matrixHigh-refresh-rate retro game running inside shell sessions using keyboard mapping.
ttyperRust-based typing testing utilityMeasures speed (WPM) and spelling accuracy of input keys during terminal sessions.
Nordic GTKHarmonized arctic colors themeEliminates blinding white UI light, replacing it with elegant, low-strain dark blues and pastel accents.
FlateryHigh-contrast flat icons libraryAligns launcher and taskbar icon silhouettes for a unified, modern vector aesthetic.
Oreo BlueVector-scaled circular pointerReplaces the traditional arrow pointer with a modern, high-visibility circular target.
FirefoxMemory-safe custom web browserHighly customizable browser configured with custom CSS start pages (userChrome.css) for minimalism.
tty-clockTerminal time signal moduleProjects system times utilizing large terminal block character layouts.
CAVABar-spectrum audio visualizerTranslates real-time desktop sound frequencies into responsive visual bars.
HTopActive systems manager dashboardAdvanced task manager showcasing real-time CPU/memory core usage, load averages, and active processes.
CMatrixVolatile text scrolling engineRenders green falling character animations matching the aesthetic of classic scifi computers.
LollypopModern music playback catalogParses audio metadata and covers, presenting an aesthetic desktop music player interface.

Conclusion & Customization Retrospective

Customizing a monolithic desktop environment like GNOME shows that you don't need to sacrifice modern system services or device stability to enjoy the efficiency of a keyboard-driven window manager. Integrating System76's auto-tiling scripts with standard Ubuntu packages results in a responsive, low-latency, and beautiful development platform.

This desktop environment walkthrough is intended for educational and reference purposes, showcasing the deep customization potential of open-source desktop systems and keyboard-driven terminal workflows.

Back to Blog
Share:

Follow along

Stay in the loop — new articles, thoughts, and updates.