angga759 / dotfiles

:cherry_blossom: Aesthetic OpenboxWM Environment

Home Page:https://youtu.be/kSoViKHt-Yo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dotfiles@owl4ce

:octocat: Hi there! Thanks for visiting!

minimal

This is my personal configuration for my favorite openbox window manager and some applications too.

I hope you understand everything here. πŸ˜‰

Here are some details about my setup

  • Window Manager β€’ Openbox 🎨 4 changable mode!
  • Shell β€’ Zsh 🐚 with oh my zsh framework! optional
  • Terminal β€’ URxvt, Termite available
  • Openbox Menu β€’ OBmenu-generator
  • Panel β€’ Tint2 🍧 material icon font!
  • Compositor β€’ Picom 🍩 rounded corners!
  • Notify Daemon β€’ Dunst πŸƒ minimalism!
  • Application Launcher β€’ Rofi πŸš€ blazing fast!
  • File Manager β€’ Thunar πŸ”– customized sidebar & icon!
  • Music Player β€’ Mpd + Ncmpcpp, Spotify πŸŽ‘ riced!
  • GUI & CLI IDE/Text Editor β€’ Geany, Neovim

🎁 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 - L3-L62
  • New ncmpcpp albumart image backend (w3mimgdisplay) - L132-L142
  • Centralize dunst and urxvt opacity level and web browser - L63-L75
  • 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 commit. Also check my workflow.

🌸 Setup

This is step-by-step how to install these .files for automatic setup OpenboxWM custom environment.

Introduction of Linux Rice

Please read this and this.

unixporn

Installation (dependencies)

Customize your choice about dependencies below, this is my complete setup as I use single OS, single OpenboxWM with multimedia application that I use.

Detailed environment
Please refer to wiki/Detailed-Environment.

Warning! This configuration is highly dependent to bash, sed, awk, and coreutils.
Assume that you are using sudo or doas. Installation feels like LFS? πŸ˜†

Debian & Ubuntu (and all based distributions)
$ sudo apt install rsync python psmisc x11-utils imagemagick ffmpeg wireless-tools openbox pulseaudio \
alsa-utils brightnessctl nitrogen dunst tint2 gsimplecal rofi qt5-style-plugins lxpolkit xautolock rxvt-unicode \
xclip scrot thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman ffmpegthumbnailer tumbler \
viewnior mpv mpd mpc ncmpcpp pavucontrol parcellite neofetch w3m w3m-img htop playerctl xsettingsd
oh-my-zsh & plugins optional
$ 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 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting &&
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions &&
git clone https://github.com/zsh-users/zsh-completions.git ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
picom
$ sudo apt install meson 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 libevdev-dev uthash-dev libev-dev libx11-xcb-dev
$ git clone https://github.com/yshui/picom.git &&
cd picom/ && git submodule update --init --recursive &&
meson --buildtype=release . build &&
ninja -C build &&
ninja -C build install
obmenu-generator

I haven't tested it yet.

$ sudo su
echo 'deb http://download.opensuse.org/repositories/home:/Head_on_a_Stick:/obmenu-generator/Debian_10/ /' > /etc/apt/sources.list.d/home:Head_on_a_Stick:obmenu-generator.list &&
wget -nv https://download.opensuse.org/repositories/home:Head_on_a_Stick:obmenu-generator/Debian_10/Release.key -O Release.key &&
apt-key add - < Release.key &&
apt update &&
apt install obmenu-generator libgtk2-perl

See Installation from Git


Arch Linux (and all based distributions)

Make sure your AUR Helper is yay or paru.

$ yay -S rsync python psmisc xorg-xprop xorg-xwininfo imagemagick ffmpeg wireless_tools openbox \
pulseaudio pulseaudio-alsa alsa-utils brightnessctl nitrogen dunst tint2 gsimplecal rofi qt5-styleplugins \
lxsession xautolock rxvt-unicode-patched xclip scrot thunar thunar-archive-plugin thunar-volman \
thunar-media-tags-plugin ffmpegthumbnailer tumbler viewnior mpv mpd mpc ncmpcpp pavucontrol \
parcellite neofetch w3m htop picom-git obmenu-generator gtk2-perl playerctl xsettingsd
oh-my-zsh & plugins optional
$ 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 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting &&
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions &&
git clone 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

For Gentoo/Linux, I recommend to enabling keywords for specific packages and/or using ebuild-9999.

If it's not there, compile it manually from git source code or from elsewhere.

Optional: betterdiscord, file-roller, geany + geany plugins, gimp, lxappearance, nano + nano syntax highlighting, neovim, obconf, slim, spotify, termite, xfce4-power-manager.

Installation (dotfiles)

Are all directories required? πŸ€”
Please refer to wiki/Detailed-Environment.

Most of .files

You can clone or download it as a zip. After that put all files in the dotfiles folder to user's home directory.

Assume you are cloning in the ~/Documents directory for example.

$ git clone https://github.com/owl4ce/dotfiles.git && cd dotfiles/

I recommend with rsync.

$ rsync -avxHAXP --exclude '.git*' .* ~/

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 dotfiles folder after cloning from this repository, because to make upgrades easier. Read the update section.

Icons
$ cd ~/.icons && tar -Jxvf Papirus-Custom.tar.xz && tar -Jxvf Papirus-Dark-Custom.tar.xz &&
sudo ln -s ~/.icons/Papirus-Custom /usr/share/icons/Papirus-Custom &&
sudo ln -s ~/.icons/Papirus-Dark-Custom /usr/share/icons/Papirus-Dark-Custom

Why I need to link icons to user system resources? πŸ€”
That's needed by dunst in order to display most of icon from notification that spawned by application.

Refresh Font Cache
$ fc-cache -rv
Root Privileges with SUID
  • brightnessctl
  • others if needed

For brightnessctl, I recommend adding users to video group.

$ sudo chmod u+s $(command -v brightnessctl)

The step you are waiting for

The final step is login into openbox-session, basically login from display manager you use such as lightdm, gdm, etc. If you are using ~/.xinitrc without display manager, simply add

Systemd 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

...

131 alias ls="exa -lgh --icons --group-directories-first"
132 alias la="exa -lgha --icons --group-directories-first"

...
  • cat ➜ bat

Suggestion for tiling users

I recommend compiling it from source. Then put zentile binary 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 changing personal files with files in this repository. First, update local repository with git repository.

Remember where you cloned this repository.

$ cd dotfiles/ && git pull

Then list the files excluded by rsync. For example,
~/.rsxf

1 .git*
2 .lyrics
3 mpd.state
4 current-track
5 .zshrc
6 .nanorc
7 nvim
8 mpv
9 thunar.xml

...

and whatever the file is. Next, of course is rsync.

$ rsync -avxHAXP --exclude-from ~/.rsxf .* ~/

User's configuration

  • SLiM Themes optional

    See

    In fact, I use SLiM just for 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

  • 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

    Another useful tips: spotify-tray

  • 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

    1 Section "InputClass"
    2     Identifier "touchpad"
    3     Driver "libinput"
    4     MatchIsTouchpad "on"
    5     Option "Tapping" "on"
    6     Option "TappingButtonMap" "lmr"
    7 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, because 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 xfce4-power-manager-settings.

    Remove hashtags for all your needs, then re-login openbox-session.

    Warning! Putting a tray here means that when switching Visual Mode, the program 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

    • Terminal: urxvt termite
    • Lockscreen: anything
    • Music Player: mpd spotify
    • File Manager: anything
    1 terminal="urxvt"
    2 lockscreen="slimlock"
    3 musicpl="mpd"
    4 filemanager="thunar"
  • Neovim
    ~/.config/nvim/
    You know what to do with Vim-plug.

  • MPD Music Directory
    ~/.mpd/mpd.conf

    ...
    
    6 music_directory     "~/Music"
    
    ...
  • Ncmpcpp Music Directory
    Auto connect with MPD.

    How to use ncmpcpp albumart? (URxvt)
    It's easy, put album|cover|folder|artwork|front.jp?g|png|gif|bmp into folder with song album. Recommended image size is 500px ( 1:1 ) or more. See keybinds

  • Audio Server optional
    ~/.config/openbox/autostart

    This is optional for Linux distributions that don't use systemd as their init, actually pulseaudio can be triggered from increasing-decreasing audio volume.
    • Pulseaudio

      ...
      
      9  # there was once a pulseaudio here
      10 pulseaudio --start --log-target=syslog &> /dev/null &
      
      ...

      Or if you use pipewire as pulseaudio.

    • Pipewire as Pulseaudio

      More details at ArchWiki / Gentoo Wiki.
      Make sure pulseaudio is uninstalled or disable autospawn.
      /etc/pulse/client.conf

      ...
      
      25  autospawn = no
      
      ...
      ...
      
      9  # there was once a pulseaudio here
      10 pipewire &> /dev/null &
      
      ...
  • Neofetch Image
    ~/.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 Scheme

owl4ce.color-scheme

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 bashism is not POSIX-compliant to other shell. 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

Why openbox? Really a perfect next-gen window manager, easily configurable, and less resources usage.



🎊 Credits / Thanks

About

:cherry_blossom: Aesthetic OpenboxWM Environment

https://youtu.be/kSoViKHt-Yo

License:GNU General Public License v3.0


Languages

Language:CSS 64.4%Language:Shell 10.6%Language:Scheme 9.9%Language:Perl 8.0%Language:Python 4.5%Language:Vim Script 2.6%