- Introduction
- Overview
- Installation
- Anime Wallpapers
- Virtualization
- Configuration Files
- BSPWM Mouse
- Keyboard Shortcuts
- Theme
- References
Note: This projects was originally started by nozerobit, but got transferred. It's currently maintained by @m4nqn.
A truly colorful linux configuration.
This is my first dotfiles, feel free to use it but don't forget to give me credits @nozerobit.
History:
- 2021: kali-config
- 2021: colorful-kali
- 2022: colorful-dotfiles
- 2022: Colorful (last name)
- 2023: Ownership transfer
Note: Last tested on
Kali GNU/Linux Rolling 2022.3usingXfcewithlightdm: 11/27/2022
The installation section will guide you through a step-by-step installation process.
This setup uses the following software:
- WM: bspwm
- Hotkey: sxhkd
- Locker: i3lock-fancy
- Menu: jgmenu
- Notifications: dunst
- Shell: zsh
- Bars: polybar
- Compositor: picom (yshui)
- File Manager: thunar
- Font Terminal: iosevka
- Application Launcher: rofi
- Browsers: firefox
- Terminals: kitty (for aesthetics) and qterminal (for pen-testing)
- Static Wallpaper: feh
- Live Wallpaper: gpu-video-wallpaper
All the features can be seen in the overview section.
Note: This section contains highly compressed / low-quality GIFs, in reality is not blurry and grainy.
Normally you would use Windows + Alt + R to reload bspwm in order to fix the wallpaper resolution scale and the polybar when changing screen resolution but I have made a script with xeventbind and a polybar configuration so that you don't have to reload bspwm. In other words, it automatically changes the wallpaper and the polybar resolution/size when changing the screen resolution without the need to reload bspwm:
Note: The color of these bars is dynamic and the colors change according to the wallpaper.
Transparent theme created by @nozerobit (me):
Colorblocks theme (default), theme created by @adi1090x and heavily modified by @nozerobit (me):
Some polybars themes have audio volume modules. The volume can be adjusted with the mouse wheel.
You can change the polybar theme with the launcher:
❯ change-polybar
Usage: change-polybar --theme
Available Themes:
--colorblocks
--trans Here is an example:
change-polybar --transSome polybars are slower to load than others so it is recommended to kill the polybar first:
killall polybar; change-polybar --colorblocksIf you want to change the default polybar theme you can use the default-polybar script:
❯ default-polybar
Usage: default-polybar <theme_name>
Example: default-polybar trans
The available polybar themes are the following:
colorblocks
transChange the polybar theme:
❯ default-polybar trans
[+] Changing the default polybar theme to: trans
[+] Resetting BSPWM configuration
[+] Success: Your default polybar theme is now set to 'trans'You can use Windows + Alt + W to shuffle wallpapers and change colors on the fly:
Note: In the weird case that the polybar dies, you can use
Windows + Alt + Rto restart BSPWM. Some polybars themes do take more time to load since they use more scripts and icons. The polybarhacktheme is the slowest. The polybarforesttheme is not supported.
Warning: Avoid spamming this keyboard shortcut.
Alternatively, you could use Windows + Alt + E to change to a specific wallpaper using the GUI:
Alternatively, you can use Windows + Alt + X to select the wallpaper with a preview, then hit Ctrl + x and then W to change the wallpaper. Once the wallpaper is set we can close the program with Windows + W:
We can also use live wallpaper / animated wallpapers with vwallpaper (demo script):
vwallpaper --start ~/Videos/wallpapers-animated/Cyberpunk-2077-City-Live-Wallpaper.mp4 &>/dev/null & disownWe can stop the live wallpaper / animated wallpapers with the following:
vwallpaper --stopWarning: If the wallpaper doesn't have the correct resolution, you can change it by editing:
sudo vim $(which video-wallpaper.sh)Then change the resolution at line 60:
# Change -g <TO_YOUR_RESOLUTION>
"$scriptdir"/xwinwrap -g 3840x2160 -fdt -ni -b -nf -un -o 1.0 -- mpv -wid WID --loop --no-audio "$VIDEO_PATH" & disownI'll try to find a better solution but for now that should do the work.
Warning: Transparency should work by default in native installs as long as you have the GPU drivers installed in your system. In most virtual machines that are using virtualized GPUs you will have to set X11 as the video output. If your virtualization software supports GPU passthrough then you may not have to change anything, unless you want to select a specific video output driver.
If you want to add transparency to a VM add the following flags:
-vo x11 --hwdec=auto-safe --profile=sw-fastWarning: This may increase the CPU usage up to 15%-25% in VMs.
If you don't care about the performance then you can follow this example:
xwinwrap -g 1920x1080 -fdt -ni -b -nf -un -o 1.0 -- mpv -wid WID -vo x11 --hwdec=auto-safe --profile=sw-fast --loop --no-audio ~/Videos/wallpapers-animated/Astronaut-In-Space-With-Jellyfish-Live-Wallpaper.mp4You can use htop to monitor the performance of each process:
htopYou will probably see that the Xorg process increases up to 60%-70% when the video output (-vo) is set to x11 in mpv. Therefore, I don't recommend running this "video output driver".
For more information about video output drivers read the mpv repo vo.rst.
The animated wallpapers also support automatic resizing:
We can close an animated wallpaper with the following command:
video-wallpaper.sh --stopYou could also use Windows + Alt + W or Windows + Alt + E to change the wallpaper.
The terminal font size can be changed with Windows + Alt + F:
Note: When using
qterminalis recommended to use the GUI preferences window instead. Also, you need to open a new terminal to see the changes.
You can change the corners of the windows and the polybar to rounded or sharp corners with the shortcut Windows + Alt + B.
You can also copy IPs to the clipboard with a left click on the bar (ethernet, vpn or target):
Note: There's a VPN status bar, it shows your VPN IP when connected and it tells you when you're disconnected from a VPN.
There's a network bar where you can configure your network:
On zsh you can set the target IP with the command setarget 10.10.10.10. You can use the command notarget to remove the target IP:
You can set a default wallpaper that will be used at startup with the following:
❯ default-wallpaper --set ~/Pictures/Wallpapers/i-love-8-bit-qhd-1920x1080.jpg
[+] Added a default wallpaper!
❯ default-wallpaper --remove
[+] Random wallpapers will be set at startup!Some polybars themes are slower to load than others so it is recommended to kill the polybar first:
killall polybar; default-wallpaper --set ~/Pictures/Wallpapers/i-love-8-bit-qhd-1920x1080.jpgYou can also schedule a cronjob to change your desktop wallpapers and colors every x minutes:
❯ wallpaper-scheduler
Script usage: wallpaper-scheduler [-h] [-e] [-d] [-m <minutes>]
Example:
wallpaper-scheduler -m 5
Options:
-h: Print this help menu.
-e: Enable the cronjob.
-d: Disable the cronjob.
-m: Amount of minutes within the range of (1-59).This is awesome if you want your system to change your desktop wallpapers automatically every x minutes. This gives it a more "dynamic" feel to your setup.
Warning: If the color palette differ from the console and polybar, just use
Alt+Ctrl+Rto reset the colors.
You can also customize the polybar theme colorblocks:
This is the command for the polybar-changer help menu:
polybar-changer --helpYou can use Windows + Q to open the power menu:
You can escape or exit the powermenu with the Escape/Esc key in your keyboard.
If you put the computer to sleep, you can wake it up with the
Escape/Esckey on your keyboard.
You can also see a preview of each workspace, this is very useful when we want to know which applications or windows are open in each workspace.
Activate the bspwm workspace preview with the keyboard shortcut Ctrl + Alt + P, then view the workspaces preview with the Windows key. Then it takes a screenshot of each workspace when you navigate or change the workspace.
Once you're done, you can close the process with Ctrl + Alt + D or Ctrl + Alt + P.
Use
Ctrl + Alt + Pto completely de/activate bspwm workspace preview. UseCtrl + Alt + Dto deactivate bspwm workspace preview for the current screen resolution but automatically activate it again when the screen resolution changes.
Create pentesting project directories with mk:
mkView the storage (sda) information:
driveView your system information:
infoAlternatively, you can use neofetch to view your system information:
neofetchKill a process:
kp ssh
Extract nmap ports:
xp filename.gnmapIdentify the operating system:
os 127.0.0.1You can print the keyboard shortcuts with the script:
shortcuts
Usage: shortcuts [--sxhkd] [--kitty] [--neovim]
--sxhkd: Print sxhkd shortcuts.
--kitty: Print kitty shortcuts.
--neovim: Print neovim shortcuts.
--help: Print this help menu.
Info: Arrows = Left,Up,Down,Right keysYou can enable or disable picom shadows with pshadow:
pshadow
Usage: pshadow [--enable] [--disable]
--enable: Enable picom shadow.
--disable: Disable picom shadow.
--help: Print this help menu.In the case that you're in a "bloated" system, you can use the apt-uninstaller tool:
❯ apt-uninstaller.sh
APT Uninstaller by nozerobit
[i] This script uninstalls APT packages
[i] You can search and select multiple packages
[i] Keyboard Shortcut: Use Tab to select multiple packages
[i] Keyboard Shortcut: Use Ctrl+C to exitIt is recommended to disable sleep because the script can take a while to finish:
These are the installation steps:
- Clone this repo and change the directory:
git clone https://github.com/m4nqn/Colorful && cd ColorfulWarning: Don't run this script as the
rootuser. Run it with a user that's in thesudogroup. Also, don't install this script while using GNOME. For some reasonpywaldoesn't change the wallpaper when using GNOME. Here is a temporary solution.
If you copied this project from a Windows system you may want to convert it to unix:
find . -type f -print0 | xargs -0 dos2unix - Run the installation script from the
colorful-dotfilesdirectory:
chmod +x install.sh && ./install.shWarning: If a file fails to download then verify if you can download it manually, if you can. You could try running the script again.
If you want to perform a manual installation you can read the script and manually install it step-by-step.
Note: The installation script may work on other Debian-based systems but it is always tested on
Xfceusing Kali Linux.
Warning: Distribution updates and upgrades do sometimes change the dependencies and also other installations steps do change over time so it is a challenge to consistently maintain this installation script compatible for multiple distributions.
The script has four (4) symbols:
[+]= Success[-]= Failed[!]= Information[i]= Information to solve the error
The installation can take a while because it downloads a lot of things. The time that it takes to finish will depend mostly on your internet download bandwidth provided by your ISP.
- Reboot the machine (required):
reboot || systemctl reboot- Once you have rebooted the machine, select bspwm as the window manager and then log in.
You can restart bspwm at any time with Windows + Alt + R, this is useful to fix a WM issue.
That's it, now hit two (2) times the following keyboard shortcuts:
Windows + Alt + WandWindows + Alt + Band see which look you like the most.
Note: You may need to hit those keyboard shortcuts multiple times when you first install this configuration.
It is recommended to verify the Neovim plugins.
If you installed this configuration with a system that uses GNOME you might have an issue with pywal. It can "fixed" with the following:
pywal_get() {
wal -i "$1" -q -t; feh --bg-scale "$(< "${HOME}/.cache/wal/wal")"
}Edit each pywal script on the following path:
.config/polybar/theme_name/scripts/pywal.sh
.config/polybar/colorblocks/scripts/pywal.shIf you are in a virtual machine and you want to enable drag-and-drop files and copy-paste then read this section.
In Kali Linux the VMware guest tools are already configured so you don't have to do anything.
If you're using another Debian distro then install the following packages:
sudo apt install open-vm-tools open-vm-tools-desktopIf you're using Arch in VMware, read this documentation.
Install VirtualBox guest tools:
sudo apt install -y virtualbox-guest-x11
Start the service:
sudo systemctl status virtualbox-guest-utils.service
Enable VirtualBox service at startup:
sudo systemctl enable virtualbox-guest-utils.service
The SPICE agent allows for automatic X session resolution adjustment to the client resolution. The SPICE agent also provides support for copy and pasting between the host and guest and prevents mouse cursor lag.
sudo apt install -y spice-vdagentStart the service:
sudo systemctl start spice-vdagentThe QEMU guest agent runs inside the guest and allows the host machine to issue commands to the guest operating system using libvirt, helping with functions such as freezing and thawing filesystems. The guest operating system then responds to those commands asynchronously.
sudo apt install -y qemu-guest-agentStart the service:
sudo systemctl start qemu-guest-agentIf you want to add this service at startup, add it to bspwmrc:
echo "systemctl start qemu-guest-agent" >> ~/.config/bspwm/bspwmrcSince the service.unit file is not pre-configured for startups as seen here:
❯ sudo systemctl enable qemu-guest-agent
Synchronizing state of qemu-guest-agent.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable qemu-guest-agent
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
instance name specified.You could create your own service file though.
More information here.
Enable Hyper-V Enhanced Session in Hyper-V Settings:
Enable Guest services in Hyper-V VM Settings:
Lastly, read the official Kali Linux documentation and follow the steps.
If you would like to change some settings, here are the locations of the configuration files.
alacritty Terminal Configuration:
~/.config/alacritty/alacritty.ymlkitty Terminal Configuration:
~/.config/kitty/kitty.confbspwm WM Configuration:
~/.config/bspwm/bspwmrcsxhkd Keyboard Shortcuts Configuration:
~/.config/sxhkd/sxhkdrcpicom Transparency Configuration:
~/.config/picom/picom.confWarning: If you have issues with picom features, go to the yshui repo and view the issues.
polybar Workspace and Desktop Panel Configuration:
~/.config/polybar/colorblocks/launch.shrofi Program Launcher Configuration:
~/.config/rofi/configzsh Shell Configuration:
~/.zshrc| Action | Shortcut |
|---|---|
| Move a floating window or swap a tiled window. | alt+left mouse click |
| Resize any tiling or floating window. | alt+right mouse click |
| Open jgmenu for context menu. | super+right mouse click |
Since some keyboards don't have the arrow keys; the HJKL keys are used instead.
Also since some keyboards don't have the right windows key; the alt key is used instead because the alt key is almost always on the left side and right side of a keyboard.
| Action | Shortcut |
|---|---|
| Open the terminal emulator (kitty). | windows+enter |
| Open the terminal-emulator (qterminal), doesn't apply the pywal color. | windows+ctrl+enter |
| Launch the power menu. | windows+q or alt+q |
| Close the current window. | windows+w or alt+w |
| Restart the bspwm configuration. | windows+alt+r or ctrl+alt+r |
| Logout from the system. | windows+alt+q or ctrl+alt+q |
| Move through the windows in the current workspace. | windows+left,down,up,right or windows+h,j,k,l |
| Open rofi and Esc to exit. | windows+d or alt+d |
| Open rofi and run commands as sudo, useful for tools such as wireshark. | windows+ctrl+d |
| Change the workspace. | windows+1,2,3,4,5,6,7,8,9 or alt+1,2,3,4,5,6,7,8,9 |
| Change the current window to tiling mode. | windows+t or alt+t |
| Change the current window to "full" mode. | windows+m or alt+m |
| Change the current window to full-screen mode | windows+f or alt+f |
| Change the current window to floating mode. | windows+s or alt+s |
| Move the current window to another workspace. | windows+shift+1,2,3,4,5,6,7,8,9 or alt+shift+1,2,3,4,5,6,7,8,9 |
| Resize current window (only works if you are in terminal or floating mode). | windows+alt+left,down,up,right or windows+alt+h,j,k,l |
| Change the position of the current window (only works in floating mode). | windows+ctrl+left,down,up,right or windows+ctrl+h,j,k,l |
| Show a preselection and then open a window. | windows+ctrl+alt+left,down,up,right or windows+ctrl+alt+h,j,k,l |
| Undo the preselection. | windows+ctrl+space |
| Close and kill. | windows+shift+w or alt+shift+w |
| Alternate between the tiled and monocle layout. | windows+m or alt+m |
| Set the window state. | windows+shift+t,s,f or alt+shift+t,s,f |
| Set the node flags. | windows+ctrl+m,x,y,z |
| Focus on older or newer node in the focus history. | windows+o,i |
| Focus the last node/desktop. | windows+grave,Tab or alt+grave,Tab |
| Focus the next/previous desktop in the current monitor. | windows+bracket{left,right} or windows+bracket{h,l} |
| Focus the next/previous window in the current desktop. | windows+shift+c |
| Focus the node for the given path jump. | windows+p,b,comma,period |
| Focus the node in the given direction (swap window). | windows+shift+left,down,up,right or windows+shift+h,j,k,l |
Note: The HJKL navigation uses the format: left = h, down = j, up = k, right = l
| Action | Shortcut |
|---|---|
| Shuffle wallpapers on the fly | windows+alt+w or ctrl+alt+w |
| Activate the bspwm workspace preview | ctrl+alt+p |
| Deactivate the bspwm workspace preview | ctrl+alt+d |
| Show bspwm workspace preview (when activated) | windows |
| Change to a specific wallpaper using the GUI. | windows+alt+e or ctrl+alt+e |
| Select wallpaper with a preview | windows+alt+x or ctrl+alt+x |
| Change the terminal font size. | windows+alt+f or ctrl+alt+f |
| Change the corners of the windows. | windows+alt+b or ctrl+alt+b |
| Execute the lock screen. | alt+shift+x |
| Take a screenshot with flameshot. | print |
BSPWM Workpace Preview Functions: Use
ctrl+alt+pto completely de/activate bspwm workspace preview. Usectrl+alt+dto deactivate bspwm workspace preview for the current screen resolution but automatically activate it again when the screen resolution changes.
According to the kitty documentation we can define windows that can be tiled next to each other in arbitrary arrangements, based on layouts. Additionally, kitty also has the ability for window management, tabs management, layout management, and sessions. This means that kitty can be used as a replacement for tmux.
Why use tmux?
Tmux is used for qterminal since as of this date it doesn't have these features that kitty does have.
Although it could also be used in kitty; it is not recommended as seen here.
The kitty command line interface provides an option to create sessions.
A session allows you to create one or more customized tabs on startup.
We can create a session with the following example:
kitty --session startup.confWe can find more information here.
Default keyboard shortcuts:
| Action | Shortcut |
|---|---|
| New window | ctrl+shift+enter |
| New OS window | ctrl+shift+n |
| Close window | ctrl+shift+w |
| Next window | ctrl+shift+] |
| Previous window | ctrl+shift+[ |
| Move window forward | ctrl+shift+f |
| Move window backward | ctrl+shift+b |
| Move window to top | ctrl+shift+` |
| Visually focus window | ctrl+shift+f7 |
| Visually swap window | ctrl+shift+f8 |
| Focus specific window | ctrl+shift+1, ctrl+shift+2 … ctrl+shift+0 (clockwise from the top-left) |
Default keyboard shortcuts:
| Action | Shortcut |
|---|---|
| New tab | ctrl+shift+t |
| Close tab | ctrl+shift+q |
| Next tab | ctrl+shift+right |
| Previous tab | ctrl+shift+left |
| Next layout | ctrl+shift+l |
| Move tab forward | ctrl+shift+. |
| Move tab backward | ctrl+shift+, |
| Set tab title | ctrl+shift+alt+t |
Default keyboard shortcuts:
| Action | Shortcut |
|---|---|
| Next layout | ctrl+shift+up |
| Go to layout (tall,stack, etc) | ctrl+shift+down |
| Previous layout | ctrl+shift+page_up |
| Toggle layout (switches to the named layout or the previous layout) | ctrl+shift+page_down |
Default keyboard shortcuts:
| Action | Shortcut |
|---|---|
| Line up | ctrl+shift+up |
| Line down | ctrl+shift+down |
| Page up | ctrl+shift+page_up |
| Page down | ctrl+shift+page_down |
| Top | ctrl+shift+home |
| Bottom | ctrl+shift+end |
| Previous shell prompt | ctrl+shift+z |
| Next shell prompt | ctrl+shift+x |
| Browse scrollback in less | ctrl+shift+h |
| Browse last cmd output | ctrl+shift+g |
The font size shortcuts are the default as well.
Other shortcuts can be found here.
You can upgrade kitty by following the install documentation.
Make sure that your previous desktop environment doesn't have a notifications daemon enabled such as xfce4-notifyd which will prevent dunst from acquiring org.freedesktop.Notifications through D-Bus. We can disable it by renaming the service:
sudo mv /usr/share/dbus-1/services/org.xfce.xfce4-notifyd.Notifications.service /usr/share/dbus-1/services/org.xfce.xfce4-notifyd.Notifications.service.disabledIf you want to enable blur on the picom compositor, you can use this settings:
blur-method = "box";
blur-strength = 8;
blur-background = true;
backend = "xrender";Alternatively, you can use dual_kawase with the glx backend:
blur-method = "dual_kawase";
blur-strength = 8;
blur-background = true;
backend = "glx";Warning: This will affect the performance, especially in virtual machines.
Then run picom with experimental-backends:
picom --experimental-backendsWarning: You will need to edit the scripts and the bspwm configuration file
bspwmrc.
Install the required package:
sudo apt install treeWe can perform a performance test with the following command:
time tree /Note: I usually run the command above using my zsh configuration because I can see the time in seconds in the terminal prompt.
Then simply compare the results with another terminal emulator such as alacritty or qterminal.
Note: The less time it takes to finish then the faster it is.
This configuration wouldn't have been possible without these softwares and awesome people:
xeventbind:
Configuration related software:
- https://www.zsh.org/
- https://github.com/baskerville/bspwm
- https://github.com/baskerville/sxhkd
- https://github.com/meskarune/i3lock-fancy
- https://github.com/johanmalm/jgmenu
- https://github.com/dunst-project/dunst
- https://github.com/jwilm/alacritty
- https://github.com/kovidgoyal/kitty
- https://sw.kovidgoyal.net/kitty/
- https://github.com/polybar/polybar
- https://github.com/adi1090x/polybar-themes
- https://github.com/yshui/picom
- https://github.com/davatorium/rofi
- https://github.com/ohmyzsh/ohmyzsh
- https://github.com/gpakosz/.tmux.git
- https://docs.xfce.org/xfce/thunar/start
- https://github.com/lxqt/qterminal
- https://github.com/derf/feh
- https://github.com/dylanaraps/pywal
Fonts:
- https://github.com/ryanoasis/nerd-fonts.git
- https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Iosevka
Modules (Modified a little-bit):




















