Skip to content

Desktop Customization

Syed Sayem edited this page May 19, 2019 · 2 revisions

One of the best thing that I love about Linux desktop is the ability to tweak and customize anything you want.

This is a quick guide for installing and configuring i3 Tiling Window Manager. i3 is a very popular window manager that automatically tiles windows and manage those tiles across multiple virtual desktops.

You have two major choices for configuration in i3. You can have the files in a dot folder (such as /home/user/.i3/) or in the .config folder (/home/user/.config/i3/). It does not really matter which you use, but in this tutorial I will be referring to the .config approach.

 

Table of contents

 

top

 

Customizer

There are a number of ways to customize your desktop, here are some tools that will allow you to customize your desktop.

 

File Manager

  • ranger - A vim inspired filemanager for console.
  • Thunar - A modern file manager for the Xfce Desktop Environment.
  • PCManFM - A lightweight Gtk+ based file manager for X Window.

Music Player

  • mpc - Client for mpd, responsible for telling lemonbar about the currently playing media.
  • mpd - A daemon for playing music of various formats with ncmpcpp as client.
  • cmus - A small ncurses based music player.
  • ncmpcpp - An ncurses Music Player Daemon (MPD) client.

Music Visualizer

  • cava - Console-based Audio Visualizer for Alsa (MPD and Pulseaudio).
  • mpdviz - Console mpd visualizer like cava.
  • nausea - This is a simple Console audio spectrum visualizer, Work well with mpd daemon music player.

Image Viewer

  • feh - A lightweight image viewer.
  • sxiv - Simple X Image viewer like feh.
  • n30f - Image viewer to display an image in a borderless and transparent non-wm-managed window.
  • gpicview - A Simple and Fast Image Viewer for X.
  • nitrogen - A GUI background previewer and setter.

System Info

  • neofetch - A customizable system information written in Bash.
  • screenfetch - Bash screenshot information tool.
  • ufetch - Tiny system info for Unix-like operating systems

Text Editor

  • neovim - Vim-fork focused on extensibility and usability.
  • vim - Vi IMproved, a programmer's text editor.
  • Spacevim - Community-driven modular vim distribution with ultimate vim configuration and many build-in features.

Terminal

  • rxvt-unicode - A customizable terminal emulator forked from rxvt.
  • xterm - The standard terminal emulator for the X Window System
  • st - A simple terminal emulator for X which sucks less, with xft.

Menu

  • dmenu - A fast and lightweight dynamic menu for X.
  • jgmenu - Small X11 menu intended to be used with openbox and tint2.
  • myGtkMenu - GTK2, GTK3 standalone & lightweight menu written in C.
  • rofi - A window switcher, application launcher and dmenu replacement

Panel

  • lemonbar - A featherweight, lemon-scented, bar based on xcb.
  • polybar - A fast and easy-to-use status bar.
  • dzen2 - A general purpose messaging, notification and menuing program for X11.
  • xmobar - A minimalistic, mostly text-based status bar.
  • tint2 - A lightweight panel/taskbar with support system try.

Dock

  • Plank - A simplest dock on the planet, famous dock for linux user.
  • Cairo Dock - A desktop interface that takes the shape of docks, desklets, panel, etc

Notification Daemon

  • dunst - A lightweight replacement for the notification daemons provided by most desktop environments.

Logout Screen

  • lxsession-logout - A nice banner-style logout dialog for the LXDE.
  • oblogout - GTK/Cairo based logout box styled for openbox.
  • clearine - Beautiful logout UI for X11 window manager

Tweaks

  • wal - Generate and change colorschemes on the fly.
  • pywal - Generate and change colorschemes on the fly. A wal rewrite in Python 3.
  • wpgtk - A powerful GTK+ frontend for pywal, adding features such as flexible templates and editing colorschemes.
  • tintyourday - Generate your tint2 config with Xresources color
  • obtgen - Openbox theme generator.
  • Shift - An instantly window manager theme changer.
  • colorfil - Generate 16 color for Xresources colorscheme from one-color.
  • colorls - A Ruby gem that beautifies the terminal's ls command, with color and font-awesome icons
  • Cornora - Simple Hotcorner Launcher for X
  • Colorizer - Colorize gtk theme, xfwm theme, openbox theme, etc with .Xresources color

 

top

 

Getting started

In this quick demo, we're going to install the following tools:

  • X resources - Configuration dotfile
  • Gucharmap - Font Awesome icon viewer
  • Nerd Fonts Complete - Font
  • Font Awesome - Font
  • Source Code Pro - Font
  • i3-gaps - Window tiling manager
  • jsoncpp - Polybar dependency
  • polybar - A Better status bar for your Linux system
  • jgmenu - jgmenu is a small menu application for Linux/BSD.
  • rxvt-unicode - Customizable terminal emulator
  • Ranger - Text-based file manager that run in the shell and navigation is similar to vim key bindings.
  • Dmenu - Fast and lightweight dynamic menu for X
  • Rofi - Window switcher, run dialog, ssh-launcher
  • Conky - System monitor software for the X Window System
  • Nitrogen - View and set wallpaper
  • Dunst - Notification Daemons
  • Albert - Quick Launcher
  • Compton - Standalone compositor
  • Mate power manager
  • Lxappearance - Theme switcher for icons, fonts, etc
  • Arc-theme - Flat theme

 

top

 

Installation

Install pacman packages
sudo pacman -Syu i3-gaps ttf-font-awesome awesome-terminal-fonts \
otf-font-awesome adobe-source-code-pro-fonts jsoncpp jgmenu ranger \
dmenu rofi conky nitrogen dunst albert compton mate-power-manager
Install aur packages with yay
yay -S nerd-fonts-complete
yay -S polybar

 

I3 configuration

When you install i3, it gives you a choice of using the defaults or setting it up yourself. If you are a beginner, I recommend using the defaults, which includes a mod key of Alt. You use the mod key in several keyboard shortcuts, such as when you move windows or resize them.

 

Polybar

mkdir -p ~/.config/polybar
touch ~/.config/polybar/config
touch ~/.config/polybar/polyrun.sh
chmod +x ~/.config/polybar/config
chmod +x ~/.config/polybar/polyrun.sh

For more information, visit polybar wiki page

 

top

 

Albert

  • Open the terminal and type albert, and then ten press enter to configure the hotkey, themes, etc.
  • Open the i3 configuration file and comment out the line containing dmenu: vim ~/.config/i3/config
  • Add the line albert &at the end of the file vim ~/.config/polybar/launch.sh
  • Remove the alsa the Polybar panel: vim ~/.config/polybar/config
  • Restart the i3: Super + shift + r

Albert Extensions

Command
Lock
Log out i3-msg exit
Suspend systemctl suspend
Hibernate systemctl hibernate
Restart systemctl reboot
Shut down systemctl poweroff

 

top

 

Using i3

Here are the keyboard command to use i3. They might seem complicated and hard to use at first, but with time they become second nature. When I was using Ubuntu on my friends laptop, I found myself tapping Alt + Enter for a terminal. Remember, if you stuck with the defaults, Mod is Alt.

Mod + Enter

This opens a terminal.

Mod + Arrow Keys

This selects a window, kind of like Alt Tab.

Mod + Shift + Arrow Keys

This moves the selected window.

Mod + Shift + Space

This floats the window. Move with Alt drag, resize with Alt right click drag.

Mod + R

This enters resize mode. Resize using the arrow keys, exit with Enter.

Another useful method to resize windows is Alt + right click drag.

Mod + H

This sets the layout mode to horizontal. New windows tile left and right.

Mod + V

This sets the layout mode to vertical. New windows tile up and down.

Mod + W

This sets the layout mode to tabs. New windows are tabbed.

Mod + S

This sets the layout mode to stacked. New windows are stacked.

 

top

 

Configuring

.config/i3/config is the file that controls the window manager. Here, you define startup applications, custom keyboard shortcuts, and layout rules. If you use i3bar, this is where you configure it.

 

top

 

Useful snippets

Place these at the end of the file (.config/i3/config). Exec means run command.

Set a background with feh

exec feh --bg-scale /path/to/your/image.png  

Restore set background (chosen with gui) using nitrogen

exec nitrogen --restore  

Start compton for window effects

exec --no-startup-id compton  

Open dmenu desktop (application search) with the super key

bindsym Super_L exec i3-dmenu-desktop  

Lock the screen with Control+Alt+L

bindsym Control+Mod1+l exec i3lock  

Bind your audio keyboard keys to change volume and pause/play

bindsym XF86AudioRaiseVolume exec amixer -q set Master 5%+ unmute  
bindsym XF86AudioLowerVolume exec amixer -q set Master 5%- unmute  
bindsym XF86AudioMute exec amixer -q set Master mute  
bindsym XF86AudioPlay exec playerctl play-pause  
bindsym XF86AudioNext exec playerctl next  
bindsym XF86AudioPrev exec playerctl previous  

 

top

 

LXDE Customization

You can change GTK settings with lxappearance. If you need to choose a theme, check out Adapta-gtk-theme, Papirus and Capitaine cursors

Run the following command to install Adapta-gtk-theme, Papirus and Capitaine cursors

sudo pacman -S adapta-gtk-theme papirus-icon-theme capitaine-cursors

Now open Customize Look and Feel application with Rofi or Albert

alt text

  • Select Adapta-Nokto-Eta from Widget tab
  • Select Papirus-Dark from Icon Theme tab
  • Select Capitaine Cursors from Mouse Cursor` tab
  • Now Apply and Close

Note: You will need to Log Out to see the change.

 

top

 

Bars

Bars are what you use to see info on your system, and in some cases launch apps and change settings. The default bar is i3bar with i3status, so that is not included here. If you want the same look as the screenshots, the files are linked.

 

top

 

Lemonbar

alt text

Lemonbar is very configurable and is probably the most popular solution, but has no clickable areas. To get this look, install lemonbar, and download the dots.

To run lemonbar on startup, add

exec /path/to/i3_lemonbar.sh  

to your .config/i3/config file.

 

top

 

Wrapup

Have fun with i3! You can do some pretty cool stuff with it.

 

top

Clone this wiki locally