- readme: - added screenshot - added graveyard - updated github links with new username - removed package lists - updated clipster conf to not use primary selection - removed package lists as they are out of date and redundant (they should go in bootstrap.sh) - updated ranger pywal shortcuts with new script name - brought scripts up to date
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)
- kitty (and other terminal emulators)
- Sublime Text
- the RGB keyboard in my laptop
(still trying to make it work on my not-programmable-over-USB keyboard...)
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.
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
Contains templates for programs to import the colors and handmade color schemes for some wallpapers.
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 install
sudo 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 with
asar extract core.asar core.asar.extracted.
- Open the file
core.asar.extracted/app/mainScreen.jsin your text editor of choice.
- Around line
mainWindowOptionsobject and outside of the
frame: false, and add the line
transparent: 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
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!
Programs you should know about that weren't mentioned elsewhere
Located in ~/.local/bin/ or installed using a package manager
Clones git repos and organizes them by their URL (like
go get) and
cds into them.
Controls keyboard backlight brightness.
Searches for patterns within files in a directory. Super fast.
Quickly navigates your filesystem by keeping a record of your most-visited directories.
.bash_aliasesSymlinked in ~ - Command aliases sourced by bash and fish.
.profileSymlinked in ~ - Script that runs when a shell is opened.
.xinitrcSymlinked in ~ - Script that runs when X session starts.
libinput-gestures.confSymlinked in ~/.config/ - Touchpad gestures for libinput.
lightdm-mini-greeter.confSymlinked in /etc/lightdm/ - Config file for lightdm-mini-greeter.
logid.cfgSymlinked in /etc/ - Gesture and button mapping for Logitech mice using logiops.
.nanorcSymlinked in ~ - Config for the
nanotext editor. I don't use it often but it's nice to keep this on hand.
rofimoji.rcSymlinked 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
sudo npm i -g asar.
- Exit Atom completely.
- cd into
/usr/share/atom/resources/, then unpack the main program with
sudo asar extract app.asar app.asar.extracted. You must use
sudobecause it's in a write-protected directory.
- Open the file
app.asar.extracted/src/main-process/atom-window.jsin your text editor of choice (with root privileges).
- Around line 38 inside the
optionsobject and outside of the
webPreferencesobject, add the line
transparent: true,which will make the window background transparent. (I've also added
frame: 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.