[BSPWM] Pop OS Nordic
Table of Contents

🖥️ Pop! Linux configuration files 🖥️

These are my current dotfiles of Pop! Linux distribution OS.
The installation will help you create the same look like the pictures; here are the step-by-step instructions.
System specifications:
- OS: Pop!_OS
- WM: BSPWM
- Keyboard Deamon: Sxhkd
- Bar: Polybar
- Compositor: Picom
- App Launcher: Rofi
- Terminal: Alacritty
- Shell: Oh-my-ZSH
- Shell theme: Powerlevel10k
- Text Editor: Vim-Airline
- Lockscreen: Slim and Slimlock
- Notifications: Dunst
- GTK Theme: Nordic_Dark
- Icon Theme: Flatery_Dark
- Cursor Theme: Oreo_Blue
- Font: Source_Code_Pro
- Browser: Firefox
- Browser Theme: Minimal_Functional_Fox
Installation #
To start making this look, I assume you have a freshly installed Pop! OS.
If you are interested in what an application does, Wikipedia will help you.
Repository upgrade and system upgrade #
sudo apt update sudo apt upgrade
Installation of BSPWM Tilling Window Manager #
First, we need to install a few necessary so-called dependencies that we need to proceed with the installation.
- Installation of required dependencies:
sudo apt install build-essential git vim xcb libxcb-util0-dev libxcb-ewmh-dev libxcb-randr0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-xinerama0-dev libasound2-dev libxcb-xtest0-dev libxcb-shape0-dev
- Repository cloning:
cd ~/Downloads git clone https://github.com/baskerville/bspwm.git
- Compiling and installing BSPWM:
cd bspwm make sudo make install
- Copy BSPWM configuration files:
mkdir ~/.config/bspwm cp examples/bspwmrc ~/.config/bspwm chmod +x ~/.config/bspwm/bspwmrc cd ..
Installation of keyboard deamon #
For example, we must use the so-called keyboard daemon to use keyboard shortcuts to open a terminal, another application, etc. It is a process that runs in the background and instructs BSPWM Tilling Window Manager what to do if someone presses a specific shortcut on the keyboard.
If you are interested in what a shortcut does according to my settings, the shortcut section will help you.
- Repository cloning:
cd ~/Downloads git clone https://github.com/baskerville/sxhkd.git
- Compiling and installing sxhkd:
cd sxhkd make sudo make install
- Copy sxhkd configuration files:
mkdir ~/.config/sxhkd cp ../bspwm/examples/sxhkdrc ~/.config/sxhkd cd ..
gnome-terminal under the terminal emulator.Installation of Polybar #
- Installation of required dependencies:
sudo apt install cmake cmake-data pkg-config python3-sphinx libcairo2-dev libxcb1-dev libxcb-util0-dev libxcb-randr0-dev libxcb-composite0-dev python3-xcbgen xcb-proto libxcb-image0-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-xkb-dev libxcb-xrm-dev libxcb-cursor-dev libasound2-dev libpulse-dev libjsoncpp-dev libmpdclient-dev libcurl4-openssl-dev libnl-genl-3-dev
- Repository cloning:
cd ~/Downloads git clone --recursive https://github.com/polybar/polybar
- Compilation and installation of polybar:
cd polybar mkdir build cd build cmake .. make -j$(nproc) sudo make install
Installation of Picom #
- Installation of required dependencies:
sudo apt install meson libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev
- Repository cloning:
cd ~/Downloads git clone https://github.com/ibhagwan/picom.git
- Making picom with Ninja:
cd picom git submodule update --init --recursive meson --buildtype=release . build ninja -C build
- Installation of picom compositor:
sudo ninja -C build install cd ..
Installation of Rofi #
sudo apt install rofi
Installation of Alacritty terminal #
sudo apt install alacritty
- Cloning this repository:
cd ~/Downloads git clone https://github.com/lukapiplica/dots.git
- Setting up an alacritty theme:
mkdir ~/.config/alacritty cp dots/alacritty/alacritty.yml ~/.config/alacritty/
GLSL 3.30 is not supported, do this:nano /usr/share/applications/com.alacritty.Alacritty.desktop
Change Exec=alacritty into Exec=bash -c "LIBGL_ALWAYS_SOFTWARE=1 alacritty".
Installation of fonts #
cd ~/Downloads cd dots sudo cp -r Source_Code_Pro /usr/share/fonts fc-cache -v
Setting the wallpaper #
- Installation of Feh program:
sudo apt install feh
- Moving wallpapers:
mkdir ~/Wall cp -r ~/Downloads/dots/Wallpapers/ ~/Wall
- Setting the wallpaper:
echo 'feh --bg-fill $HOME/Downloads/dots/Wallpapers/wallpaper2.jpeg' >> ~/.config/bspwm/bspwmrc
Configuration of polybar #
mkdir ~/.config/polybar cd ~/Downloads/dots/polybar cp * -r ~/.config/polybar echo '~/.config/polybar/./launch.sh' >> ~/.config/bspwm/bspwmrc cd fonts sudo cp * /usr/share/fonts/truetype/
Installation of Oh-My-ZSH #
sudo apt install zsh sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)
Installation of Powerlevel10k #
- Repository cloning:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
After cloning, we have to set this topic in the
~/.zshrcfile; we do this by typing in the.zshrcfile with this commandZSH_THEME="powerlevel10k/powerlevel10k"We type in the terminal:
p10k configure
And let’s follow the instructions in the terminal to make the theme we want.
Installation of Vim theme #
mkdir -p ~/.vim/colors cd ~/Downloads cp dots/nord.vim ~/.vim/colors
- Cloning a Vim Airline theme:
cd ~/Downloads git clone https://github.com/vim-airline/vim-airline.git cd vim-airline cp * -r ~/.vim echo 'colorscheme nord' >> ~/.vimrc echo 'let g:airline_theme='base16'' >> ~/.vimrc
Setting up rofi theme #
mkdir -p ~/.config/rofi/themes cp ~/Downloads/dots/nord.rasi ~/.config/rofi/themes rofi-theme-selector
- Rofi Theme Selector will show us some of the themes. To select our theme go to
Nord themeclick Enter, and then to set it forever, press Alt + a
nano ~/.config/sxhkd/sxhkdrc
- Opens the nano text editor in the terminal and we have to change
dmenu ** ** to **rofi -show drun`
Installation of Slim and Slimlock #
sudo apt instll slim libpam0g-dev libxrandr-dev libfreetype6-dev libimlib2-dev libxft-dev sudo dpkg-reconfigure gdm3
- To set the theme:
cd ~/Downloads/dots sudo cp slim.conf /etc && sudo cp slimlock.conf /etc sudo cp default /usr/share/slim/themes
Various tools #
We have successfully achieved the look of this operating system; now, we are installing several programs from the pictures.
Installation of tty-clock #
sudo apt-get install tty-clock
Installation of CAVA Audio Visualizer #
sudo add-apt-repository ppa:hsheth2/ppa sudo apt-get update sudo apt-get install cava
Installation of htop #
sudo apt-get install htop
Installation of cmatrix #
sudo apt-get install cmatrix
Installation of sxiv #
sudo apt-get install sxiv
Installation of Ranger #
sudo apt-get install ranger
Installation of pfetch #
cd ~/Downloads git clone https://github.com/dylanaraps/pfetch.git sudo install pfetch/pfetch /usr/local/bin/ ls -l /usr/local/bin/pfetch
Installation of chafa #
cd ~/Downloads git clone https://github.com/hpjansson/chafa.git cd chafa ./autogen.sh make sudo make install
Installation of snake game #
sudo apt install python3-pip python3 -m pip install -U pygame --user cd ~/Downloads git clone https://github.com/Unixado/Snake.git cd Snake python src/game.py
Installation of lollypop #
sudo add-apt-repository ppa:gnumdk/lollypop sudo apt install lollypop
Installation of Minimal Functional Fox #
sh -c "$(curl -fsSL https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/install.sh)"
- Set up a Firefox theme
cp -r ~/Downloads/dots/.firefoxthemes ~/
- Then open
Firefoxand go topreferences, then toHomeand where it saysHomepage and new windowswe selectCustom URLs ..., below we write this:
file:///home/*YOUR USERNAME*/.firefoxthemes/startpage/Startpage/index.html
Restart Firefox
Installation of GTK Theme #
Installation of Lxappearance #
sudo apt-get install lxappearance
Installation of Nordic Dark theme #
Theme link: https://www.gnome-look.org/p/1267246/
Download the zip file, extract it and insert it in Lxappearance.
Installation of Flattery Dark theme for icons #
Theme link: https://www.gnome-look.org/s/Gnome/p/1332404
Download the zip file, extract it and insert it in Lxappearance.
Installation of Oreo Blue cursor theme #
Theme link: https://www.gnome-look.org/s/Gnome/p/1360254/
Download the zip file, extract it and insert it in Lxappearance.
Wikipedia #
Once we have made this BSPWM configuration, it is time to clarify what each application does. Within the ~/.config/ directory you can find all the files you need to run BSPWM.
🧠
[BSPWM]BSPWM is a tiling window manager that, unlike other desktop interfaces, each new window opens according to an algorithm.
If we have, for example, two windows, they will be open in full screen, and they cannot be located one over the other, such as in Windows or GNOME interfaces. Theoretically, it effectively uses the space on the screen so that the entire screen is filled. If we run out of space on the first desktop, we can switch to the second desktop using the keyboard shortcut or mouse and continue using this operating system.
⌨️
[SXHKD]SXHKD is a keyboard daemon. It works for us as a background process and tells BSPWM which application to open if the user presses a specific shortcut on the keyboard.
🍫
[Polybar]Polybar is our status bar at the top of our desktop.
It serves us to display notifications, date and time, internet, battery, shutdown and restart menu of the operating system and most important workspaces from BSPWM.
📚
[Picom]Picom is a compositor; it serves us as a process that sets rounded edges on every application we open.
🤓
[Rofi]Rofi is a process that opens up other applications, most helpful in running GTK applications (user interface applications).
💻
[Alacritty]terminal.Alacritty serves as a terminal emulator, i.e. a replacement for the standard GNOME terminal.
We use it mainly because it gives us the ability to achieve better looks by editing its config files.
🐚
[Oh-My-ZSH]shell.Oh-My-ZSH is a framework that makes it easier for us to manage ZSH configurations.
In this case, it is mostly used to add topics to a terminal that has a
ZSH shell.ZSH (Zshell)was chosen because it is newer, and most of the updates from other Linux distributions are already moving to it compared toBash shell.- We used the
Powerlevel10kconfiguration to set the themes.
- We used the
📋
[Vim]text editorAs many people use notepad on Windows operating systems, we use nano and Vim.
The Nano text editor is much easier to use, while the Vim is made more for developers because of its shortcuts.
- Vim Airline is a theme that gives us a different look than a regular Vim.
📺
[Slim]lockscreenSlim is our lock screen.
Slimlock is the theme that we used for the lock screen.
💬
[Dunst]notifications.Dunst is a process that runs in the background, and its primary purpose is to display notifications on the status bar (Polybar).
The advantage of dunst is that it provides the ability to code themes for appearance and many other functions such as. Which notifications to display, etc.
🕶️
[Nordic Dark]GTK theme.Nordic Dark is a GTK theme (theme for user interface applications) that gives us a dark look at applications with a user interface.
🔷
[Flattery Dark]icon theme.The name itself says that applications with a user interface mostly have icons that we can click with the mouse; this theme gives us a different look to the icons.
🔵
[Oreo Blue]cursor theme.This theme gives us a blue cursor look, it was inserted just for the looks and because it matches all the other colours of this operating system.
🔤
[Source Code Pro]font.Font of this operating system.
🔥🦊
[Firefox]web browser.I use Firefox because it is one of the best privacy-oriented web browsers, in my opinion.
🦊
[Minimal Functional Fox]firefox theme.This topic is here mainly for appearance but also because it is minimal.
⏰
tty-clockTty-clock is an application that has the purpose of showing the time and date in the terminal.
🎚️
CAVAaudio visualizer.Cava is our application that serves as an audio visualizer.
📈
HTopThe HTop application shows which processors are currently running and how much RAM they are taking in, and many other things. Think of HTop as a Task Manager in the Windows operating system.
😎
CMatrixCMatrix is an application that is here just for looks, and its purpose is to print some text in an open terminal that aims to give a display of hacking from the Matrix movie.
🖼️
SXIVSXIV is an image viewer application that is an application that opens images to us.
🤠
RangerRanger is an application that allows us to see and access all files on the computer in the terminal.
🗄️
PfetchThe purpose of the Pfetch application is to show which operating system we use, which laptop/computer we have, which is the current version of the kernel, how much uptime we currently have, how many packets we have and how much RAM we have.
⚙️
ChafaChafa is an application that prints an image to use in the terminal, thus achieving a retro/ASCII look of an image.
🐍
SnakeIn this case, the Snake app is an old snake game from the Nokia 3310 phone that has been slightly modified in terms of colours and is adapted to be played in the terminal.
🍭
LollypopLollypop is a music app, we play songs through it.
Shortcuts #
As super we use the Windows key on the keyboard. Super is the most important key on our keyboard because we use it to give instructions to the SXHKD keyboard daemon.
Keyboard #
| Keys | Action |
|---|---|
| super + enter | Opens terminal |
| super + space | Opens Rofi through which we open GTK applications |
| super + escape | Reloads SXHKD and its configuration files |
| super + alt + r | Restarts the BSPWM Tiling Window Manager |
| super + w | Shuts down the current application |
| super + [1-0] | Changes the current work space |
| super + g | It changes the current window that is smaller to the area of the larger window, while the larger window puts it in the position of the smaller one |
| super + m | Opens the application across the entire desktop |
| super + [h,j,k,l] | Moves focus to another window |
| super + alt + [h,j,k,l] | Moves the windows outward |
| super + alt + shift + [h,j,k,l] | Moves the windows inwards |
| super + s | Puts windows in the so-called float mode, an option where we can put a window on the window as in Windows operating systems |
| super + ctrl + [arrow keys] | Moves the float windows |