This is my personal configuration for my favorite openbox window manager and some apps too.
I hope you understand everything here. π
Here are some details about my setup ..
- Window Manager β’ Openbox π¨ 4 modes!
- Shell β’ Zsh π with oh-my-zsh framework!
- Terminal β’ URxvt, Termite deprecated
- Openbox Menu β’ obmenu-generator
- Panel β’ Tint2 π§ material icons font!
- Compositor β’ Picom π© rounded corners!
- Notify Daemon β’ Dunst π minimalism!
- Application Launcher β’ Rofi π blazing fast!
- File Manager β’ Thunar π customized sidebar!
- Music Player β’ Ncmpcpp, Spotify π riced!
- GUI Basic-IDE β’ Geany - The Flyweight IDE
v3.0
-
Visual Mode:
- Both modes (minimal) have their own window button styles, margins, sidebar rofi, and dunst layouts.
- Removed eyecandy tint2 from Joyful Desktop v2
- Better Tint2 (added temp executor, etc)
- Added rotation mode (crossover, except minimal mode)
-
Major Changes:
- Removed SLiM sync background, custom slim themes, and unnecessary files/config.
- All scripts are reproduced all with central variables in one file.
- Reverse terminal background and foreground (urxvt/termite)
- Nvim Config - Thanks to @elenapan
- SLiM Themes (optional) - See here
- URxvt Font Resizer - See keybinds
- Included Networkmanager_dmenu
- Oh My ZSH Theme - Rounded
- Rofi v1.6.0 Supported
- New Ncmpcpp UI
- Neofetch Images
- New Wallpapers
v3.1
- Screenshot Script: Rounded corners, quality, shadows.
- Terminal UI improvements, particularly font size
- Bug fixes and improvements
- Rounded picom as default
- New Wallpapers
v3.2 latest
Major Update:
- Customizable partial color accent and start button glyphs -
L4-L63
- New ncmpcpp albumart image backend (w3mimgdisplay) -
L137-L147
- Centralize dunst and urxvt opacity level and web browser -
L64-L76
- Both modes have their own window button last location
- Sakura Saberγζ‘(γγγ)γ»γ€γγΌγ Themed
- Reconfigure openbox window titlebar colors
- One click wallpaper generator (colorizer)
- Auto configure urxvt app icons
- Notify-send improvements
- Added Restart UI
- Optimize scripts
This is step-by-step how to install these .files for automatic setup OpenboxWM custom environment. Just R.T.F.M.
Customize your choice about dependencies below, this is my complete setup as I use Gentoo/Linux with single OpenboxWM and my preference utility softwares. So, what's in the column is the minimal setup from base-distro installation, everything should be fine without confused screaming, do with your own risk.
Detailed environment
Please refer to wiki/Detailed-Environment.
Warning!
Most configuration contains GNUism using bash, coreutils, findutils, grep, procps-ng, psmisc, and sed. Assume that you are using sudo or doas. Want to set up this on top of Linux From Scratch? π
Attention!
- Rofi must be equal version 1.6.x, so for Debian-based you may need to build manually from source.
- You may want to use
polkit-gnome
instead oflxsession
(orlxpolkit
) due to dependency hell.- I guess the latest
yshui/picom
might be problematic on certain devices. On me, experiencing some border flickering on the Openbox desktop menu (right click). So I checkout it on commit 9cb552e.- These .files fully configured and tested under the 1366x768 resolution with 96 DPI, pixels-perfect.
Debian & Ubuntu (and all based distributions)
sudo apt install python psmisc xserver-xorg-core x11-xserver-utils x11-utils imagemagick \
ffmpeg wireless-tools openbox pulseaudio alsa-utils brightnessctl nitrogen dunst tint2 \
lxpolkit rxvt-unicode xclip scrot mpd mpc thunar thunar-archive-plugin thunar-volman \
ffmpegthumbnailer tumbler w3m w3m-img ncmpcpp viewnior mpv pavucontrol parcellite \
gsimplecal neofetch htop xsettingsd xautolock rofi rsync
oh-my-zsh & plugins suggested
sudo apt install zsh && chsh -s $(command -v zsh)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone --depth 1 https://github.com/zsh-users/zsh-completions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions
picom
sudo apt install meson ninja-build libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev \
libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev \
libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libxcb-glx0-dev libpixman-1-dev libdbus-1-dev \
libconfig-dev libgl1-mesa-dev libpcre2-dev libpcre3-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev
git clone https://github.com/yshui/picom.git && \
cd picom/ && git submodule update --init --recursive && \
git checkout 9cb552ecd91ec644bf6fcb558ddd44fda5b4f7d9 && \
meson --buildtype=release . build && \
ninja -C build && \
ninja -C build install
Arch Linux (and all based distributions)
paru -S python psmisc xorg-server xorg-xrandr xorg-xprop xorg-xwininfo imagemagick \
ffmpeg wireless_tools openbox pulseaudio pulseaudio-alsa alsa-utils brightnessctl \
nitrogen dunst tint2 lxsession rxvt-unicode-truecolor-wide-glyphs xclip scrot mpd \
mpc thunar thunar-archive-plugin thunar-volman ffmpegthumbnailer tumbler w3m \
ncmpcpp viewnior mpv pavucontrol parcellite gsimplecal neofetch htop xsettingsd \
xautolock obmenu-generator perl-gtk3 picom-git rofi rsync
oh-my-zsh & plugins suggested
sudo pacman -S zsh && chsh -s $(command -v zsh)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone --depth 1 https://github.com/zsh-users/zsh-completions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions
Another Linux Distribution
Customize/port dependencies yourself!
For example,
You can reference the package names with Arch Linux.
For Gentoo/Linux, I recommend to enabling keywords for specific packages or using live ebuild.
If it's not there, build it manually from git source code or from elsewhere.
Optional:
geany + plugins, gimp, inkscape, nano + syntax highlighting, nm-applet, spotify + playerctl, xfce4-power-manager.
Are all directories required? π€
Please refer to wiki/Detailed-Environment.
Most of .files
You can clone or download as an archive. After that, put all files in the dotfiles folder into user's home directory.
Assume you are cloning this in the
~/Documents
directory for example. I recommend to install with rsync.
cd ~/Documents/ && git clone --depth 1 https://github.com/owl4ce/dotfiles.git
rsync -avxHAXP --exclude '.git*' --exclude 'LICENSE' --exclude '*.md' dotfiles/ ~/
Warning!
Ensure the rsync command must be correct as above.Explanation
Options Function -a
all files, with permissions, etc.. -v
verbose, mention files -x
stay on one file system -H
preserve hard links (not included with -a) -A
preserve ACLs/permissions (not included with -a) -X
preserve extended attributes (not included with -a) -P
show progress --exclude
exclude files matching PATTERN Differences
cp
is for duplicating stuff and by default only ensures files have unique full path names.rsync
is for synchronising stuff and uses the size and timestamp of files to decide if they should be replaced. It has many more options and capabilities than cp.I recommend to not deleting the dotfiles directory after cloning to make upgrades easier. Read the update.
Icons
pushd
is same ascd
, but can return back to the previous directory by usingpopd
(checkpoint).
pushd ~/.icons/ && \
tar -xJf Papirus-Custom.tar.xz && tar -xJf Papirus-Dark-Custom.tar.xz && \
sudo ln -vs ~/.icons/Papirus-Custom /usr/share/icons/
sudo ln -vs ~/.icons/Papirus-Dark-Custom /usr/share/icons/
popd
Why I need to link icons to /usr? π€
That's needed by dunst in order to display most of icon from notification that spawned by programs.Optionally,
You can delete the tarball achives after extracting.
Refresh Font Cache
fc-cache -rv
Update MPD Database
[ -n "$(pgrep mpd)" ] || mpd && mpc update
Root Privileges with SUID
brightnessctl
- others if needed.
For brightnessctl, I would recommend adding users to video group.
I don't think this is necessary since brightnessctl has (systemd-)udev rules.
sudo chmod u+s $(command -v brightnessctl)
The final step is login into openbox-session, basically login from your display manager like lightdm, gdm, etc.
Ensure
sh
is symlink tobash
, as it's uses bashism. Why bash? Simple, it's bloated but powerful.[ "$(readlink -f /bin/sh)" != "$(command -v bash)" ] && sudo ln -vfs $(command -v bash) /bin/sh
If you are using ~/.xinitrc
without display manager, simply add the following one-liner commands at the end.
Systemd-based Linux Distribution
exec openbox-session
Init-Freedom Linux Distribution
exec dbus-launch --exit-with-session openbox-session
Then you can proceed to user's configuration. Explore!
Suggested replacement commands
ls
βexa
...
137 alias ls="exa -lgh --icons --group-directories-first"
138 alias la="exa -lgha --icons --group-directories-first"
...
Suggestion for tiling users
I recommend to build it from source. Then put the zentile binary into your PATH, for example in ~/.local/bin/
.
# To run in the background (detached)
zentile &!
# To kill (or pkill)
killall zentile
Since I recommend using rsync from start, the easiest way is to list the files that will not be updated to avoid replacing personal files with files in the dotfiles. First, update the local repository with remote git repository.
Remember where you cloned this repository. From the start we assumed that it was in
~/Documents
.
cd ~/Documents/ && \
pushd dotfiles/ && git pull --unshallow && popd
Then create a file with PATTERN list containing files/dirs that rsync will exclude. For example,
~/.dotexc
.git*
LICENSE
*.md
*.joy
geany
GIMP
gtk-3.0
config.conf
autostart
environment
tray
shared
sidebar
termite
Thunar
xfconf
zathura
.fonts
.nothing
.mpd
.gtkrc-2.0
.zshrc
.nanorc
.Xresources
.xsettingsd
Use
find
command to check the PATTERN,find dotfiles/ -iname 'PATTERN'
.. and whatever the file is. Sync now!
rsync -avxHAXP --exclude-from ~/.dotexc dotfiles/ ~/
-
About XDG user directories and Thunar-specific tips
If you just installed Thunar without XFCE, you might get sidebar without XDG directories like Documents, Downloads, etc. After you generate those directories, open Thunar then select or block the directories, right-click and click Send To π‘² Side Pane. Read XDG user directories at ArchWiki.
If you want to get 100% Thunar looks similar to my screenshot, ensure to copy my Thunar configuration. Then hide Computer, Desktop, Recent or whatever you want by right-clicking on Places in the Thunar side pane. By default, my Thunar side pane configuration uses simple 16px icons.
-
SLiM Themes deprecated, optional
-
Chromium-based Web Browser suggested
See
Settings:
chrome://settings/
- Themes:
Use GTK+
Use system title bar and borders
You may want to turn on Hardware Acceleration. See also recommended flags.
- Themes:
-
Spotify - Spicetify Theme suggested
See
Just click on the image above!
Or maybe you want a direct link without downloading the complete repository.
??? spotify-adblock ???
??? spotify-tray ???
-
Telegram Desktop suggested
-
Capitaine Cursors Theme suggested
-
Touchpad tap-to-click (libinput) optional
/etc/X11/xorg.conf.d/30-touchpad.conf
Section "InputClass" Identifier "touchpad" Driver "libinput" MatchIsTouchpad "on" Option "Tapping" "on" Option "TappingButtonMap" "lmr" EndSection
-
User's Preferences required
~/.owl4ce_var
Manage all your settings there. I hope all comments there are easy to understand. ^^
-
User's Tray Icons
~/.config/openbox/tray
An example is turning on
nm-applet
, by default I don't use it and usenetworkmanager_dmenu
instead.How about battery indicator?
Because on thetint2
panel I turned off battery status. Alternatively, installxfce4-power-manager
and enable system tray icon in the xfce4-power-manager-settings.Remove hashtags as your needs, then re-login the openbox-session. Should be fine without confusion.
Putting commands here means when switching Visual Mode, all those programs will be restarted.
1 # 2 # This tray will restart after switching modes 3 # Please add "&" after command 4 # 5 # --- 6 7 parcellite & 8 #nm-applet & 9 #xfce4-power-manager &
-
Available Default Apps
~/.scripts/default-apps/list.joy
- Terminal:
urxvt
termite
- Lockscreen: anything
- Music Player:
mpd
spotify
- File Manager: anything
1 terminal="urxvt" 2 lockscreen="slimlock" 3 musicpl="mpd" 4 filemanager="thunar"
Termite is now obsolete.
- Terminal:
-
MPD Music Directory
~/.mpd/mpd.conf
... 6 music_directory "~/Music" ...
-
Ncmpcpp Music Directory
Auto-connect with MPD.
How to use ncmpcpp album-art?
It's easy, just put(album|cover|folder|artwork|front).(jpe?g|png|gif|bmp)
into folder with song album. Recommended image size is 500px ( 1:1 ) or more. This is only for URxvt. See keybinds. -
Audio Server optional
~/.config/openbox/autostart
This is optional for Linux distributions that don't use systemd as their init.
-
Pulseaudio
... 9 # There was once a pulseaudio here. 10 pulseaudio --start --log-target=syslog 2>/dev/null & ...
Or if you use pipewire as pulseaudio.
-
Pipewire as Pulseaudio
More details at ArchWiki / Gentoo Wiki. Ensure
pulseaudio
is uninstalled or disable autospawn.
/etc/pulse/client.conf
... 25 autospawn = no ...
... 9 # There was once a pulseaudio here. 10 pipewire 2>/dev/null & ...
-
-
Neofetch Image Source
~/.config/neofetch/config.conf
... 641 # Image Source 642 # 643 # Which image or ascii file to display. 644 # 645 # Default: 'auto' 646 # Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' 647 # 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' 648 # Flag: --source 649 # 650 # NOTE: 'auto' will pick the best image source for whatever image backend is used. 651 # In ascii mode, distro ascii art will be used and in an image mode, your 652 # wallpaper will be used. 653 #image_source="auto" 654 #image_source="${HOME}/.config/neofetch/images/arch.png" 655 #image_source="${HOME}/.config/neofetch/images/arch_dark.png" 656 #image_source="${HOME}/.config/neofetch/images/artix.png" 657 #image_source="${HOME}/.config/neofetch/images/bedrock.png" 658 #image_source="${HOME}/.config/neofetch/images/gentoo.png" 659 #image_source="${HOME}/.config/neofetch/images/gentoo_dark.png" 660 #image_source="${HOME}/.config/neofetch/images/lofi.png" 661 image_source="${HOME}/.config/neofetch/images/sakura.png" 662 #image_source="${HOME}/.config/neofetch/images/ubuntu.png" 663 #image_source="${HOME}/.config/neofetch/images/ubuntu_dark.png" 664 #image_source="${HOME}/.config/neofetch/images/void.png" 665 #image_source="${HOME}/.config/neofetch/images/void_dark.png" ...
Β© owl4ce - Nord Color Palette-compatible
π¬ |
Widget? We don't do that here. My main philosophy in building this is as a minimal replacement for Desktop Environment without any desktop decoration e.g icons and widgets, but it can be adapted to taste of user with an overall theme based on one color palette and can be easily switched between Mechanical-Eyecandy. I admit, the downside is that it relies heavily on the GNU/Linux operating system since GNUism is not POSIX-compliant (portability with other OSs). Most of the size of this repository is large due to wallpapers, icons, and git caches. Please don't underrate, I've configured them all since April 2020 and have been stuDYING them since October 2019. Awesome open-source. If you support it, star it or make a PR. Or if there is a problem with configuration (please check previous issues if any) you can make an issue here. Also if you want a discussion. Thank You! Feel free to modify, under GPL-3.0 except for GTK+ themes, gladient icons, fonts, and wallpapers. Why openbox? Really a perfect next-gen window manager, easily configurable, and less resources usage. Openbox isn't dead, but completed features. |
|
If you enjoy my dotfiles and would like to show your appreciation, you may want to tip me here. It's never required but always wholeheartedly appreciated.
Thank you from the bottom of my heart! π
- BTC:
3DrjWyd6Xgv4tKoL56mPtoQX4fL4LbR7zf
- ETH:
0x818fC9B82548C1020ed7370DFeb04BCbADc59191
-
Inspiration and main resources
-
Extended resources or the manual
- Digital Synopsis;
- Openbox Wiki;
- Gnome Pango Markup;
- Custom Environment at ArchWiki;
- Recommended Applications at Gentoo Wiki;
- Pure Bash Bible;
- Stark's Color Scripts;
- notify-send.sh (bash);
- networkmanager-dmenu (python3);
- URxvt Manual;
- URxvt Resize-Font;
- URxvt Tabbed-Extended;
- Showing Album Cover in Ncmpcpp;
- Complete List of GitHub Markdown Emoji Markup;
- Most people on some GNU/Linux and UN*X forums.
-
Contributors
-
Softwares
-
Our local linux community Linuxer Desktop Art and @dotfiles_id, also the great r/unixporn.
-
Β© All artists who create icons, illustrations, and wallpapers.
The original source I've found: