These are most of the configuration files I use to get my setup to look and behave how it does. Here are some notable things about them.
The directories in the root of the repository (not files such as this README) have symlinks pointing to them with the same names, located in ~/.config/
, unless stated otherwise. The files in the root are mostly there for repo management.
There is also a graveyard
section at the end that contains interesting stuff for apps that I don't use anymore including Atom and Vivaldi, in case you don't see something you're looking for.
pywal is a tool that picks a wallpaper and generates a color palette from the dominant colors in it. The colors are used in various parts of my desktop, including:
- i3 (and i3-lock)
- polybar
- rofi
- kitty (and other terminal emulators)
- Sublime Text
- Firefox
- Discord
- the RGB keyboard in my laptop
(still trying to make it work on my not-programmable-over-USB keyboard...)
Some of these refresh their colors automatically but most need to be told to refresh either by a script or by a parent program.
i3-gaps is a fork of the tiling window manager that adds the ability to create gaps between windows in tiling mode so your wallpaper can peek through. In addition to window styling, my config adds quite a few keyboard shortcuts for things like starting apps quickly, opening rofi menus, and taking screenshots.
A small but powerful compositor for X desktops. I'm using this fork that fixes one tiny issue with rounded corners in ibhagwan's picom.
Compton has the ability to make windows semi-transparent but I chose to forgo this feature in favor of creating transparent areas within some apps. I then turned off blurring in compton's config for any program that's opaque, because there's no reason to do work for something that I'm not even going to see.
A notification daemon that displays desktop notifications. Its appearance is pretty extensively customizable, but sadly one thing it can't do is background transparency so it has to be applied to the entire notification. Luckily it's not too noticeable (in my opinion). It doesn't use colors from wal because I think it looks better without them.
Mostly just preferences for behavior rather than appearance, which is taken care of in this wal template. When I have time I want to go through and update the theme to account for some things I didn't know about when I first made it (like the -mesg
line).
Contains templates for programs to import the colors and handmade color schemes for some wallpapers.
I'm using the Pywalfox extension + a few UI tweaks in my userChrome.css
and userContent.css
. I'm also using everything in my userstyles
repo with the Stylus extension.
Symlinked as ~/.config/sublime-text-3/Packages/User I have yet to create a UI theme that matches the rest of my desktop, so for now I'm using the gruvbox theme. It works with any color scheme, not just gruvbox.
NOTE: Modifying the Discord client's code goes against Discord's Terms of Service! By doing this your account is subject to suspension. Though I have not heard of this happening, if it happens to you don't say I didn't warn you.
Okay where were we...
First I installed EnhancedDiscord for its CSS loading and other neat plugins. To enable transparency follow these steps:
- Make sure you have
npm
, then installasar
withsudo npm i -g asar
. - Exit Discord completely.
- cd into
~/.config/discord/0.0.XX/modules/discord_desktop_core/
(where "XX" is the current version number), then unpack the core program withasar extract core.asar core.asar.extracted
. - Open the file
core.asar.extracted/app/mainScreen.js
in your text editor of choice. - Around line
372
inside themainWindowOptions
object and outside of thewebPreferences
object, setbackgroundColor: '#00000000'
andframe: false
, and add the linetransparent: true
. Make sure there's a comma after each of these. - Save this file, then package it back up with
asar pack core.asar.extracted core.asar
. - Open Discord, go to Settings, scroll down to Advanced, and disable Hardware Acceleration.
I modified the application entry to use the command line argument --remote-debugging-port=1666
which allows the lightswitch
script to switch between light and dark mode.
I'm using the pywal variant of my Bliss theme which gets recompiled by the pywal script.
The sans-serif font I use is Roboto. I use a Nerd Font-patched version of Fira Code, a monospaced programming font, in my terminal and code editor. I have an older version of it installed as well because the newer version doesn't look right in polybar.
I like kitty because it's fast and has many settings to get it to look and work how I want it to. A good terminal emulator makes working inside of it much more enjoyable. Pywal can set the colors of most terms automatically, and kitty is one of them.
My config contains only the features that I need. I try not to get bogged down by learning every single thing that it can do and just rely on i3 for most of that.
fish is nice because it leaves behind some of the typical shell paradigms carried through the decades in favor of having a much more friendly user experience.
I was hesitant to try it at first because people say it's "not POSIX-compliant". But what does that mean, really? The scripts that I had written already have a hashbang line at the top, which should always be standard practice anyway. Another supposed drawback is that most shell-code pasted into the terminal won't always work right away, but I found this to be the case with zsh sometimes too.
Overall I think fish is easier to use, and if backwards-compatibility is needed it's easy to just switch to another shell temporarily.
I'm using oh my fish with the bobthefish
theme.
A TUI file manager. It's highly customizable but I found that there isn't much that I really needed to change to make it work well. There's a bit of a learning curve to it but there are plenty of helpful resources you can find.
The shell scripts which were previously found here are now located in this repo!
Located in ~/.local/bin/ or installed using a package manager
Bitwarden, rbw, and rofi-rbw
Open-source password manager with apps and extensions for many platforms.
clipster and rofi-clipster
Simple and performance-friendly clipboard history manager.
h
Clones git repos and organizes them by their URL (like go get
) and cd
s into them.
kb-backlight
Controls keyboard backlight brightness.
maim
Takes screenshots.
ripgrep (rg
)
Searches for patterns within files in a directory. Super fast.
zoxide
Quickly navigates your filesystem by keeping a record of your most-visited directories.
Stored in misc/
.bash_aliases
Symlinked in ~ - Command aliases sourced by bash and fish..profile
Symlinked in ~ - Script that runs when a shell is opened..xinitrc
Symlinked in ~ - Script that runs when X session starts.libinput-gestures.conf
Symlinked in ~/.config/ - Touchpad gestures for libinput.lightdm-mini-greeter.conf
Symlinked in /etc/lightdm/ - Config file for lightdm-mini-greeter.logid.cfg
Symlinked in /etc/ - Gesture and button mapping for Logitech mice using logiops..nanorc
*Symlinked in ~* - Config for thenano
text editor. I don't use it often but it's nice to keep this on hand.rofimoji.rc
Symlinked in ~/.config/ - Config for rofimoji, a Unicode character picker.
These used to be part of my setup but have since been replaced or superseded. Links go to the file or directory at the last commit it existed in.
Symlinked as ~/.config/Abricotine/app
Markdown editor with custom theme support. No transparency out of the box but could probably be modified in the same way as Atom, though I like it better opaque. My wal theme is based on the default dark theme. I haven't figured out how to make it refresh the theme automatically yet so it must be done manually (ctrl+F5).
Symlinked as ~/.atom
Because it does not support transparent themes out of the box (on Linux, at least), I needed to make a quick modification to its internals. Don't worry, it doesn't involve building anything from source. Here are the steps I followed:
0. Make sure you have npm
, then install asar
with sudo npm i -g asar
.
- Exit Atom completely.
- cd into
/usr/share/atom/resources/
, then unpack the main program withsudo asar extract app.asar app.asar.extracted
. You must usesudo
because it's in a write-protected directory. - Open the file
app.asar.extracted/src/main-process/atom-window.js
in your text editor of choice (with root privileges). - Around line 38 inside the
options
object and outside of thewebPreferences
object, add the linetransparent: true,
which will make the window background transparent. (I've also addedframe: false,
to mine which will hide the window title and menu bars. You don't have to.) - Save this file, then package it back up in the terminal with
sudo asar pack app.asar.extracted app.asar
. If you did it correctly you should be able to start Atom again! You won't see a difference at first because... - You need a theme that supports transparency! I'm using my Fang and Wave UI themes (dark and light mode, respectively). native-ui works rather well too.
I wrote some styles to go along with Fang/Wave in my stylesheet that adds colors from pywal.
A status bar with easy access to scripts and whatever else I need. There's the main
bar, and one called secondary
which is stripped down for multi-monitor setups. The rebar
script detects monitors and places these bars automatically.
Vivaldi can use custom CSS with an experimental toggle which is nice, but it doesn't go so far as to be pywal-friendly without having to restart every time. Fortunately I can use this script (by wismut on vivaldi.net and slightly modified by me) to set the theme colors through a remote Chromium console. It's pretty clever honestly. Vivaldi must be started with the command vivaldi --remote-debugging-port=9222
for this to work.
Nothing special. Uses oh my zsh.