Here's How You Can Customize Linux Desktop for Halloween [Dot Files Included]

Forget pumpkin carving. This year, I carved out a haunted Hyprland setup straight from the underworld of Arch Linux πŸ‘»
Warp Terminal

Halloween is here. Some people carve pumpkins, I crafted a special set up for my Arch Linux πŸŽƒ

0:00
/0:30

In this tutorial, I'll share with you all the steps I took to give a Halloween-inspired dark, spooky makeover with Hyprland. Since it is Hyprland, you can relatively easily replicate the setup by getting the dot files from our GitHub repository.

🚧
This specific setup was done with Hyprland window compositor on top of Arch Linux. If you are not using Hyprland and still want to try it, I advise installing Arch Linux in a virtual machine.

If videos are your thing, you can watch all the steps in action in this video on our YouTube channel.

Step 1: Install Hyprland and necessary packages

First, install all the essential Hyprland packages to get the system up and running:

sudo pacman -S hyprland xdg-desktop-portal-hyprland hyprpolkitagent kitty

The above will install Hyprland and necessary packages. Now, install other utility packages.

sudo pacman -S hyprpaper hyprpicker hyprlock waybar wofi dunst fastfetch bat eza starship nautilus

What do these packages do? Well, here are some info:

  • hyprpaper: Hyprland Wallpaper utility
  • hyprpicker: Color picker
  • hyprlock: Lock screen utility
  • waybar: Waybar is a Wayland panel
  • wofi: Rofi launcher alternative, but for Wayland. Rofi can be used. In fact, we have some preset config for Rofi in our GitHub repository. But Wofi was selected for this video.
  • dunst: Notification daemon.
  • fastfetch: fastfetch is a system information display utility.
  • bat: Modern alternative for cat command.
  • eza: Modern ls command alternative
  • starship: Starship is a prompt customization tool.
  • nautilus: Nautilus is the file manager from GNOME.

Step 2: Install and enable display manager

You need a display manager to login to the system. We use SDDM display manager. GDM also works fine with Hyprland.

sudo pacman -S sddm

Once SDDM package is installed, enable the display manager on boot time.

sudo systemctl enable sddm.service
Enable SDDM at boot time
Enable SDDM


Now, reboot the system. When login prompt appears, login to the system.

Login to Hyprland
Login to Hyprland

Step 3: Install other utility packages

Once essential Hyprland packages are installed and you are logged in, open a terminal in Hyprland using Super + Q. Now install Firefox browser using:

sudo pacman -S firefox

It's time to install theme packages. Hyprland is not a desktop environment in the sense of what GNOME or KDE is. Yet you may still use some apps developed for GNOME (GTK apps) or Qt apps.

To theme, you need to install theme managers for respective system:

  • nwg-look: To apply theme to GTK apps.
  • qt5ct: To apply theme to Qt5 apps.

Install these packages using the command:

sudo pacman -S qt5ct nwg-look
🚧
If you are using a minimal installation of Arch Linux, you may need to install an editor like nano to edit file in terminal.

Step 4: Change the monitor settings

In most cases, Hyprland should recognize the monitor and load accordingly. But in case you are running it in a VM, it will not set the display size properly.

Even though we give full configuration at a later stage, if you want to fix the monitor, use the command:

monitor=<Monitor-name>,1920x1080,auto,auto
Initial monitor settings
Monitor settings

It is important to get the name of the monitor. Use this command:

hyprctl monitors

Remember the name of your monitor.

Get monitor name in Hyprland.
Get monitor name

Step 5: Download our custom Hyprland dot files

Go to It's FOSS GitHub page and download the text-script-files repository.

Download the text-script-files repository from GitHub.
Download config files

You can also clone the repo, if you want using the command:

git clone https://github.com/itsfoss/text-script-files.git

But the above needs git installed.

If you have downloaded the zip file, extract the archive file. Inside that, you will find a directory config/halloween-hyprland. This is what we need in this article.

Step 6: Copy wallpaper to directory

Copy the images in the wallpapers folder to a directory called ~/Pictures/Wallpapers. Create it if it does not exist, of course.

mkdir -p ~/Pictures/Wallpapers
A screenshot showing wallpaper copying procedure in a terminal.
Copy wallpapers

Step 7: Download GTK theme, icons and fonts

Download the Everforest GTK theme dark borderless macOS buttons.

Download the Everforest BL MB (dark borderless macOS button) theme archive file.
Download GTK theme

Download Dominus Funeral icon theme dark style.

Download Dominus Funeral icon theme.
Download Icon theme

Download the "Creepster" font from Google Fonts website.

Next, create ~/.themes, ~/.icons, and ~/.fonts respectively:

mkdir -p ~/.themes ~/.icons ~/.fonts

And we need to paste theme, icon, and font files in their respective locations:

  • Extract the "Creepster" font file and place it at ~/.fonts.
  • Extract the theme file and paste it at ~/.themes.
  • Extract the icon file and paste it at ~/.icons
Themes, icons, and, fonts in required locations.
Paste thems, icons, and fonts

Step 8: Install other nerd fonts

Install Nerd fonts like:

If you are in Arch Linux, open a terminal and run the command:

sudo pacman -S ttf-firacode-nerd ttf-cascadia-code-nerd ttf-cascadia-mono-nerd woff2-font-awesome ttf-jetbrains-mono

Step 9: Verify Waybar and Hyprland config

Open the config.jsonc file on the downloaded directory and replace any occurrence of Virtual-1 with your monitor name.

For GNOME Box VM, it is Virtual-1. On my main system, I have two monitors connected. So, the names for my monitors are HDMI-A-1 and HDMI-A-2. Note the name of the monitors as we saw in Step 4:

hyprctl monitors

Now in the Waybar config, change the monitor name from Virtual-1 to the name of your monitor. Change all such occurrences.

πŸ“‹
You can use any editor's find and replace feature. Find complete word Virtual-1 and replace it with your monitor name. If you are using nano, follow this guide to learn search and replace in nano editor.

Also, take a look at the panel item. If you see any item that is not needed in the panel, you can remove it from the [modules-<position>] part.

πŸ‘‰ Similarly, open the hyprland config in the downloaded directory. Change all reference to Virtual-1 to your monitor name. Similarly, replace monitor name in the hyprlock and hyprpaper config files.

Step 10: Copy and paste config files

Copy the following directories (in the downloaded GitHub files) and paste it to the ~/.config folder.

  • waybar: Waybar panel configs and styles.
  • wofi: Application launcher config
  • dunst: Customized dunst notification system.
  • starship.toml: Customized starship prompt.

If you are using a GUI file manager, copy all file/folders except hypr, wallpaper, and README.

Copy all config file except some items.
Copy except hypr and wallpaper

Step 11: Replace Hyprland config

We did not copy hypr folder, because there is already a folder called hypr in every Hyprland system, which contains the minimal config.

I don't want to make it vanish. Instead, keep it as a backup.

cp ~/.config/hypr/hyprland.conf ~/.config/hypr/hyprland.conf.bak

Now, exchange the content of the hyprland.conf in your system with the customized content. Luckily, the mv command has a convenient option called -exchange.

mv --exchange ~/.config/hypr/hyprland.conf /path/to/new/hyprland/config
🚧
What the above command does is swap the contents of your default hyprland config with the one we created.
Backup and replace Hyprland config.
Backup and replace Hyprland config

Step 12: Paste hyprlock and hyprpaper configs

Now, copy the hyprlock.conf and hyprpaper.conf file to ~/.config/hypr directory.

Copy Hyprlock and Hyprpaper config files.
Copy hyprlock and hyprpaper config files

Step 13: Change themes

Open the NWG-Look app and set the GTK theme and font (Creepster font) for GTK apps:

Change the GTK theme and font for GTK apps.
Set GTK Theme and font

Now, change icon theme:

Set the icon theme for GTK apps.
Set icon theme for GTK apps

This app automatically adds necessary file links in the ~/.config/gtk-4.0. Thanks to this feature, you don't need to apply theme manually to the GTK4 apps.

Open the Qt5ct app and change the theme to darker.

Apply the darker theme in Qt5ct app Appearance tab.
Apply Qt Darker theme

Now, apply icon theme:

Apply Qt apps icon theme in Qt5ct app.
Qt icon theme

And change the normal font to "Creepster":

Change the Qt apps font to "Creepster" using the Qt5ct app.
Qt font style

Step 14: Set Starship and aliases

First, paste some cool command aliases for the normal ls and cat command, using the modern alternatives eza and bat respectively. This is optional, of course.

Open ~/.bashrc in any editor and paste these lines at the bottom of this file:

alias ls='eza -lG --color always --icons'
alias la='eza -alG --color always --icons'
alias cat='bat --color always --theme="Dracula"'

Now, to enable Starship prompt, paste the starship eval line to the ~/.bashrc and source the config.

Edit bashrc file and add lines
Edit bashrc
eval "$(starship init bash)"

source ~/.bashrc
Customized starship prompt.
Customized starship prompt

Once all this is done, restart the system, and log back in to see the Halloween themed Hyprland.

Hyprland Halloween Makeover

Enjoy the spooky Hyprland set up. Happy Halloween πŸŽƒ

About the author
Abhishek Prakash

Abhishek Prakash

Created It's FOSS 13 years ago to share my Linux adventures. Have a Master's degree in Engineering and years of IT industry experience. Huge fan of Agatha Christie detective mysteries πŸ•΅οΈβ€β™‚οΈ

Become a Better Linux User

With the FOSS Weekly Newsletter, you learn useful Linux tips, discover applications, explore new distros and stay updated with the latest from Linux world

itsfoss happy penguin

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to It's FOSS.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.