Skip to content

farlado/dotfiles

Repository files navigation

Farlado’s Illiterate Dotfiles for EXWM

Table of Contents

About this configuration

This is an attempt at a literate dotfiles configuration. Originally my dotfiles repository was a massive mess of multiple files strewn across multiple directories. Inspired by the success that is my Emacs configuration and the XDG Base Directory Specification, I decided to start condensing my dotfiles into a single org-mode file tangled into files centered mostly around $XDG_CONFIG_HOME, albeit with incredibly mixed results.

Benefits

Dotfiles management is done almost exclusively from within $XDG_CONFIG_HOME so now my git repository doesn’t sit bare. This means I don’t need to use that dumb alias I had anymore. Emacs dotfiles management, baby. It also means all my config files are kept in a single place, which means I don’t have to dig everywhere for whatever is the matter.

Limitations

This repository is still very much a hybrid of literate files and files that very much are not literate. However, it should be possible, so long as these files are placed into the right directories, to end up with a working desktop environment. I also do a lot of system configuration, but it’s done in a different file.

About this branch

Because of the fact I am starting to maintain multiple rices, I now place each one in its own unique repository. The one I use daily will remain the primary branch, but other branches will be created as I give multiple desktop environments and window managers their chances to impress me. Currently the tried and true window manager for me is EXWM, which enables me to turn Emacs into a fully-featured X desktop environment, not just a window manager. Peak comfy.

Installation

  1. Clone the repository into its own directory. I personally use $HOME/.config/dotfiles.
  2. Run the deploy script within

From a command line, this should look like:

$ git clone https://github.com/farlado/dotfiles $HOME/.config/dotfiles
$ $HOME/.config/dotfiles/deploy.sh

License

Because I am a lazy piece of shit who doesn’t like long licenses do not think much harm could come from using a pushover license for dotfiles, I am publishing this literate Emacs configuration under the WTFPL.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004

Copyright (c) 2019-20 Farlado

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 0. You just DO WHAT THE FUCK YOU WANT TO.

On tangle

Making the proper paths

In order for tangling to work, the proper paths have to be present. This is done with a hidden block that tangles to a temporary file out in the middle of nowhere. In order to do configurations to Firefox, an additional block is used to run it for a short time to generate profiles.

(dolist (directory '(".cache/zsh"
                     ".config/mpd"
                     ".config/X11"
                     ".config/dunst"
                     ".config/gtk-2.0"
                     ".config/gtk-3.0"
                     ".local/share/zsh"))
  (make-directory (expand-file-name directory (getenv "HOME")) t))

(shell-command "sleep 2 && killall firefox & firefox")
(make-directory (expand-file-name
                 "chrome"
                 (car (file-expand-wildcards
                       (concat (getenv "HOME")
                               "/.mozilla/firefox/*.default-release"))))
                t)
(setenv "FFDIR" (car (file-expand-wildcards
                      (concat (getenv "HOME")
                              "/.mozilla/firefox/*.default-release"))))

Tangling absolute paths

There are some fields which require absolute paths. This means I have to use some noweb referencing to get my proper absolute paths. I define all of these references here.

$HOME

(getenv "HOME")

$XDG_CONFIG_HOME

(getenv "XDG_CONFIG_HOME")

Shell

On login ($HOME/.zprofile)

The .zprofile file is sourced before .zshrc and is kept slim so that whatever kind of session is meant to load is loaded as fast as possible.

Respect XDG Base Directory Specification

The XDG Base Directory Specification is meant to define where to store configurations, caches, and data for the user. Even Emacs respects this by default now. It cleans up the home directory considerably, but also introduces a cooler side effect: it makes portability a lot easier.

export XDG_DATA_HOME="$HOME/.local/share"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_BIN_HOME="$HOME/.local/bin"
export XDG_LIB_HOME="$HOME/.local/lib"
export XDG_CACHE_HOME="$HOME/.cache"

export GNUPGHOME="$XDG_DATA_HOME/gnupg"
export ICEAUTHORITY="$XDG_CACHE_HOME/ICEauthority"
export ASPELL_CONF="per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; personal $XDG_CONFIG_HOME/aspell/en.pws; repl $XDG_CONFIG_HOME/aspell/en.prepl"
export PYLINTHOME="$XDG_CACHE_HOME/pylist"

Handling .Xauthority properly is tricky because it requires its own section.

export XDG_RUNTIME_DIR=/tmp/$UID-runtime-dir
export XAUTHORITY=$XDG_RUNTIME_DIR/Xauthority
mkdir -p $XDG_RUNTIME_DIR
chmod 0700 $XDG_RUNTIME_DIR

Find an Emacs dump image if exists

Recently I have started to experiment with using a portable dumper image to load Emacs faster. If one exists, I want to load it.

if [[ -f $XDG_CONFIG_HOME/emacs/emacs.pdmp ]]; then
    export _EMACS_DUMP_FILE="--dump-file=$XDG_CONFIG_HOME/emacs/emacs.pdmp"
fi

Set default programs

The default editor should be emacsclient. Firefox is my browser.

export EDITOR=emacsclient
export VISUAL=emacsclient
export BROWSER=firefox

Login behavior

On tty1, start X. On tty2, start the shell normally. On tty3, run pdumper.el to generate a dump image for Emacs.

case $(tty | sed 's/\/dev\/tty//') in
    1) exec startx $XDG_CONFIG_HOME/X11/xinitrc &> /dev/null;;
    3) exec emacs --batch -q -l $XDG_CONFIG_HOME/emacs/pdumper.el;;
esac

Quiet login ($HOME/.hushlogin)

I don’t need to know the last time I logged in, I’d rather the login process be as quiet as possible. This file needs no actual contents, so the block that makes the file is not exported.

Configuration ($HOME/.zshrc)

I have come to appreciate what zsh has to offer, namely its completions and ease of customization.

Aliases

File management

  • Copying should be interactive
  • Displaying file sizes should be human-readable
  • Displaying disk usage should be human-readable
  • Punish misspelling ls
  • Listing directory contents should be colorful
  • Listing all directory contents should be its own command
  • Listing directory contents as a list should be its own command
  • Listing all directory contents as a list should be its own command
alias cp="cp -i"
alias du="du -h"
alias df="df -h"
alias ls="ls -h --color=always --group-directories-first"
alias lsa="ls -ah --color=always --group-directories-first"
alias lsl="ls -lh --color=always --group-directories-first"
alias lsal="ls -lah --color=always --group-directories-first"

System management

  • Getting to the Bluetooth control shell should be easy
  • Showing free memory should be human-readable
alias bt="bluetoothctl"
alias free="free -mh"

Completions

Automatically configured

This was automagically generated the first time I used zsh, and the only time it has needed a change is storing zcompdump in an XDG compliant place.

zstyle ':completion:*' completer _list _complete _match _correct _approximate _prefix
zstyle ':completion:*' completions 1
zstyle ':completion:*' condition 0
zstyle ':completion:*' expand prefix suffix
zstyle ':completion:*' file-sort name
zstyle ':completion:*' format '%d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' ignore-parents parent pwd directory
zstyle ':completion:*' insert-unambiguous true
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-prompt '%SAt %p: Hit TAB for more, or the character to insert%s'
zstyle ':completion:*' list-suffixes true
zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=** r:|=**'
zstyle ':completion:*' max-errors 3
zstyle ':completion:*' menu select=5
zstyle ':completion:*' original true
zstyle ':completion:*' preserve-prefix '//[^/]##/'
zstyle ':completion:*' prompt '%e possible errors'
zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s'
zstyle ':completion:*' squeeze-slashes true
zstyle ':completion:*' substitute 1
zstyle ':completion:*' verbose false
zstyle ':completion:*' word true
zstyle :compinstall filename "$HOME/.zshrc"

autoload -Uz compinit colors zcalc
compinit -d $XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION
colors

Additional options

Some other settings I like to keep enabled:

  • Command spelling correction (correct)
  • Case-insensitive globbing (nocaseglob)
  • Smart parameter expansion (rcexpandparam)
  • Numeric glob sorting (numbericglobsort)
  • Parameter expansion in the prompt (prompt_subst)
setopt correct
setopt nocaseglob
setopt rcexpandparam
setopt numericglobsort
setopt prompt_subst

History file

I like keeping a history file, just in case I need to look up a command I ran in the past. It’s stored in a place where it adheres to XDG base directory specification compliance for for safe keeping. Append to history instead of overwriting (appendhistory), removing all duplicates (histignorealldups).

HISTFILE=$XDG_DATA_HOME/zsh/history
HISTSIZE=1000
SAVEHIST=2000
setopt appendhistory
setopt histignorealldups

Key bindings

For some reason, by default zsh doesn’t have keys properly set up. For this reason, I need to define some keys and what they do, and assign Emacs key behavior.

bindkey -e
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
bindkey "\e[5~" beginning-of-history
bindkey "\e[6~" end-of-history
bindkey "\e[3~" delete-char
bindkey "\e[2~" quoted-insert
bindkey "\e[5C" forward-word
bindkey "\eOc" emacs-forward-word
bindkey "\e[5D" backward-word
bindkey "\eOd" emacs-backward-word
bindkey "\e[1;5C" forward-word
bindkey "\e[1;5D" backward-word
bindkey "^H" backward-delete-word
# for rxvt
bindkey "\e[8~" end-of-line
bindkey "\e[7~" beginning-of-line
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
bindkey "\eOH" beginning-of-line
bindkey "\eOF" end-of-line
# for freebsd console
bindkey "\e[H" beginning-of-line
bindkey "\e[F" end-of-line

Setting the prompt

It’s a dumb fancy-looking prompt. That’s about all there is to say about it. What follows afterward is how git status is added to the prompt.

export PS1=$'%(?.%{\033[0;34m%}.\033[0;31m%})┌%{\033[1;32m%}%n%{\033[0;37m%}%b@%{\033[1;31m%}%m%{\033[1;34m%}[%{\033[1;35m%}%c%{\033[1;34m%}]$(git_prompt_string)%{$fg_bold[red]%}%(?..[%b%{$fg[red]%}%?%{$fg_bold[red]%}])\n%(?.%{\033[0;34m%}.%{\033[0;31m%})└%{\033[0m%}%(!.#.$) '

Git status in the prompt

When managing git repositories, I want extra information in the prompt. I genuinely forget where I found this snippet, but it’s of much use.

Assigning symbols and colors

This block assigns, respectively:

  • The symbol to open a block with git information
  • The symbol to close a block with git information
  • The symbol to divide blocks with git information
  • The symbol for the number of commits ahead
  • The symbol for the number of commits behind
  • The symbol for merge conflicts
  • The symbol for untracked files
  • The symbol for modified tracked files
  • The symbol for staged changes present
GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}[%{$reset_color%}"
GIT_PROMPT_SUFFIX="%{$fg_bold[blue]%}]%{$reset_color%}"
GIT_PROMPT_SYMBOL="%{$fg_bold[blue]%}="
GIT_PROMPT_AHEAD="%{$fg[cyan]%}+NUM%{$reset_color%}"
GIT_PROMPT_BEHIND="%{$fg[red]%}-NUM%{$reset_color%}"
GIT_PROMPT_MERGING="%{$fg_bold[magenta]%}!%{$reset_color%}"
GIT_PROMPT_UNTRACKED="%{$fg_bold[red]%}?%{$reset_color%}"
GIT_PROMPT_MODIFIED="%{$fg_bold[yellow]%}?%{$reset_color%}"
GIT_PROMPT_STAGED="%{$fg_bold[green]%}+%{$reset_color%}"

Parse the current git branch

Get the current branch or the name-rev if on a detached head.

parse_git_branch() {
    ( git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD ) 2> /dev/null
}

Parse the current git state

This is where the actual state of the git repository is determined, and returned as a string.

parse_git_state() {
    # Show different symbols as appropriate for various Git repository states
    # Compose this value via multiple conditional appends.
    local GIT_STATE=""
    local NUM_AHEAD="$(git log --oneline @{u}.. 2> /dev/null | wc -l | tr -d ' ')"
    if [ "$NUM_AHEAD" -gt 0 ]; then
        GIT_STATE=$GIT_STATE${GIT_PROMPT_AHEAD//NUM/$NUM_AHEAD}
    fi
    local NUM_BEHIND="$(git log --oneline ..@{u} 2> /dev/null | wc -l | tr -d ' ')"
    if [ "$NUM_BEHIND" -gt 0 ]; then
        GIT_STATE=$GIT_STATE${GIT_PROMPT_BEHIND//NUM/$NUM_BEHIND}
    fi
    local GIT_DIR="$(git rev-parse --git-dir 2> /dev/null)"
    if [ -n $GIT_DIR ] && test -r $GIT_DIR/MERGE_HEAD; then
        GIT_STATE=$GIT_STATE$GIT_PROMPT_MERGING
    fi
    if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
        GIT_STATE=$GIT_STATE$GIT_PROMPT_UNTRACKED
    fi
    if ! git diff --quiet 2> /dev/null; then
        GIT_STATE=$GIT_STATE$GIT_PROMPT_MODIFIED
    fi
    if ! git diff --cached --quiet 2> /dev/null; then
        GIT_STATE=$GIT_STATE$GIT_PROMPT_STAGED
    fi
    if [[ -n $GIT_STATE ]]; then
        echo "$GIT_PROMPT_PREFIX$GIT_STATE$GIT_PROMPT_SUFFIX"
    fi
}

Return a string for the prompt

Finally, if when writing the prompt a git branch is found, return a string with the git state and git branch.

git_prompt_string() {
    local git_where="$(parse_git_branch)"
    [ -n "$git_where" ] && echo "$GIT_PROMPT_SYMBOL$(parse_git_state)$GIT_PROMPT_PREFIX%{$fg[magenta]%}${git_where#(refs/heads/|tags/)}$GIT_PROMPT_SUFFIX"
}

Syntax highlighting in the shell

It’s subtle, but it makes a world of difference in knowing whether I am entering a command properly.

source $XDG_CONFIG_HOME/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main root regexp brackets pattern)

Tangling a literate org-mode file

This is necessary for multiple reasons, but most notably so for tangling this specific file. I need to define a few macros and load org before I can tangle, though. We also skip all confirmation for evaluating. I also set up one for doing things with superuser privileges.

function orgtangle() {
    [[ ! -n $XDG_CONFIG_HOME ]] && export XDG_CONFIG_HOME="$HOME/.config"
    emacs --batch \
          --eval "(require 'org)" \
          --eval "(setq org-confirm-babel-evaluate nil)" \
          --eval "(org-babel-tangle-file \"$1\")"
}

function orgtanglesudo() {
    sudo emacs --batch \
               --eval "(require 'org)" \
               --eval "(setq org-confirm-babel-evaluate nil)" \
               --eval "(org-babel-tangle-file \"$1\")"
}

Show a fetch on startup

This is just a point of personal aesthetic preference. I like having some kind of little display pop up when I start a terminal.

ufetch

X session

Starting X (X11/xinitrc)

Emacs is my daily-driver desktop. This file is relatively minimal since most configuration is done in Emacs itself.

Make the X session accessible

This allows EXWM to load properly.

xhost +SI:localhost:$USER

Force 1080p on my W541 displays

Because I limit the resolution to 1080p but my W541 wants to display 3K, I need to force it. The displays I dock to also need configuration.

xrandr --output eDP1 --primary --mode 1920x1080 --pos 0x0 \
       --output DP2-1 --off --output DP2-2 --off --output DP2-3 --off

Set an environment variable for the window manager

Emacs is my desktop environment. In my Emacs configuration I use the environment variable _RUN_EXWM to signal to Emacs that it should run as my desktop environment.

export _RUN_EXWM=1

Make the background the color of my Emacs background

This makes Emacs startup look a lot more consistent.

hsetroot -solid "#282a36"

Use Emacs as the X input manager

IT WORKS WOOOOOO

export XMODIFIERS=@im=exwm-xim
export CLUTTER_IM_MODULE=xim
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim

Start PulseAudio daemon

Why isn’t this shit starting on its own?

pulseaudio &

Run the window manager

In this case, we start Emacs.

exec emacs $_EMACS_DUMP_FILE

GTK2 Appearance (gtk-2.0/gtkrc)

These settings apply the theme, cursor, and icons I prefer, along with other preferred visual settings. Some size values determined above.

gtk-theme-name="Ant-Dracula"
gtk-icon-theme-name="HighContrast"
gtk-font-name="Iosevka 10"
gtk-cursor-theme-name="Bibata_Ice"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"
gtk-xft-rgba="rgb"

GTK3 appearance (gtk-3.0/settings.ini)

This is the exact same settings as seen in GTK2’s configuration, but instead for GTK3. This also includes the size values determined above.

[Settings]
gtk-theme-name=Ant-Dracula
gtk-icon-theme-name=HighContrast
gtk-font-name=Iosevka 10
gtk-cursor-theme-name=Bibata_Ice
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=rgb

Notifications daemon (dunst/dunstrc)

Since Emacs doesn’t provide this, I end up having to use something else.

[global]
    font = "Iosevka 10"
    allow_markup = yes
    format = "<b>%s %p</b>\n%b"
    sort = yes
    indicate_hidden = true
    transparency = 10
    idle_threshold = 0
    geometry = "200x10-5+5"
    alignment = left
    show_age_threshold = 30
    sticky_history = yes
    follow = mouse
    word_wrap = yes
    separator_height = 3
    padding = 3
    horizontal_padding = 5
    separator_color = frame
    startup_notification = false

[frame]
    width = 3
    color = "#44475a"

[urgency_low]
    background = "#282a36"
    foreground = "#ffffff"
    timeout = 5

[urgency_normal]
    background = "#282a36"
    foreground = "#ffffff"
    timeout = 5

[urgency_critical]
    background = "#282a36"
    foreground = "#ffffff"
    timeout = 5

Music player (mpd/mpd.conf)

I use mpd, since it interfaces well with EMMS on Emacs.

Setting proper directories

This section requires absolute paths, which are tangled using noweb references as defined above.

  • Music and playlists should be in $HOME/Music
  • The database, log file, PID file, and state file should all be in $XDG_CONFIG_HOME/mpd
music_directory "<<HOME()>>/Music"
playlist_directory "<<HOME()>>/Music"
db_file "<<XDG_CONFIG_HOME()>>/mpd/mpd.db"
log_file "<<XDG_CONFIG_HOME()>>/mpd/mpd.log"
pid_file "<<XDG_CONFIG_HOME()>>/mpd/mpd.pid"
state_file "<<XDG_CONFIG_HOME()>>/mpd/mpdstate"

Setting the output interface

audio_output {
        type "pulse"
        name "pulse audio"
}

Use the right address and port

This is a local instance.

bind_to_address "127.0.0.1"
port "6601"

Web browser (Firefox)

Much human intervention is still required of this part of the configuration:

  • Extensions do not automatically install.
  • Configuration of the ad blocker is not automatic.
  • Some website specific settings cannot be set here.

Disabling tabs (chrome/userChrome.css)

I got used to managing single browser windows thanks to EXWM. I still can’t go back to having tabs when surfing the web.

#TabsToolbar { visibility: collapse !important; }

Respecting additional settings (user.js)

Since I change a lot of settings, I just spill this verbatim. It’s not actually shown because it’s not all that special.

Ad blocker configuration (adblock.txt)

As reiterated above, this file is not actually automatically applied. It is meant for uBlock Origin. It is not exported because of its length. Suffice to say, it’s pretty exhaustive.

{
  "timeStamp": 1586157688353,
  "version": "1.25.2",
  "userSettings": {
    "advancedUserEnabled": true,
    "alwaysDetachLogger": true,
    "autoUpdate": true,
    "cloudStorageEnabled": false,
    "collapseBlocked": true,
    "colorBlindFriendly": false,
    "contextMenuEnabled": true,
    "dynamicFilteringEnabled": true,
    "externalLists": "https://bitbucket.org/nicktabick/adblock-rules/raw/master/nt-adblock.txt\nhttps://dl.dropboxusercontent.com/s/1ybzw9lb7m1qiyl/AAs.txt\nhttps://easylist-downloads.adblockplus.org/adwarefilters.txt\nhttps://easylist-downloads.adblockplus.org/antiadblockfilters.txt\nhttps://easylist-downloads.adblockplus.org/fanboy-annoyance.txt\nhttps://easylist-downloads.adblockplus.org/fanboy-social.txt\nhttps://easylist-downloads.adblockplus.org/fb_annoyances_full.txt\nhttps://easylist-downloads.adblockplus.org/fb_annoyances_newsfeed.txt\nhttps://easylist-downloads.adblockplus.org/fb_annoyances_sidebar.txt\nhttps://easylist-downloads.adblockplus.org/message_seen_remover_for_facebook.txt\nhttps://easylist-downloads.adblockplus.org/yt_annoyances_other.txt\nhttps://easylist-downloads.adblockplus.org/yt_annoyances_suggestions.txt\nhttps://fanboy.co.nz/enhancedstats.txt\nhttps://fanboy.co.nz/fanboy-cookiemonster.txt\nhttps://fanboy.co.nz/fanboy-problematic-sites.txt\nhttps://fanboy.co.nz/r/fanboy-complete.txt\nhttps://fanboy.co.nz/r/fanboy-ultimate.txt\nhttps://filters.adtidy.org/extension/ublock/filters/1.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareABP.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareAdGuardHome.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/AncientLibrary/Facebook%20Privacy%20List.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/Android%20Scum%20Class%20—%20Fake%20notification%20counters.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/Anti-'Notification%20pre-prompt%20banners'%20List.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/AntiAmazonListForTwitch.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/BrowseWebsitesWithoutLoggingIn.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/I%20Don't%20Want%20to%20Download%20Your%20Browser.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/KnowYourMemePureBrowsingExperience.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/SocialShareList.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/TwitchPureViewingExperience.txt\nhttps://raw.githubusercontent.com/DandelionSprout/adfilt/master/WikiaPureBrowsingExperience.txt\nhttps://raw.githubusercontent.com/Hubird-au/Adversity/master/Antisocial.txt\nhttps://raw.githubusercontent.com/Hubird-au/Adversity/master/Extreme-Measures.txt\nhttps://raw.githubusercontent.com/LordBadmintonofYorkshire/Overlay-Blocker/master/blocklist.txt\nhttps://raw.githubusercontent.com/Manu1400/i-don-t-care-about-gotoup-btns/master/list-gotoup-btns.txt\nhttps://raw.githubusercontent.com/NeeEoo/AdBlockNeeEoo/master/List.txt\nhttps://raw.githubusercontent.com/Rpsl/adblock-leadgenerator-list/master/list/list.txt\nhttps://raw.githubusercontent.com/Strappazzon/filterlists/master/Filterlists/Tracking.txt\nhttps://raw.githubusercontent.com/bcye/Hello-Goodbye/master/filterlist.txt\nhttps://raw.githubusercontent.com/callmenemo491/DodgySiteBlocker/master/DodgySiteBlocker.txt\nhttps://raw.githubusercontent.com/cb-software/CB-Malicious-Domains/master/block_lists/adblock_plus.txt\nhttps://raw.githubusercontent.com/cpeterso/clickbait-blocklist/master/clickbait-blocklist.txt\nhttps://raw.githubusercontent.com/dariusworks/superblock/master/cleanersitesAiO.txt\nhttps://raw.githubusercontent.com/endolith/clickbait/master/clickbait.txt\nhttps://raw.githubusercontent.com/gasull/adblock-nsa/master/filters.txt\nhttps://raw.githubusercontent.com/gfmaster/adblock-korea-contrib/master/filter.txt\nhttps://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/nocoin.txt\nhttps://raw.githubusercontent.com/jasonbarone/membership-app-block-list/master/membership-app-block-list.txt\nhttps://raw.githubusercontent.com/kbinani/adblock-wikipedia/master/signed.txt\nhttps://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt\nhttps://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/i-dont-want-your-app.txt\nhttps://raw.githubusercontent.com/piperun/iploggerfilter/master/filterlist\nhttps://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt\nhttps://raw.githubusercontent.com/ryanbr/fanboy-adblock/master/fake-news.txt\nhttps://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/experimental.txt\nhttps://raw.githubusercontent.com/yourduskquibbles/webannoyances/master/filters/newsletter_filters.txt\nhttps://www.i-dont-care-about-cookies.eu/abp/",
    "firewallPaneMinimized": false,
    "hyperlinkAuditingDisabled": true,
    "ignoreGenericCosmeticFilters": false,
    "largeMediaSize": 50,
    "parseAllABPHideFilters": true,
    "prefetchingDisabled": true,
    "requestLogMaxEntries": 1000,
    "showIconBadge": true,
    "tooltipsDisabled": false,
    "webrtcIPAddressHidden": true
  },
  "selectedFilterLists": [
    "user-filters",
    "ublock-filters",
    "ublock-badware",
    "ublock-privacy",
    "ublock-abuse",
    "ublock-unbreak",
    "adguard-generic",
    "adguard-mobile",
    "easylist",
    "adguard-spyware",
    "easyprivacy",
    "fanboy-enhanced",
    "disconnect-malvertising",
    "malware-0",
    "malware-1",
    "spam404-0",
    "adguard-annoyance",
    "adguard-social",
    "fanboy-thirdparty_social",
    "fanboy-cookiemonster",
    "fanboy-annoyance",
    "fanboy-social",
    "ublock-annoyances",
    "dpollock-0",
    "hphosts",
    "mvps-0",
    "plowe-0",
    "ara-0",
    "BGR-0",
    "CHN-1",
    "CHN-0",
    "CZE-0",
    "DEU-0",
    "EST-0",
    "FIN-0",
    "FRA-0",
    "GRC-0",
    "HUN-0",
    "IDN-0",
    "IRN-0",
    "ISL-0",
    "ISR-0",
    "ITA-1",
    "ITA-0",
    "JPN-1",
    "KOR-1",
    "LTU-0",
    "LVA-0",
    "NLD-0",
    "NOR-0",
    "POL-0",
    "POL-2",
    "ROU-1",
    "RUS-0",
    "spa-1",
    "spa-0",
    "SVN-0",
    "SWE-1",
    "THA-0",
    "TUR-0",
    "VIE-1",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Anti-'Notification%20pre-prompt%20banners'%20List.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/KnowYourMemePureBrowsingExperience.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/WikiaPureBrowsingExperience.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SocialShareList.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareABP.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareAdGuardHome.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/TwitchPureViewingExperience.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/AntiAmazonListForTwitch.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/I%20Don't%20Want%20to%20Download%20Your%20Browser.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Android%20Scum%20Class%20—%20Fake%20notification%20counters.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/BrowseWebsitesWithoutLoggingIn.txt",
    "https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt",
    "https://raw.githubusercontent.com/gasull/adblock-nsa/master/filters.txt",
    "https://easylist-downloads.adblockplus.org/antiadblockfilters.txt",
    "https://raw.githubusercontent.com/kbinani/adblock-wikipedia/master/signed.txt",
    "https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt",
    "https://dl.dropboxusercontent.com/s/1ybzw9lb7m1qiyl/AAs.txt",
    "https://filters.adtidy.org/extension/ublock/filters/1.txt",
    "https://easylist-downloads.adblockplus.org/adwarefilters.txt",
    "https://raw.githubusercontent.com/Hubird-au/Adversity/master/Antisocial.txt",
    "https://raw.githubusercontent.com/dariusworks/superblock/master/cleanersitesAiO.txt",
    "https://raw.githubusercontent.com/cb-software/CB-Malicious-Domains/master/block_lists/adblock_plus.txt",
    "https://raw.githubusercontent.com/cpeterso/clickbait-blocklist/master/clickbait-blocklist.txt",
    "https://raw.githubusercontent.com/endolith/clickbait/master/clickbait.txt",
    "https://raw.githubusercontent.com/callmenemo491/DodgySiteBlocker/master/DodgySiteBlocker.txt",
    "https://fanboy.co.nz/fanboy-cookiemonster.txt",
    "https://raw.githubusercontent.com/Hubird-au/Adversity/master/Extreme-Measures.txt",
    "https://easylist-downloads.adblockplus.org/fb_annoyances_full.txt",
    "https://easylist-downloads.adblockplus.org/fb_annoyances_newsfeed.txt",
    "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/AncientLibrary/Facebook%20Privacy%20List.txt",
    "https://easylist-downloads.adblockplus.org/fb_annoyances_sidebar.txt",
    "https://raw.githubusercontent.com/ryanbr/fanboy-adblock/master/fake-news.txt",
    "https://easylist-downloads.adblockplus.org/fanboy-annoyance.txt",
    "https://fanboy.co.nz/enhancedstats.txt",
    "https://fanboy.co.nz/fanboy-problematic-sites.txt",
    "https://easylist-downloads.adblockplus.org/fanboy-social.txt",
    "https://fanboy.co.nz/r/fanboy-complete.txt",
    "https://fanboy.co.nz/r/fanboy-ultimate.txt",
    "https://raw.githubusercontent.com/bcye/Hello-Goodbye/master/filterlist.txt",
    "https://www.i-dont-care-about-cookies.eu/abp/",
    "https://raw.githubusercontent.com/Manu1400/i-don-t-care-about-gotoup-btns/master/list-gotoup-btns.txt",
    "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/i-dont-want-your-app.txt",
    "https://raw.githubusercontent.com/gfmaster/adblock-korea-contrib/master/filter.txt",
    "https://raw.githubusercontent.com/Rpsl/adblock-leadgenerator-list/master/list/list.txt",
    "https://raw.githubusercontent.com/jasonbarone/membership-app-block-list/master/membership-app-block-list.txt",
    "https://easylist-downloads.adblockplus.org/message_seen_remover_for_facebook.txt",
    "https://raw.githubusercontent.com/NeeEoo/AdBlockNeeEoo/master/List.txt",
    "https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/nocoin.txt",
    "https://bitbucket.org/nicktabick/adblock-rules/raw/master/nt-adblock.txt",
    "https://raw.githubusercontent.com/LordBadmintonofYorkshire/Overlay-Blocker/master/blocklist.txt",
    "https://raw.githubusercontent.com/piperun/iploggerfilter/master/filterlist",
    "https://raw.githubusercontent.com/Strappazzon/filterlists/master/Filterlists/Tracking.txt",
    "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/experimental.txt",
    "https://raw.githubusercontent.com/yourduskquibbles/webannoyances/master/filters/newsletter_filters.txt",
    "https://easylist-downloads.adblockplus.org/yt_annoyances_other.txt",
    "https://easylist-downloads.adblockplus.org/yt_annoyances_suggestions.txt"
  ],
  "hiddenSettings": {
    "allowGenericProceduralFilters": false,
    "assetFetchTimeout": 30,
    "autoCommentFilterTemplate": "{{date}} {{origin}}",
    "autoUpdateAssetFetchPeriod": 120,
    "autoUpdateDelayAfterLaunch": 180,
    "autoUpdatePeriod": 7,
    "benchmarkDatasetURL": "unset",
    "blockingProfiles": "11111/#F00 11011/#C0F 11001/#00F 00001",
    "cacheStorageAPI": "unset",
    "cacheStorageCompression": true,
    "cacheControlForFirefox1376932": "no-cache, no-store, must-revalidate",
    "cnameIgnoreList": "unset",
    "cnameIgnore1stParty": true,
    "cnameIgnoreExceptions": true,
    "cnameIgnoreRootDocument": true,
    "cnameMaxTTL": 120,
    "cnameReplayFullURL": false,
    "cnameUncloak": true,
    "consoleLogLevel": "unset",
    "debugScriptlets": false,
    "debugScriptletInjector": false,
    "disableWebAssembly": false,
    "extensionUpdateForceReload": false,
    "ignoreRedirectFilters": false,
    "ignoreScriptInjectFilters": false,
    "filterAuthorMode": false,
    "loggerPopupType": "popup",
    "manualUpdateAssetFetchPeriod": 500,
    "popupFontSize": "unset",
    "requestJournalProcessPeriod": 1000,
    "selfieAfter": 3,
    "strictBlockingBypassDuration": 120,
    "suspendTabsUntilReady": "unset",
    "uiFlavor": "unset",
    "updateAssetBypassBrowserCache": false,
    "userResourcesLocation": "unset"
  },
  "whitelist": [
    "about-scheme",
    "annualcreditreport.transunion.com",
    "chrome-extension-scheme",
    "chrome-scheme",
    "melpa.org",
    "opera-scheme",
    "vivaldi-scheme",
    "www.netteller.com",
    "wyciwyg-scheme"
  ],
  "netWhitelist": "about-scheme\nannualcreditreport.transunion.com\nchrome-extension-scheme\nchrome-scheme\nmelpa.org\nopera-scheme\nvivaldi-scheme\nwww.netteller.com\nwyciwyg-scheme",
  "dynamicFilteringString": "",
  "urlFilteringString": "",
  "hostnameSwitchesString": "no-csp-reports: * true",
  "userFilters": "! 7/29/2019 https://www.facebook.com\nwww.facebook.com##div.f_1j0s8guc1h.pagelet:nth-of-type(2) > ._1-ia > ._4-u8._20os._2tyk._1-ib._4-u2\n"
}

About

Literate-ish dotfiles

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages