/Colorful

Linux colorful dotfiles.

Primary LanguageShell

colorful-dotfiles.png

Table of Contents

Introduction

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.3 using Xfce with lightdm: 11/27/2022

The installation section will guide you through a step-by-step installation process.

This setup uses the following software:

All the features can be seen in the overview section.

Overview

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:

wallpaper-resize.gif

Note: The color of these bars is dynamic and the colors change according to the wallpaper.

Transparent theme created by @nozerobit (me):

trans

Colorblocks theme (default), theme created by @adi1090x and heavily modified by @nozerobit (me):

colorblocks

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 --trans

Some polybars are slower to load than others so it is recommended to kill the polybar first:

killall polybar; change-polybar --colorblocks

If 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
trans

Change 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:

changer.gif

Note: In the weird case that the polybar dies, you can use Windows + Alt + R to restart BSPWM. Some polybars themes do take more time to load since they use more scripts and icons. The polybar hack theme is the slowest. The polybar forest theme 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:

wallpaper-selector.gif

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:

wallpaper-preview-selector.gif

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 & disown

animated-wallpaper.gif

We can stop the live wallpaper / animated wallpapers with the following:

vwallpaper --stop

Warning: 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" & disown

I'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-fast

Warning: 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.mp4

You can use htop to monitor the performance of each process:

htop

You 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:

animated-wallpaper-resize.gif

We can close an animated wallpaper with the following command:

video-wallpaper.sh --stop

You 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:

font-changer.gif

Note: When using qterminal is 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.

corners.gif

You can also copy IPs to the clipboard with a left click on the bar (ethernet, vpn or target):

copy-ip.gif

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:

network.gif

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:

target.gif

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.jpg

You 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+R to reset the colors.

You can also customize the polybar theme colorblocks:

polybar-changer.gif

This is the command for the polybar-changer help menu:

polybar-changer --help

You can use Windows + Q to open the power menu:

powermenu

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/Esc key 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.

bspwm-workspace-preview

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 + P to completely de/activate bspwm workspace preview. Use Ctrl + Alt + D to 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:

mk

View the storage (sda) information:

drive

View your system information:

info

Alternatively, you can use neofetch to view your system information:

neofetch

Kill a process:

kp ssh

Extract nmap ports:

xp filename.gnmap

Identify the operating system:

os 127.0.0.1

You 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 keys

You 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.

APT Tool

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 exit

Installation

It is recommended to disable sleep because the script can take a while to finish:

These are the installation steps:

  1. Clone this repo and change the directory:
git clone https://github.com/m4nqn/Colorful && cd Colorful

Warning: Don't run this script as the root user. Run it with a user that's in the sudo group. Also, don't install this script while using GNOME. For some reason pywal doesn'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    
  1. Run the installation script from the colorful-dotfiles directory:
chmod +x install.sh && ./install.sh

Warning: 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 Xfce using 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:

  1. [+] = Success
  2. [-] = Failed
  3. [!] = Information
  4. [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.

  1. Reboot the machine (required):
reboot || systemctl reboot
  1. Once you have rebooted the machine, select bspwm as the window manager and then log in.

bspwm-login

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 + W and Windows + Alt + B and 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.

Pywal GNOME

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.sh

Virtualization

If you are in a virtual machine and you want to enable drag-and-drop files and copy-paste then read this section.

VMware Guest Tools

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-desktop

If you're using Arch in VMware, read this documentation.

VirtualBox Guest Tools

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

QEMU Guest Tools

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-vdagent

Start the service:

sudo systemctl start spice-vdagent

The 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-agent

Start the service:

sudo systemctl start qemu-guest-agent

If you want to add this service at startup, add it to bspwmrc:

echo "systemctl start qemu-guest-agent" >> ~/.config/bspwm/bspwmrc

Since 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.

Hyper-V Enhanced Session

Enable Hyper-V Enhanced Session in Hyper-V Settings:

hyper-v-enchanced

Enable Guest services in Hyper-V VM Settings:

hyper-v-guest

Lastly, read the official Kali Linux documentation and follow the steps.

Configuration Files

If you would like to change some settings, here are the locations of the configuration files.

alacritty Terminal Configuration:

~/.config/alacritty/alacritty.yml

kitty Terminal Configuration:

~/.config/kitty/kitty.conf

bspwm WM Configuration:

~/.config/bspwm/bspwmrc

sxhkd Keyboard Shortcuts Configuration:

~/.config/sxhkd/sxhkdrc

picom Transparency Configuration:

~/.config/picom/picom.conf

Warning: 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.sh

rofi Program Launcher Configuration:

~/.config/rofi/config

zsh Shell Configuration:

~/.zshrc

BSPWM Mouse Keyboard Shortcuts

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

Keyboard Shortcuts

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

Special Keyboard Shortcuts

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+p to completely de/activate bspwm workspace preview. Use ctrl+alt+d to deactivate bspwm workspace preview for the current screen resolution but automatically activate it again when the screen resolution changes.

Kitty Sessions & shortcuts

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.

Kitty Sessions

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.conf

We can find more information here.

Kitty Window Management Shortcuts

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)

Kitty Tab Management Shortcuts

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

Kitty Layout Management Shortcuts

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

Kitty Scrolling Shortcuts

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

Kitty Font Size Shortcuts

The font size shortcuts are the default as well.

Kitty Other Shortcuts

Other shortcuts can be found here.

Upgrade Kitty

You can upgrade kitty by following the install documentation.

Notifications

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.disabled

Compositor Blur

If 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-backends

Warning: You will need to edit the scripts and the bspwm configuration file bspwmrc.

Terminal Emulator Performance Test

Install the required package:

sudo apt install tree

We 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.

References

This configuration wouldn't have been possible without these softwares and awesome people:

xeventbind:

Configuration related software:

Fonts:

Modules (Modified a little-bit):