/dotfiles-1

:cherry_blossom: Aesthetic OpenboxWM Environment

Primary LanguageCSSGNU General Public License v3.0GPL-3.0

owl4ce/dotfiles

:octocat: Hi there! Thanks for visiting!

minimal

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

🎁 Changelogs

normal
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

For the rest, see the commits. Also check my workflow.

🌸 Setup

This is step-by-step how to install these .files for automatic setup OpenboxWM custom environment. Just R.T.F.M.

Introduction of Linux Rice

Please read this and/or this.

unixporn

Installation (dependencies)

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 of lxsession (or lxpolkit) 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
obmenu-generator

I haven't tested it yet.


Arch Linux (and all based distributions)

Ensure your AUR Helper is paru or yay.

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.

Installation (dotfiles)

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 as cd, but can return back to the previous directory by using popd (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 step you are waiting for

The final step is login into openbox-session, basically login from your display manager like lightdm, gdm, etc.

Ensure sh is symlink to bash, 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!

Additional

Suggested replacement commands

  • ls ➜ exa

~/.zshrc

...

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

Update

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/ ~/

User's configuration

  • 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

    See

    In fact, I use SLiM just for lockscreen @ 2020. Currently, I don't use any lockscreen.

    floflo-batik

    Just click on the image above!

  • Chromium-based Web Browser suggested

    See

    Settings: chrome://settings/

    • Themes: Use GTK+
    • Use system title bar and borders

    brave.thumbnail

    You may want to turn on Hardware Acceleration. See also recommended flags.

  • Spotify - Spicetify Theme suggested

    See

    spicetify.dribbblish-eyecandy

    spicetify.dribbblish-mechanical

    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

    See

    tdesktop.nord

    Just click on the image above!

  • Capitaine Cursors Theme suggested

    See

    capitaine-cursors

    capitaine-cursors

    Just click on the image above!

  • 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

    More information.

  • 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 use networkmanager_dmenu instead.

    How about battery indicator?
    Because on the tint2 panel I turned off battery status. Alternatively, install xfce4-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.

  • 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"
    
    ...
    See Images
    Arch Gentoo Ubuntu Void
    Arch Gentoo Ubuntu Void
    Arch Dark Gentoo Dark Ubuntu Dark Void Dark
    Arch Gentoo Ubuntu Void
    Artix LoFi Bedrock
    Artix LoFi Bedrock
    Sakura

    Sakura

πŸ“ Notes

Color Schemes

owl4ce.color-schemes

Β© 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.



πŸ’ Tip Jar

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! πŸ’—

ko-fi liberapay

  • BTC: 3DrjWyd6Xgv4tKoL56mPtoQX4fL4LbR7zf
  • ETH: 0x818fC9B82548C1020ed7370DFeb04BCbADc59191

🎊 Acknowledgements