Here you can find all my window manager configs as well as different programms I use with Arch.
Most of the programs are compatible with other Linux distributions.
To manage all the config files I use stow. I will explain how to manage the files when you have all the file structure like in this repository.
You can find a complete guide in Dream of Autonomy YT Channel and Stow documentation. The links to both resources can be found bellow.
Note
GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separated directories on the file system and makes them appear to be installed in the sample place through symlinks
Install stow package
sudo pacman -S stow
Important
The most important thing when working with stow is to have a folder in your home directory that is organised in the same way as the folders you want to track.
First thing you'll need to do is clone this repository in your home directory.
cd
git clone git@github.com:dimanu-py/dotfiles.git
With the current folder structure, you can select which packages you want to use. For example, if you only want to apply my fish and i3 configurations, you would run:
stow fish
stow i3
Note
These commands will create a symlink with the same structure of the package in your .config folder.
This section will cover all software packages that I've install. Well, maybe not all of them, but the most importants ones.
If you only want to install them and use them directly with stow, run the following:
cd dotfiles
stow packages
cd
sudo pacman -S --needed - < pkglist.txt
To set and modify the wallpaper I use feh and nitrogen
To install these packages run:
sudo pacman -S feh
To set the wallpaper execute
feh --bg-scale path/to/wallpaper
Personally, I normally download this GitHub repository for my wallpapers.
For installing fonts I usually go to Nerd Fonts and download the ones I like. My favourite ones however are already downloaded and saved in this repo under the fonts package.
To list all available fonts you can run
fc-list
For audio I use pipewire. I recommend installing a graphical program such as pavucontrol if you prefer to do this kind of things with a GUI instead of shortcuts or terminal commands.
sudo pacman -S pipewire pavucontrol
To manage volumen control easily latter on with shortcuts I recommend installing pamixer too.
Important
My window manager configs have keybindings with pamixer, if you don't install it you would need to change it.
In my case, the monitor setup is a bit special because I use a docking station with Display Manager drivers. Under the monitor package you can have more detailed information on how to setup everything and why the need of it. In summary:
You don't need to follow these instructions if it's not your case. What I mainly use to set the monitors is xrandr
To be able to use external hard drives or USBs you would need to install udiskie. If you want to read write NTFS formatted drives you would need ntfs-3g too.
sudo pacman -S udiskie ntfs-3g
You can configure your network connection with nmcli. With this utility you can search for your wifi with
ncmli device wifi list
and connect running
nmcli device wifi connect network-name password network-password
However, I prefer to use a graphical tool such as Network Manager
sudo pacman -S network-manager-applet
When you install the packages for network and storage you'll be able to launch the programs and see icons to click and configure drives and network.
udisikie -t &
nm-applet &
If you want, you can install tray icons for volume and battery:
sudo pacman -S volumeicon cbatticon
Then run them with
volumeicon &
cbatticon &
To execute programs easily I install rofi
sudo pacman -S rofi
You can downloads all the themes by running
git clone https://github.com/davatorium/rofi-themes
cd rofi-themes
./install.sh
However, I have by default the onedrak theme download in my configs so it gets applied automatically when I sincronizee my configs.
To have desktop notifications I use libnotify and notification-daemon
sudo pacman -S libnotify notification-daemon
For tilling window managers you need to create a service to get notifications:
sudo nano /usr/share/dbus-1/services/org.freedesktop.Notifications.service
Paste these lines
[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/lib/notification-daemon-1.0/notification-daemon
Test it like so:
notify-send "Hello World"
For my terminal emulator I use wezterm and my bash profile is fish
sudo pacman -S wezterm fish
All the configurations can be reviewed in their corresponding packages, wezterm and fish
I have a specific package to store my personal preferences when using git and a bunch of aliases when I use the terminal. All the explanation can be found in the README file inside gitconfig package.
My favourite window manager is i3. To install it and its configuration files run:
sudo pacman -S i3
stow i3
You would want to install i3blocks, i3status and i3lock to have more control over your desktop enviroment.
sudo pacman -S i3blocks i3status i3lock
My configuration files for i3 are in the i3 package. They are separated in 7 files:
- appearance.conf: To configure anything related to the appearance of the window manager. Things like wallpaper, fonts, gaps, etc.
- autostart: To execute programs on startup
- bar: To configure the bar at the bottom of the screen. An alternative I use is polybar which configuration files can be found in the polybar package. Both bars are configured in a similar way, but I like more polybar.
- binding_modes.conf: To configure the binding modes of the window manager.
- floating_windows: To configure specific windows that should be open as a floating window.
- keybindings.conf: To configure the keybindings of the window manager.
- workspaces.conf: To configure the workspaces of the window manager.
- config: The main configuration file. It only includes all the other files.
- config.bak: A backup of the default config file.
Under the scripts folder you can find a script to lock your screen with i3lock and another script to logout, switch user, reboot, etc. Inside them you can find where you should copy this files in order to make them work. Remember to give execution permissions with
chmod +x path/to/script
To install additional software from the Arch User Repository (AUR) you can use an AUR helper. I use yay.
First, install base-devel and git:
sudo pacman -S base-devel git
Now, clone the repository and install it with makepkg:
cd /opt/
sudo git clone https://aur.archlinux.org/yay-git.git
sudo chown -R username:username yay-git/
cd yay-git
makepkg -si
Now you can install software using yay. For example, to install neovim from the AUR, you would run:
yay -S neovim-nightly
If you want to connect your phone to your computer using a USB port, you'll need MTP implementation and some CLI to use it, like this one:
sudo pacman -S libmtp
yay -S simple-mtpfs
To list connected devices:
simple-mtpfs -l
To mount the first device in the previous list:
simple-mtpfs --device 1 /mount/point
For a graphical file manager my favourite is pcmanfm but you can install thunar if you prefer.
sudo pacman -S pcmanfm thunar
For a terminal based file manager I recommend ranger. Although it's very vim-like, you can use it if you know how to move in vim.
sudo pacman -S ranger
We need a trash system to avoid losing files by accident. For a CLI trash system you can use gvfs and glib2.
sudo pacman -S glib2 gvfs
To trash a file you can use:
gio trash path/to/file
To empty the trash you can use:
gio trash --empty
With pcmanfm you can open the trash clicking on the left panel, but on the command line you can use:
ls ~/.local/share/Trash/files
To empty the trash you can use:
gio trash --empty
Note
If you want to look for different tools you can visit this page. For specific screenshot tools I search on this other page and watch some YT videos.
To make screenshots I use flameshot.
To install it you can use pacman:
sudo pacman -S flameshot
For image previews, one of the best that I could find is geeqie.
sudo pacman -S geeqie
To play videos and music I use vlc.
sudo pacman -S vlc
To connect to bluetooth devices I use bluez and blueman.
sudo pacman -S bluez blueman
To enable and start the bluetooth service run:
sudo systemctl enable bluetooth.service
sudo systemctl start bluetooth.service
With this you can run the blueman gui to pair devices and more.
Most of the applications for systray are not launch automatically. If we want to lunch some program before the window manager starts, we need to add the command to a xprofile file.
First, we need to install xinit:
sudo pacman -S xorg-xinit
Now you can use ~/.xprofile to run programs before your window manager starts:
touch ~/.xprofile
For example, if you place this in ~.xprofile:
xrandr --output eDP-1 --primary --mode 1920x1080 --pos 0x1080 --output HDMI-1 --mode 1920x1080 --pos 0x0 &
nm-applet &
udiskie -t &
volumeicon &
cbatticon &
Every time you login you will have all systray utilities and monitors set.
Note
Mine xprofile is all commented because I want to manage this programs inside the window manager.