You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
reese sapphire 939fed8ad1 update readme and remove old files 7 months ago
afetch@a3300dacd5 updated afetch submodule 2 years ago
backup a buncha stuff 11 months ago
clipster update readme and remove old files 7 months ago
dunst a buncha stuff 11 months ago
eww introduce a few components to replace others 7 months ago
firefox introduce a few components to replace others 7 months ago
fish introduce a few components to replace others 7 months ago
i3 introduce a few components to replace others 7 months ago
kitty too many updates to count 2 years ago
micro moved scripts to its own repo, among other things 9 months ago
misc update readme and remove old files 7 months ago
picom introduce a few components to replace others 7 months ago
polybar introduce a few components to replace others 7 months ago
ranger update readme and remove old files 7 months ago
rofi introduce a few components to replace others 7 months ago
scripts@7f03d4dab8 update readme and remove old files 7 months ago
sublime-text introduce a few components to replace others 7 months ago
thunderbird long time no c(ommit) 1 year ago
wal introduce a few components to replace others 7 months ago
.editorconfig introduce a few components to replace others 7 months ago
.gitignore introduce a few components to replace others 7 months ago
.gitmodules moved scripts to its own repo, among other things 9 months ago
README.md update readme and remove old files 7 months ago
bootstrap.sh introduce a few components to replace others 7 months ago
package.json a buncha stuff 11 months ago
screenshot.png update readme and remove old files 7 months ago

README.md

dotfiles

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.

screenshot of my desktop with some windows open

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.

Table of Contents

Colors

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.

Glamor

i3

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.

picom

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.

dunst

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.

rofi

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

wal

Contains templates for programs to import the colors and handmade color schemes for some wallpapers.

Firefox

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.

Sublime Text

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.

Discord

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:

  1. Make sure you have npm, then install asar with sudo npm i -g asar.
  2. Exit Discord completely.
  3. 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.
  4. Open the file core.asar.extracted/app/mainScreen.js in your text editor of choice.
  5. Around line 372 inside the mainWindowOptions object and outside of the webPreferences object, set backgroundColor: '#00000000' and frame: false, and add the line transparent: true. Make sure there's a comma after each of these.
  6. Save this file, then package it back up with asar pack core.asar.extracted core.asar.
  7. 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.

Fonts

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.

Terminal environment

kitty

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

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.

ranger

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.

Scripts

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

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

Miscellanea

Stored in misc/

Graveyard

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.

Abricotine

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

Atom

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.

  1. Exit Atom completely.
  2. cd into /usr/share/atom/resources/, then unpack the main program with sudo asar extract app.asar app.asar.extracted. You must use sudo because it's in a write-protected directory.
  3. Open the file app.asar.extracted/src/main-process/atom-window.js in your text editor of choice (with root privileges).
  4. Around line 38 inside the options object and outside of the webPreferences object, 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.)
  5. 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...
  6. 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.

polybar

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

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.

zsh

Nothing special. Uses oh my zsh.