I am a proud user of xfce4, it is my favorite DE: clean, highly customizable, and without too much fancy stuff. It does its job.
However, I could save some time by having certain customization (zsh for example), and making it more beautiful looking: having a system which is eye-candy for eyes, at least this work for me, let me be more productive.
Mac-look-a-like
Mac: theming XFCE
Ever dreamed about having a Mac? I like Apple’s look since ever, but I don’t own a modern Apple computer. Despite this, I think their UI elements are clean and highly recognizable, making a system more usable.
Here is what are we going to change:
- gtk theme: Mojave-gtk-theme
- icons: McMojave-circle
- cursor: MacCursor (more precisely, the macOSBigSur variant)
- top default XFCE4 bar: we can restore a custom configuration
- Install MacOSMojave theme
git clone https://github.com/vinceliuice/Mojave-gtk-theme.git && cd Mojave-gtk-theme
bash install.sh
cd ..
- Install MacOSIcons
git clone https://github.com/vinceliuice/McMojave-circle.git && cd McMojave-circle
bash install.sh
cd ..
- Install MacCursor
# fetch MacCursor
curl https://github.com/ful1e5/apple_cursor/releases/download/v1.2.3/macOSBigSur.tar.gz --output macOSBigSur.tar.gz
# extract `macOSMonterey.tar.gz`
tar -xvf macOSBigSur.tar.gz
# For all users
sudo mv macOSBigSur /usr/share/icons/
- About the mac top bar, we will restore a config file from xfce4 panel manager:
yay -S xfce4-panel-profiles
The bar will look like this:
I haven’t made so much customization, if I need to use a window switcher I will use Plank, but I like much more to switch windows pressing Alt+Tab.
If you use my dotfiles, I will include my config file in my dotfiles repository.
Mac: features
- Ulauncher is a nice launcher for your apps and allows you to do other comfortable things, for example, speed-test your connection by typing two characters on the bar or lookout a word on Wikipedia, by not opening your browser.
yay -S ulauncher
It is a spotlight alternative.
Remember to launch ulauncher on login, by toggling a checkbox in its preferences.
- Regarding the Mac bottom bar on desktop, Plank is a good bottom bar and its appearance is customizable.
yay -S plank
To customize your plank preferences just give from a new terminal:
plank --preferences
Don’t forget to autostart the application on login! Just create an entry in the autostart tab with plank command on login.
Here is how it looks mine:
General enhancements
Keyboard shortcuts: xfce4+i3=❤️
A powerful combo productivity could be XFCE4 default keybindings + some of i3 bindings.
For a short period in my life, I have xfce4 and i3 both installed at the same time.
Here’s a list of my shortcuts:
Shortcut | Action |
---|---|
Super+Space | Terminal |
Super+[1-4] | Change workspace |
Ctrl+Space | ulauncher |
Super | WhiskerMenu popup |
Shift+Ctrl+Print | xfce4-screenshooter -r |
Super+F | Toggle fullscreen |
Ctrl+Alt+[1-4] | Move focused window to desired workspace |
Super+[up-down-left-right] | Tile window to up/down/left/right |
My dotfiles work on xfce4 and xfwm4.
Terminal: zsh and oh-my-zsh
Zsh is a powerful shell, way better than bash.
oh-my-zsh is a helper for zsh which helps your productivity by providing the ability to install themes and plugins.
Install zsh…
pacman -Syu zsh
…and oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Now, it’s time to use your new shell!
Setup xfce4-terminal to run zsh by going into Edit > Preferences > Run a custom command instead of my shell > zsh
zsh on steroids
Since you’re now using oh-my-zsh, you can install plugins, themes, and much more.
.zshrc
is the .bashrc
equivalent, it is your main setup file.
You can customize your shell by installing a custom theme, or some plugins.
I like to use:
git
zsh-autosuggestions
zsh-syntax-highlighting
z
sudo
and also this awesome plugin that needs to be first downloaded by git (it requires dependencies and a short setup).
Also, I like to change my oh-my-zsh home folder, by moving:
# change oh-my-zsh directory
mv "$HOME/.oh-my-zsh" "$HOME/.local/share/oh-my-zsh"
and having this row on my .zshrc
file
export ZSH="$HOME/.local/share/oh-my-zsh"
You can install zsh-autosuggestions and zsh-syntax-highlighting by giving:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions\n
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting\n
Setup aliases
Custom stuff in oh-my-zsh should be done in the zsh folder.
"$HOME/.local/share/oh-my-zsh/custom"
Create a new file named aliases.zsh
and write your aliases.
Here’s a list of useful aliases and functions that I like to use (note: as long as you have the required programs, it is suitable for .bashrc
too):
# pm aliases
alias reboot="sudo systemctl reboot"
alias poweroff="sudo systemctl poweroff"
alias shutdown='sudo systemctl poweroff'
alias halt="sudo systemctl halt"
alias suspend="sudo systemctl suspend"
# magic-startup-arch-sh
alias inst='sudo pacman -S $1'
alias uninst='sudo pacman -R $1'
alias update='sudo pacman -Syu'
alias instpkg='sudo pacman -U $1'
alias aurupd='yay -Syu'
alias aurinst='yay -S $1'
alias aursearch='yay -Si $1'
alias aurremove='yay -Rns $1'
# lazy aliases
alias q='exit'
alias c='clear'
alias vc='vscodium'
alias n='nano'
alias whatsmyip="curl http://ipecho.net/plain; echo"
# space management
alias diskusage='ncdu'
alias space='sudo du -sh $1'
alias df="df -h"
function freespace {
echo "Cleaning pacman cache..."
sudo pacman -Sc
read $p
echo "Cleaning unused packages..."
sudo pacman -Rns $(pacman -Qtdq)
echo "Cleaning cache..."
sudo du -sh ~/.cache/
rm -rf ~/.cache/*
echo "Cleaning journal files..."
sudo journalctl --vacuum-size=50M
}
powerlevel10k
The last layer of oh-my-zsh setup is powerlevel10k, a script that helps you to customize your shell appearance by choosing among different looks, to let you customize how information is displayed on screen.
We’re using oh-my-zsh so we can use this snippet:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
If your setting is different (e.g. you’re not using oh-my-zsh), please refer to the official Github installation instructions
From the official Github page:
On the first run, Powerlevel10k configuration wizard will ask you a few questions and configure your prompt. If it doesn’t trigger automatically, type
p10k configure
. Configuration wizard creates~/.p10k.zsh
based on your preferences. Additional prompt customization can be done by editing this file. It has plenty of comments to help you navigate through configuration options.
This is what my terminal looks like:
Dotfiles
Finally, you can copy and use my dotfiles.
They contain everything we covered here and all of my settings.
Remember to place dotfiles and folders in your $HOME directory:
git clone github.com/dag7dev/dotfiles.git
TLDR
Everything I said before that includes:
- mac cursor, gtk-theme, icon, beautiful font, a bottom bar on desktop and “spotlight-like bar”
yay -S mojave-gtk-theme mcmojave-cursors mcmojave-circle-icon-theme-git ttf-roboto xfce4-panel-profiles ulauncher plank-git
- zsh, oh-my-zsh and powerlevel10k:
# zsh
pacman -Syu zsh
# oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# change oh-my-zsh directory
mv "$HOME/.oh-my-zsh" "$HOME/.local/share/oh-my-zsh"
# add this line to your .zshrc (included in my dotfiles)
export ZSH="$HOME/.local/share/oh-my-zsh"
# install oh-my-zsh plugins
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions\n
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting\n
Use my dotfiles to have a cool look:
git clone -b apple-like-dotfiles github.com/dag7dev/dotfiles.git
Install powerlevel10k:
# powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
Setup xfce4-terminal to run zsh by going into Edit > Preferences > Run a custom command instead of my shell > zsh
Finally, add some of my shortcuts. From inside of the dotfiles cloned folder, type:
cp xfce4-keyboard-shortcuts.xml .config/xfce4/xfconf/xfce-perchannel-xml/
Troubleshooting
Q: Plank draws a black line.
A: This happened to me too. Window Manager Tweaks > Compositor > Disable Show shadows under dock windows
Have fun~!