summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Picciano <mediocregopher@gmail.com>2017-10-17 18:12:57 -0600
committermediocregopher <mediocregopher@gmail.com>2021-10-03 17:22:56 -0600
commit07ab3a77b44944a1ac234fbd717391f36370416e (patch)
treeedd959740bf9256bf38e9c2e3cacda8c555f8c56
initial public commit
-rw-r--r--.gitignore1
-rw-r--r--README.md103
-rw-r--r--alacritty/alacritty.yml861
-rw-r--r--alacritty/default.nix35
-rw-r--r--alacritty/fonts/SourceCodePro-Black.ttfbin0 -> 120356 bytes
-rw-r--r--alacritty/fonts/SourceCodePro-Bold.ttfbin0 -> 120504 bytes
-rw-r--r--alacritty/fonts/SourceCodePro-ExtraLight.ttfbin0 -> 121568 bytes
-rw-r--r--alacritty/fonts/SourceCodePro-Light.ttfbin0 -> 121284 bytes
-rw-r--r--alacritty/fonts/SourceCodePro-Medium.ttfbin0 -> 120244 bytes
-rw-r--r--alacritty/fonts/SourceCodePro-Regular.ttfbin0 -> 120548 bytes
-rw-r--r--alacritty/fonts/SourceCodePro-Semibold.ttfbin0 -> 120252 bytes
-rw-r--r--appimage.nix17
-rw-r--r--awesome/awesome.desktop9
-rw-r--r--awesome/bat.lua43
-rwxr-xr-xawesome/bin/cricketbin0 -> 2744274 bytes
-rwxr-xr-xawesome/bin/imgavgbin0 -> 2160037 bytes
-rwxr-xr-xawesome/bin/random_i3lock.sh4
-rwxr-xr-xawesome/bin/scrot-gobin.sh4
-rwxr-xr-xawesome/bin/sysstats.sh50
-rw-r--r--awesome/default.nix26
-rw-r--r--awesome/helper.pngbin0 -> 26778 bytes
-rw-r--r--awesome/mediocregopher-sysstats.service13
-rw-r--r--awesome/pulseaudio.lua40
-rw-r--r--awesome/rc.lua544
-rw-r--r--awesome/theme/README3
-rw-r--r--awesome/theme/background.pngbin0 -> 224736 bytes
-rw-r--r--awesome/theme/background_white.pngbin0 -> 270916 bytes
-rw-r--r--awesome/theme/layouts/dwindle.pngbin0 -> 967 bytes
-rw-r--r--awesome/theme/layouts/dwindlew.pngbin0 -> 997 bytes
-rw-r--r--awesome/theme/layouts/fairh.pngbin0 -> 194 bytes
-rw-r--r--awesome/theme/layouts/fairhw.pngbin0 -> 194 bytes
-rw-r--r--awesome/theme/layouts/fairv.pngbin0 -> 201 bytes
-rw-r--r--awesome/theme/layouts/fairvw.pngbin0 -> 201 bytes
-rw-r--r--awesome/theme/layouts/floating.pngbin0 -> 395 bytes
-rw-r--r--awesome/theme/layouts/floatingw.pngbin0 -> 388 bytes
-rw-r--r--awesome/theme/layouts/fullscreen.pngbin0 -> 202 bytes
-rw-r--r--awesome/theme/layouts/fullscreenw.pngbin0 -> 202 bytes
-rw-r--r--awesome/theme/layouts/magnifier.pngbin0 -> 209 bytes
-rw-r--r--awesome/theme/layouts/magnifierw.pngbin0 -> 209 bytes
-rw-r--r--awesome/theme/layouts/max.pngbin0 -> 321 bytes
-rw-r--r--awesome/theme/layouts/maxw.pngbin0 -> 321 bytes
-rw-r--r--awesome/theme/layouts/spiral.pngbin0 -> 1506 bytes
-rw-r--r--awesome/theme/layouts/spiralw.pngbin0 -> 1527 bytes
-rw-r--r--awesome/theme/layouts/tile.pngbin0 -> 174 bytes
-rw-r--r--awesome/theme/layouts/tilebottom.pngbin0 -> 195 bytes
-rw-r--r--awesome/theme/layouts/tilebottomw.pngbin0 -> 216 bytes
-rw-r--r--awesome/theme/layouts/tileleft.pngbin0 -> 172 bytes
-rw-r--r--awesome/theme/layouts/tileleftw.pngbin0 -> 170 bytes
-rw-r--r--awesome/theme/layouts/tiletop.pngbin0 -> 195 bytes
-rw-r--r--awesome/theme/layouts/tiletopw.pngbin0 -> 215 bytes
-rw-r--r--awesome/theme/layouts/tilew.pngbin0 -> 168 bytes
-rw-r--r--awesome/theme/submenu.pngbin0 -> 440 bytes
-rw-r--r--awesome/theme/taglist/squarefw.pngbin0 -> 187 bytes
-rw-r--r--awesome/theme/taglist/squarew.pngbin0 -> 193 bytes
-rw-r--r--awesome/theme/theme.lua105
-rw-r--r--awesome/theme/titlebar/close_focus.pngbin0 -> 666 bytes
-rw-r--r--awesome/theme/titlebar/close_normal.pngbin0 -> 830 bytes
-rw-r--r--awesome/theme/titlebar/floating_focus_active.pngbin0 -> 598 bytes
-rw-r--r--awesome/theme/titlebar/floating_focus_inactive.pngbin0 -> 549 bytes
-rw-r--r--awesome/theme/titlebar/floating_normal_active.pngbin0 -> 814 bytes
-rw-r--r--awesome/theme/titlebar/floating_normal_inactive.pngbin0 -> 553 bytes
-rw-r--r--awesome/theme/titlebar/maximized_focus_active.pngbin0 -> 1013 bytes
-rw-r--r--awesome/theme/titlebar/maximized_focus_inactive.pngbin0 -> 754 bytes
-rw-r--r--awesome/theme/titlebar/maximized_normal_active.pngbin0 -> 1493 bytes
-rw-r--r--awesome/theme/titlebar/maximized_normal_inactive.pngbin0 -> 740 bytes
-rw-r--r--awesome/theme/titlebar/ontop_focus_active.pngbin0 -> 774 bytes
-rw-r--r--awesome/theme/titlebar/ontop_focus_inactive.pngbin0 -> 679 bytes
-rw-r--r--awesome/theme/titlebar/ontop_normal_active.pngbin0 -> 1233 bytes
-rw-r--r--awesome/theme/titlebar/ontop_normal_inactive.pngbin0 -> 682 bytes
-rw-r--r--awesome/theme/titlebar/sticky_focus_active.pngbin0 -> 833 bytes
-rw-r--r--awesome/theme/titlebar/sticky_focus_inactive.pngbin0 -> 624 bytes
-rw-r--r--awesome/theme/titlebar/sticky_normal_active.pngbin0 -> 1377 bytes
-rw-r--r--awesome/theme/titlebar/sticky_normal_inactive.pngbin0 -> 601 bytes
-rw-r--r--base/gitconfig29
-rwxr-xr-xbin/git-remote-gcrypt921
-rwxr-xr-xbin/go-playground5
-rwxr-xr-xbin/sshfs3
-rw-r--r--bonzi.pngbin0 -> 29742 bytes
-rw-r--r--default.nix130
-rw-r--r--nvim/default.nix94
-rw-r--r--nvim/init.vim170
-rw-r--r--pkgs.nix41
-rw-r--r--wallpapers/4k-oled-wallpaper-of-the-m87-black-hole-2560×1440.jpgbin0 -> 414224 bytes
-rw-r--r--wallpapers/4o1bisow7ps21.pngbin0 -> 5871511 bytes
-rw-r--r--wallpapers/7nmbvhlv21s21.jpgbin0 -> 496943 bytes
-rw-r--r--wallpapers/abra.jpgbin0 -> 65216 bytes
-rw-r--r--wallpapers/articuno.jpgbin0 -> 130886 bytes
-rw-r--r--wallpapers/big_71d0086eab49280fed10d14d573893a876b5eaf4.pngbin0 -> 772872 bytes
-rw-r--r--wallpapers/big_aaf416dcccb774b6e508f40e34bd040f72c3d854.jpgbin0 -> 382113 bytes
-rw-r--r--wallpapers/big_b1f7b91cb5f611733e723dfcd394364997738589.jpgbin0 -> 61937 bytes
-rw-r--r--wallpapers/big_c52f705c7d5b9b74b96c30b5c44361fb04b7d0c7.pngbin0 -> 238610 bytes
-rw-r--r--wallpapers/bmc5i4njj4t21.pngbin0 -> 2385718 bytes
-rw-r--r--wallpapers/charizard.jpgbin0 -> 43155 bytes
-rw-r--r--wallpapers/cubone.jpgbin0 -> 46667 bytes
-rw-r--r--wallpapers/dragonair.jpgbin0 -> 45577 bytes
-rw-r--r--wallpapers/dratini.jpgbin0 -> 44303 bytes
-rw-r--r--wallpapers/efo9jncq20s21.jpgbin0 -> 277305 bytes
-rw-r--r--wallpapers/elochki-by-hangmoon-2560×1440.jpgbin0 -> 379045 bytes
-rw-r--r--wallpapers/evee.jpgbin0 -> 47617 bytes
-rw-r--r--wallpapers/gastly.jpgbin0 -> 47997 bytes
-rw-r--r--wallpapers/growlithe.jpgbin0 -> 106465 bytes
-rw-r--r--wallpapers/haunter.jpgbin0 -> 27144 bytes
-rw-r--r--wallpapers/ivysaur.jpgbin0 -> 86629 bytes
-rw-r--r--wallpapers/jolteon.jpgbin0 -> 237431 bytes
-rw-r--r--wallpapers/magicarp.jpgbin0 -> 95080 bytes
-rw-r--r--wallpapers/melee_minimal_wallpaper_by_browniehooves-d8lwcvk.pngbin0 -> 477562 bytes
-rw-r--r--wallpapers/mew.jpgbin0 -> 34049 bytes
-rw-r--r--wallpapers/mewtwo.jpgbin0 -> 179216 bytes
-rw-r--r--wallpapers/pikachu.jpgbin0 -> 51908 bytes
-rw-r--r--wallpapers/polywhirl.jpgbin0 -> 71552 bytes
-rw-r--r--wallpapers/rapidash.jpgbin0 -> 68923 bytes
-rw-r--r--wallpapers/sand-inside-house-2560×1440.jpgbin0 -> 579261 bytes
-rw-r--r--wallpapers/sea-house-spirited-away-2560×1440.jpgbin0 -> 585099 bytes
-rw-r--r--wallpapers/slowpoke.jpgbin0 -> 70175 bytes
-rw-r--r--wallpapers/snorlax.jpgbin0 -> 62577 bytes
-rw-r--r--wallpapers/typhlosion.jpgbin0 -> 256098 bytes
-rw-r--r--wallpapers/umbreon.jpgbin0 -> 44871 bytes
-rw-r--r--wallpapers/wallhaven-103929.pngbin0 -> 598474 bytes
-rw-r--r--wallpapers/wallhaven-109635.jpgbin0 -> 77601 bytes
-rw-r--r--wallpapers/wallhaven-113202.jpgbin0 -> 151205 bytes
-rw-r--r--wallpapers/wallhaven-114805.jpgbin0 -> 421289 bytes
-rw-r--r--wallpapers/wallhaven-134336.jpgbin0 -> 246774 bytes
-rw-r--r--wallpapers/wallhaven-13623.jpgbin0 -> 349811 bytes
-rw-r--r--wallpapers/wallhaven-152672.jpgbin0 -> 126814 bytes
-rw-r--r--wallpapers/wallhaven-154036.jpgbin0 -> 76503 bytes
-rw-r--r--wallpapers/wallhaven-157.jpgbin0 -> 252496 bytes
-rw-r--r--wallpapers/wallhaven-15767.jpgbin0 -> 562944 bytes
-rw-r--r--wallpapers/wallhaven-164029.pngbin0 -> 2503234 bytes
-rw-r--r--wallpapers/wallhaven-164037.jpgbin0 -> 562828 bytes
-rw-r--r--wallpapers/wallhaven-17773.jpgbin0 -> 82564 bytes
-rw-r--r--wallpapers/wallhaven-192010.jpgbin0 -> 146293 bytes
-rw-r--r--wallpapers/wallhaven-20691.jpgbin0 -> 664988 bytes
-rw-r--r--wallpapers/wallhaven-22782.jpgbin0 -> 609393 bytes
-rw-r--r--wallpapers/wallhaven-264484.jpgbin0 -> 315128 bytes
-rw-r--r--wallpapers/wallhaven-28204.jpgbin0 -> 137364 bytes
-rw-r--r--wallpapers/wallhaven-2986.jpgbin0 -> 184936 bytes
-rw-r--r--wallpapers/wallhaven-310.jpgbin0 -> 557548 bytes
-rw-r--r--wallpapers/wallhaven-356350.jpgbin0 -> 332298 bytes
-rw-r--r--wallpapers/wallhaven-421330.pngbin0 -> 1269139 bytes
-rw-r--r--wallpapers/wallhaven-433992.pngbin0 -> 156313 bytes
-rw-r--r--wallpapers/wallhaven-43843.jpgbin0 -> 236168 bytes
-rw-r--r--wallpapers/wallhaven-440501.jpgbin0 -> 385347 bytes
-rw-r--r--wallpapers/wallhaven-441571.pngbin0 -> 862915 bytes
-rw-r--r--wallpapers/wallhaven-48652.jpgbin0 -> 281176 bytes
-rw-r--r--wallpapers/wallhaven-4914.jpgbin0 -> 501143 bytes
-rw-r--r--wallpapers/wallhaven-50898.pngbin0 -> 995667 bytes
-rw-r--r--wallpapers/wallhaven-5168.pngbin0 -> 999007 bytes
-rw-r--r--wallpapers/wallhaven-52603.jpgbin0 -> 274080 bytes
-rw-r--r--wallpapers/wallhaven-64346.pngbin0 -> 564844 bytes
-rw-r--r--wallpapers/wallhaven-66430.jpgbin0 -> 136013 bytes
-rw-r--r--wallpapers/wallhaven-75547.jpgbin0 -> 337713 bytes
-rw-r--r--wallpapers/wallhaven-80073.jpgbin0 -> 609620 bytes
-rw-r--r--wallpapers/wallhaven-89245.pngbin0 -> 1246918 bytes
-rw-r--r--wallpapers/wallhaven-89936.jpgbin0 -> 272081 bytes
-rw-r--r--wallpapers/wallpaper-1031754.pngbin0 -> 1180720 bytes
-rw-r--r--wallpapers/wallpaper-1092661.pngbin0 -> 2397868 bytes
-rw-r--r--wallpapers/wallpaper-1096348.pngbin0 -> 225870 bytes
-rw-r--r--wallpapers/wallpaper-1170647.jpgbin0 -> 622322 bytes
-rw-r--r--wallpapers/wallpaper-1233776.jpgbin0 -> 358750 bytes
-rw-r--r--wallpapers/wallpaper-1259135.jpgbin0 -> 674995 bytes
-rw-r--r--wallpapers/wallpaper-1335059.jpgbin0 -> 2880293 bytes
-rw-r--r--wallpapers/wallpaper-1571358.jpgbin0 -> 360366 bytes
-rw-r--r--wallpapers/wallpaper-1673697.jpgbin0 -> 201453 bytes
-rw-r--r--wallpapers/wallpaper-1727148.jpgbin0 -> 213475 bytes
-rw-r--r--wallpapers/wallpaper-1845598.jpgbin0 -> 161086 bytes
-rw-r--r--wallpapers/wallpaper-1856538.jpgbin0 -> 178072 bytes
-rw-r--r--wallpapers/wallpaper-2020049.pngbin0 -> 2471239 bytes
-rw-r--r--wallpapers/wallpaper-2098909.jpgbin0 -> 171454 bytes
-rw-r--r--wallpapers/wallpaper-2123373.jpgbin0 -> 225498 bytes
-rw-r--r--wallpapers/wallpaper-2292757.jpgbin0 -> 503954 bytes
-rw-r--r--wallpapers/wallpaper-2383182.jpgbin0 -> 511483 bytes
-rw-r--r--wallpapers/wallpaper-2404915.jpgbin0 -> 527110 bytes
-rw-r--r--wallpapers/wallpaper-2451854.jpgbin0 -> 395980 bytes
-rw-r--r--wallpapers/wallpaper-2462730.jpgbin0 -> 646210 bytes
-rw-r--r--wallpapers/wallpaper-2468040.jpgbin0 -> 934940 bytes
-rw-r--r--wallpapers/wallpaper-2469209.jpgbin0 -> 339766 bytes
-rw-r--r--wallpapers/wallpaper-2514662.jpgbin0 -> 258601 bytes
-rw-r--r--wallpapers/wallpaper-2547585.jpgbin0 -> 370271 bytes
-rw-r--r--wallpapers/wallpaper-2552963.jpgbin0 -> 236021 bytes
-rw-r--r--wallpapers/wallpaper-2571307.jpgbin0 -> 405125 bytes
-rw-r--r--wallpapers/wallpaper-2571513.jpgbin0 -> 383541 bytes
-rw-r--r--wallpapers/wallpaper-2576834.jpgbin0 -> 834402 bytes
-rw-r--r--wallpapers/wallpaper-2594238.pngbin0 -> 3347528 bytes
-rw-r--r--wallpapers/wallpaper-2626467.jpgbin0 -> 688880 bytes
-rw-r--r--wallpapers/wallpaper-2644066.jpgbin0 -> 201820 bytes
-rw-r--r--wallpapers/wallpaper-2761476.pngbin0 -> 4545873 bytes
-rw-r--r--wallpapers/wallpaper-2774743.pngbin0 -> 4008801 bytes
-rw-r--r--wallpapers/wallpaper-2794845.pngbin0 -> 966399 bytes
-rw-r--r--wallpapers/wallpaper-2795513.pngbin0 -> 4668728 bytes
-rw-r--r--wallpapers/wallpaper-2827849.jpgbin0 -> 87465 bytes
-rw-r--r--wallpapers/wallpaper-2831602.pngbin0 -> 530473 bytes
-rw-r--r--wallpapers/wallpaper-2845795.pngbin0 -> 6386632 bytes
-rw-r--r--wallpapers/wallpaper-2849326.jpgbin0 -> 260321 bytes
-rw-r--r--wallpapers/wallpaper-2905680.jpgbin0 -> 684639 bytes
-rw-r--r--wallpapers/wallpaper-2912392.pngbin0 -> 1768715 bytes
-rw-r--r--wallpapers/wallpaper-2917632.jpgbin0 -> 513767 bytes
-rw-r--r--wallpapers/wallpaper-2940335.jpgbin0 -> 218471 bytes
-rw-r--r--wallpapers/wallpaper-2940344.jpgbin0 -> 191877 bytes
-rw-r--r--wallpapers/wallpaper-2940924.jpgbin0 -> 37669 bytes
-rw-r--r--wallpapers/wallpaper-2986307.jpgbin0 -> 452794 bytes
-rw-r--r--wallpapers/wallpaper-2994852.jpgbin0 -> 224782 bytes
-rw-r--r--wallpapers/wallpaper-432387.jpgbin0 -> 255745 bytes
-rw-r--r--wallpapers/wallpaper-678322.jpgbin0 -> 39129 bytes
-rw-r--r--wallpapers/wallpaper-744402.jpgbin0 -> 260386 bytes
-rw-r--r--wallpapers/wallpaper-756794.jpgbin0 -> 410810 bytes
-rw-r--r--wallpapers/wallpaper-798984.jpgbin0 -> 324929 bytes
-rw-r--r--wallpapers/wallpaper-897227.jpgbin0 -> 115467 bytes
-rw-r--r--wallpapers/zapdos.jpgbin0 -> 258421 bytes
-rw-r--r--zsh/aliases38
-rw-r--r--zsh/custom/themes/mediocregopher.zsh-theme23
-rw-r--r--zsh/default.nix31
-rw-r--r--zsh/env18
-rw-r--r--zsh/zshrc18
213 files changed, 3379 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b2be92b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+result
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ffee234
--- /dev/null
+++ b/README.md
@@ -0,0 +1,103 @@
+# Mediocre Loadout
+
+This repo contains everything needed to build my loadout, which is everything
+which I tend to take from one linux machine to the next. This includes:
+
+* My development environment (neovim + plugins + a lot of customization)
+* My shell (zsh + plugins + a custom theme)
+* My window manager (awesome + plugins + a lot of customization)
+
+I'm calling the result the "Mediocre Loadout". It is designed to be completely
+agnostic to the system it is running on, and to make little to no mutations to
+that system.
+
+# Build/Installation/Usage options
+
+To build the Mediocre Loadout you must have a working
+[nix](https://nixos.org/manual/nix/stable/) installation, as well as an `x86_64`
+machine. That's it.
+
+There are multiple build/installation options:
+
+## nix Derivation
+
+To build the nix derivation of the loadout you can do:
+
+```
+nix-build -A loadout
+```
+
+This will place the result in the `result` symlink in the root directory.
+Components of the loadout can then be executed from the `bin` subdirectory,
+e.g.:
+
+```
+./result/bin/nvim
+```
+
+## nix Environment
+
+Alternatively, to install it to your nix profile do:
+
+```
+nix-env -i default.nix -A loadout
+```
+
+Assuming your nix environment is set up correctly, you should be able to execute
+components directly:
+
+```
+nvim
+```
+
+## AppImage
+
+An [AppImage](https://appimage.org/) binary can be built which can run any
+component of the loadout individually. This binary can be copied from one
+machine to the next without any of them requiring nix or any other dependencry
+to run it.
+
+To build the binary:
+
+```
+nix-build -A appimage
+```
+
+The resulting binary will be placed in the `result` symlink in the root
+directory.
+
+Specific components of the loadout can be run by passing an argument to the
+binary:
+
+```
+./Mediocre_Loadout-x86_64.AppImage nvim
+```
+
+# Available Components
+
+Components of the loadout can be run separate from the others, depending on what
+you're trying to do. The following components are available to be run:
+
+* `zsh` (`shell` in the AppImage): My terminal shell. There's some customization
+ to it but it should be pretty self-explanatory to "just use".
+
+* `nvim` (`editor` in the AppImage): My neovim development environment, plus all
+ plugins I use. I mostly work in golang, so it's most tuned for that, but it
+ does fine for general dev work. `Ctrl-N` will open NerdTree, `<backslash>tn`
+ will open a terminal tab, and `<backslash>th`/`<backslash>tl` can be used to
+ navigate tabs. There's a lot more customization that's been done, see the
+ `nvim/init.vim` file.
+
+* `alacritty` (`gui` in the AppImage, might be broken): Terminal which I use.
+ Yes, I always use a light-mode theme, because I work in well lit spaces
+ generally. There's not much else to this.
+
+* `awesome` (`wm` in the AppImage, almost definitely broken): My window manager.
+ There's so much customization I couldn't begin to start. `Meta+Enter` should
+ open a terminal, where `Meta` is probably the windows key on your keyboard.
+
+# Status
+
+This configuration is still fairly new, and so expect it to be fairly broken.
+I'll be updating it as I go though, so it should stabalize into something
+functional.
diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml
new file mode 100644
index 0000000..ad3f385
--- /dev/null
+++ b/alacritty/alacritty.yml
@@ -0,0 +1,861 @@
+# Configuration for Alacritty, the GPU enhanced terminal emulator.
+
+# Import additional configuration files
+#
+# Imports are loaded in order, skipping all missing files, with the importing
+# file being loaded last. If a field is already present in a previous import, it
+# will be replaced.
+#
+# All imports must either be absolute paths starting with `/`, or paths relative
+# to the user's home directory starting with `~/`.
+#import:
+# - /path/to/alacritty.yml
+
+# Any items in the `env` entry below will be added as
+# environment variables. Some entries may override variables
+# set by alacritty itself.
+env:
+ # TERM variable
+ #
+ # This value is used to set the `$TERM` environment variable for
+ # each instance of Alacritty. If it is not present, alacritty will
+ # check the local terminfo database and use `alacritty` if it is
+ # available, otherwise `xterm-256color` is used.
+ #TERM: alacritty
+
+#window:
+ # Window dimensions (changes require restart)
+ #
+ # Number of lines/columns (not pixels) in the terminal. The number of columns
+ # must be at least `2`, while using a value of `0` for columns and lines will
+ # fall back to the window manager's recommended size.
+ #dimensions:
+ # columns: 0
+ # lines: 0
+
+ # Window position (changes require restart)
+ #
+ # Specified in number of pixels.
+ # If the position is not set, the window manager will handle the placement.
+ #position:
+ # x: 0
+ # y: 0
+
+ # Window padding (changes require restart)
+ #
+ # Blank space added around the window in pixels. This padding is scaled
+ # by DPI and the specified value is always added at both opposing sides.
+ #padding:
+ # x: 0
+ # y: 0
+
+ # Spread additional padding evenly around the terminal content.
+ #dynamic_padding: false
+
+ # Window decorations
+ #
+ # Values for `decorations`:
+ # - full: Borders and title bar
+ # - none: Neither borders nor title bar
+ #
+ # Values for `decorations` (macOS only):
+ # - transparent: Title bar, transparent background and title bar buttons
+ # - buttonless: Title bar, transparent background and no title bar buttons
+ decorations: none
+
+ # Startup Mode (changes require restart)
+ #
+ # Values for `startup_mode`:
+ # - Windowed
+ # - Maximized
+ # - Fullscreen
+ #
+ # Values for `startup_mode` (macOS only):
+ # - SimpleFullscreen
+ #startup_mode: Windowed
+
+ # Window title
+ #title: Alacritty
+
+ # Allow terminal applications to change Alacritty's window title.
+ #dynamic_title: true
+
+ # Window class (Linux/BSD only):
+ #class:
+ # Application instance name
+ #instance: Alacritty
+ # General application class
+ #general: Alacritty
+
+ # GTK theme variant (Linux/BSD only)
+ #
+ # Override the variant of the GTK theme. Commonly supported values are `dark`
+ # and `light`. Set this to `None` to use the default theme variant.
+ #gtk_theme_variant: None
+
+#scrolling:
+ # Maximum number of lines in the scrollback buffer.
+ # Specifying '0' will disable scrolling.
+ #history: 10000
+
+ # Scrolling distance multiplier.
+ #multiplier: 3
+
+## Font configuration
+#font:
+# size: 7
+
+ #
+ #TODO I'd like to restore this font configuration, but I can't cause nix
+ #doesn't play nicely with fontconfig
+font:
+ # Normal (roman) font face
+ normal:
+ # Font family
+ #
+ # Default:
+ # - (macOS) Menlo
+ # - (Linux/BSD) monospace
+ # - (Windows) Consolas
+ family: Source Code Pro
+
+ # The `style` can be specified to pick a specific face.
+ style: Regular
+
+ # Bold font face
+ bold:
+ # Font family
+ #
+ # If the bold family is not specified, it will fall back to the
+ # value specified for the normal font.
+ family: Source Code Pro
+
+ # The `style` can be specified to pick a specific face.
+ style: Bold
+
+ # Italic font face
+ italic:
+ # Font family
+ #
+ # If the italic family is not specified, it will fall back to the
+ # value specified for the normal font.
+ family: Source Code Pro
+
+ # The `style` can be specified to pick a specific face.
+ style: Italic
+
+ # Bold italic font face
+ bold_italic:
+ # Font family
+ #
+ # If the bold italic family is not specified, it will fall back to the
+ # value specified for the normal font.
+ family: Source Code Pro
+
+ # The `style` can be specified to pick a specific face.
+ style: Bold Italic
+
+ # Point size
+ size: 6.3
+
+ # Offset is the extra space around each character. `offset.y` can be thought
+ # of as modifying the line spacing, and `offset.x` as modifying the letter
+ # spacing.
+ #offset:
+ # x: 0
+ # y: 0
+
+ # Glyph offset determines the locations of the glyphs within their cells with
+ # the default being at the bottom. Increasing `x` moves the glyph to the
+ # right, increasing `y` moves the glyph upward.
+ #glyph_offset:
+ # x: 0
+ # y: 0
+
+ # Thin stroke font rendering (macOS only)
+ #
+ # Thin strokes are suitable for retina displays, but for non-retina screens
+ # it is recommended to set `use_thin_strokes` to `false`.
+ #use_thin_strokes: true
+
+# If `true`, bold text is drawn using the bright color variants.
+#draw_bold_text_with_bright_colors: false
+
+# Base16 PaperColor Light 256 - alacritty color config
+# Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme)
+colors:
+ # Default colors
+ primary:
+ background: '0xeeeeee'
+ foreground: '0x444444'
+
+ # Colors the cursor will use if `custom_cursor_colors` is true
+ cursor:
+ text: '0xeeeeee'
+ cursor: '0x444444'
+
+ # Normal colors
+ normal:
+ black: '0xeeeeee'
+ red: '0xbcbcbc'
+ green: '0x8700af'
+ yellow: '0xd70087'
+ blue: '0xd75f00'
+ magenta: '0x005faf'
+ cyan: '0xd75f00'
+ white: '0x444444'
+
+ # Bright colors
+ bright:
+ black: '0x5f8700'
+ red: '0xbcbcbc'
+ green: '0x8700af'
+ yellow: '0xd70087'
+ blue: '0xd75f00'
+ magenta: '0x005faf'
+ cyan: '0xd75f00'
+ white: '0x878787'
+
+ indexed_colors:
+ - { index: 16, color: '0xd70000' }
+ - { index: 17, color: '0x005f87' }
+ - { index: 18, color: '0xaf0000' }
+ - { index: 19, color: '0x008700' }
+ - { index: 20, color: '0x0087af' }
+ - { index: 21, color: '0x005f87' }
+
+# Colors (Tomorrow Night)
+#colors:
+ # Default colors
+ #primary:
+ # background: '#1d1f21'
+ # foreground: '#c5c8c6'
+
+ # Bright and dim foreground colors
+ #
+ # The dimmed foreground color is calculated automatically if it is not
+ # present. If the bright foreground color is not set, or
+ # `draw_bold_text_with_bright_colors` is `false`, the normal foreground
+ # color will be used.
+ #dim_foreground: '#828482'
+ #bright_foreground: '#eaeaea'
+
+ # Cursor colors
+ #
+ # Colors which should be used to draw the terminal cursor.
+ #
+ # Allowed values are CellForeground and CellBackground, which reference the
+ # affected cell, or hexadecimal colors like #ff00ff.
+ #cursor:
+ # text: CellBackground
+ # cursor: CellForeground
+
+ # Vi mode cursor colors
+ #
+ # Colors for the cursor when the vi mode is active.
+ #
+ # Allowed values are CellForeground and CellBackground, which reference the
+ # affected cell, or hexadecimal colors like #ff00ff.
+ #vi_mode_cursor:
+ # text: CellBackground
+ # cursor: CellForeground
+
+ # Search colors
+ #
+ # Colors used for the search bar and match highlighting.
+ #search:
+ # Allowed values are CellForeground and CellBackground, which reference the
+ # affected cell, or hexadecimal colors like #ff00ff.
+ #matches:
+ # foreground: '#000000'
+ # background: '#ffffff'
+ #focused_match:
+ # foreground: CellBackground
+ # background: CellForeground
+
+ #bar:
+ # background: '#c5c8c6'
+ # foreground: '#1d1f21'
+
+ # Line indicator
+ #
+ # Color used for the indicator displaying the position in history during
+ # search and vi mode.
+ #
+ # By default, these will use the opposing primary color.
+ #line_indicator:
+ # foreground: None
+ # background: None
+
+ # Selection colors
+ #
+ # Colors which should be used to draw the selection area.
+ #
+ # Allowed values are CellForeground and CellBackground, which reference the
+ # affected cell, or hexadecimal colors like #ff00ff.
+ #selection:
+ # text: CellBackground
+ # background: CellForeground
+
+ # Normal colors
+ #normal:
+ # black: '#1d1f21'
+ # red: '#cc6666'
+ # green: '#b5bd68'
+ # yellow: '#f0c674'
+ # blue: '#81a2be'
+ # magenta: '#b294bb'
+ # cyan: '#8abeb7'
+ # white: '#c5c8c6'
+
+ # Bright colors
+ #bright:
+ # black: '#666666'
+ # red: '#d54e53'
+ # green: '#b9ca4a'
+ # yellow: '#e7c547'
+ # blue: '#7aa6da'
+ # magenta: '#c397d8'
+ # cyan: '#70c0b1'
+ # white: '#eaeaea'
+
+ # Dim colors
+ #
+ # If the dim colors are not set, they will be calculated automatically based
+ # on the `normal` colors.
+ #dim:
+ # black: '#131415'
+ # red: '#864343'
+ # green: '#777c44'
+ # yellow: '#9e824c'
+ # blue: '#556a7d'
+ # magenta: '#75617b'
+ # cyan: '#5b7d78'
+ # white: '#828482'
+
+ # Indexed Colors
+ #
+ # The indexed colors include all colors from 16 to 256.
+ # When these are not set, they're filled with sensible defaults.
+ #
+ # Example:
+ # `- { index: 16, color: '#ff00ff' }`
+ #
+ #indexed_colors: []
+
+# Bell
+#
+# The bell is rung every time the BEL control character is received.
+#bell:
+ # Visual Bell Animation
+ #
+ # Animation effect for flashing the screen when the visual bell is rung.
+ #
+ # Values for `animation`:
+ # - Ease
+ # - EaseOut
+ # - EaseOutSine
+ # - EaseOutQuad
+ # - EaseOutCubic
+ # - EaseOutQuart
+ # - EaseOutQuint
+ # - EaseOutExpo
+ # - EaseOutCirc
+ # - Linear
+ #animation: EaseOutExpo
+
+ # Duration of the visual bell flash in milliseconds. A `duration` of `0` will
+ # disable the visual bell animation.
+ #duration: 0
+
+ # Visual bell animation color.
+ #color: '#ffffff'
+
+ # Bell Command
+ #
+ # This program is executed whenever the bell is rung.
+ #
+ # When set to `command: None`, no command will be executed.
+ #
+ # Example:
+ # command:
+ # program: notify-send
+ # args: ["Hello, World!"]
+ #
+ #command: None
+
+# Background opacity
+#
+# Window opacity as a floating point number from `0.0` to `1.0`.
+# The value `0.0` is completely transparent and `1.0` is opaque.
+#background_opacity: 1.0
+
+#selection:
+ # This string contains all characters that are used as separators for
+ # "semantic words" in Alacritty.
+ #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
+
+ # When set to `true`, selected text will be copied to the primary clipboard.
+ #save_to_clipboard: false
+
+#cursor:
+ # Cursor style
+ #style:
+ # Cursor shape
+ #
+ # Values for `shape`:
+ # - ▇ Block
+ # - _ Underline
+ # - | Beam
+ #shape: Block
+
+ # Cursor blinking state
+ #
+ # Values for `blinking`:
+ # - Never: Prevent the cursor from ever blinking
+ # - Off: Disable blinking by default
+ # - On: Enable blinking by default
+ # - Always: Force the cursor to always blink
+ #blinking: Off
+
+ # Vi mode cursor style
+ #
+ # If the vi mode cursor style is `None` or not specified, it will fall back to
+ # the style of the active value of the normal cursor.
+ #
+ # See `cursor.style` for available options.
+ #vi_mode_style: None
+
+ # Cursor blinking interval in milliseconds.
+ #blink_interval: 750
+
+ # If this is `true`, the cursor will be rendered as a hollow box when the
+ # window is not focused.
+ #unfocused_hollow: true
+
+ # Thickness of the cursor relative to the cell width as floating point number
+ # from `0.0` to `1.0`.
+ #thickness: 0.15
+
+# Live config reload (changes require restart)
+#live_config_reload: true
+
+# Shell
+#
+# You can set `shell.program` to the path of your favorite shell, e.g.
+# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
+# shell.
+#
+# Default:
+# - (macOS) /bin/bash --login
+# - (Linux/BSD) user login shell
+# - (Windows) powershell
+#shell:
+# program: /bin/bash
+# args:
+# - --login
+
+# Startup directory
+#
+# Directory the shell is started in. If this is unset, or `None`, the working
+# directory of the parent process will be used.
+#working_directory: None
+
+# Send ESC (\x1b) before characters when alt is pressed.
+#alt_send_esc: true
+
+#mouse:
+ # Click settings
+ #
+ # The `double_click` and `triple_click` settings control the time
+ # alacritty should wait for accepting multiple clicks as one double
+ # or triple click.
+ #double_click: { threshold: 300 }
+ #triple_click: { threshold: 300 }
+
+ # If this is `true`, the cursor is temporarily hidden when typing.
+ #hide_when_typing: false
+
+ #url:
+ # URL launcher
+ #
+ # This program is executed when clicking on a text which is recognized as a
+ # URL. The URL is always added to the command as the last parameter.
+ #
+ # When set to `launcher: None`, URL launching will be disabled completely.
+ #
+ # Default:
+ # - (macOS) open
+ # - (Linux/BSD) xdg-open
+ # - (Windows) explorer
+ #launcher:
+ # program: xdg-open
+ # args: []
+
+ # URL modifiers
+ #
+ # These are the modifiers that need to be held down for opening URLs when
+ # clicking on them. The available modifiers are documented in the key
+ # binding section.
+ #modifiers: None
+
+# Mouse bindings
+#
+# Mouse bindings are specified as a list of objects, much like the key
+# bindings further below.
+#
+# To trigger mouse bindings when an application running within Alacritty
+# captures the mouse, the `Shift` modifier is automatically added as a
+# requirement.
+#
+# Each mouse binding will specify a:
+#
+# - `mouse`:
+#
+# - Middle
+# - Left
+# - Right
+# - Numeric identifier such as `5`
+#
+# - `action` (see key bindings)
+#
+# And optionally:
+#
+# - `mods` (see key bindings)
+#mouse_bindings:
+# - { mouse: Middle, action: PasteSelection }
+
+# Key bindings
+#
+# Key bindings are specified as a list of objects. For example, this is the
+# default paste binding:
+#
+# `- { key: V, mods: Control|Shift, action: Paste }`
+#
+# Each key binding will specify a:
+#
+# - `key`: Identifier of the key pressed
+#
+# - A-Z
+# - F1-F24
+# - Key0-Key9
+#
+# A full list with available key codes can be found here:
+# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
+#
+# Instead of using the name of the keys, the `key` field also supports using
+# the scancode of the desired key. Scancodes have to be specified as a
+# decimal number. This command will allow you to display the hex scancodes
+# for certain keys:
+#
+# `showkey --scancodes`.
+#
+# Then exactly one of:
+#
+# - `chars`: Send a byte sequence to the running application
+#
+# The `chars` field writes the specified string to the terminal. This makes
+# it possible to pass escape sequences. To find escape codes for bindings
+# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
+# of tmux. Note that applications use terminfo to map escape sequences back
+# to keys. It is therefore required to update the terminfo when changing an
+# escape sequence.
+#
+# - `action`: Execute a predefined action
+#
+# - ToggleViMode
+# - SearchForward
+# Start searching toward the right of the search origin.
+# - SearchBackward
+# Start searching toward the left of the search origin.
+# - Copy
+# - Paste
+# - IncreaseFontSize
+# - DecreaseFontSize
+# - ResetFontSize
+# - ScrollPageUp
+# - ScrollPageDown
+# - ScrollHalfPageUp
+# - ScrollHalfPageDown
+# - ScrollLineUp
+# - ScrollLineDown
+# - ScrollToTop
+# - ScrollToBottom
+# - ClearHistory
+# Remove the terminal's scrollback history.
+# - Hide
+# Hide the Alacritty window.
+# - Minimize
+# Minimize the Alacritty window.
+# - Quit
+# Quit Alacritty.
+# - ToggleFullscreen
+# - SpawnNewInstance
+# Spawn a new instance of Alacritty.
+# - ClearLogNotice
+# Clear Alacritty's UI warning and error notice.
+# - ClearSelection
+# Remove the active selection.
+# - ReceiveChar
+# - None
+#
+# - Vi mode exclusive actions:
+#
+# - Open
+# Open URLs at the cursor location with the launcher configured in
+# `url.launcher`.
+# - ToggleNormalSelection
+# - ToggleLineSelection
+# - ToggleBlockSelection
+# - ToggleSemanticSelection
+# Toggle semantic selection based on `selection.semantic_escape_chars`.
+#
+# - Vi mode exclusive cursor motion actions:
+#
+# - Up
+# One line up.
+# - Down
+# One line down.
+# - Left
+# One character left.
+# - Right
+# One character right.
+# - First
+# First column, or beginning of the line when already at the first column.
+# - Last
+# Last column, or beginning of the line when already at the last column.
+# - FirstOccupied
+# First non-empty cell in this terminal row, or first non-empty cell of
+# the line when already at the first cell of the row.
+# - High
+# Top of the screen.
+# - Middle
+# Center of the screen.
+# - Low
+# Bottom of the screen.
+# - SemanticLeft
+# Start of the previous semantically separated word.
+# - SemanticRight
+# Start of the next semantically separated word.
+# - SemanticLeftEnd
+# End of the previous semantically separated word.
+# - SemanticRightEnd
+# End of the next semantically separated word.
+# - WordLeft
+# Start of the previous whitespace separated word.
+# - WordRight
+# Start of the next whitespace separated word.
+# - WordLeftEnd
+# End of the previous whitespace separated word.
+# - WordRightEnd
+# End of the next whitespace separated word.
+# - Bracket
+# Character matching the bracket at the cursor's location.
+# - SearchNext
+# Beginning of the next match.
+# - SearchPrevious
+# Beginning of the previous match.
+# - SearchStart
+# Start of the match to the left of the vi mode cursor.
+# - SearchEnd
+# End of the match to the right of the vi mode cursor.
+#
+# - Search mode exclusive actions:
+# - SearchFocusNext
+# Move the focus to the next search match.
+# - SearchFocusPrevious
+# Move the focus to the previous search match.
+# - SearchConfirm
+# - SearchCancel
+# - SearchClear
+# Reset the search regex.
+# - SearchDeleteWord
+# Delete the last word in the search regex.
+# - SearchHistoryPrevious
+# Go to the previous regex in the search history.
+# - SearchHistoryNext
+# Go to the next regex in the search history.
+#
+# - macOS exclusive actions:
+# - ToggleSimpleFullscreen
+# Enter fullscreen without occupying another space.
+#
+# - Linux/BSD exclusive actions:
+#
+# - CopySelection
+# Copy from the selection buffer.
+# - PasteSelection
+# Paste from the selection buffer.
+#
+# - `command`: Fork and execute a specified command plus arguments
+#
+# The `command` field must be a map containing a `program` string and an
+# `args` array of command line parameter strings. For example:
+# `{ program: "alacritty", args: ["-e", "vttest"] }`
+#
+# And optionally:
+#
+# - `mods`: Key modifiers to filter binding actions
+#
+# - Command
+# - Control
+# - Option
+# - Super
+# - Shift
+# - Alt
+#
+# Multiple `mods` can be combined using `|` like this:
+# `mods: Control|Shift`.
+# Whitespace and capitalization are relevant and must match the example.
+#
+# - `mode`: Indicate a binding for only specific terminal reported modes
+#
+# This is mainly used to send applications the correct escape sequences
+# when in different modes.
+#
+# - AppCursor
+# - AppKeypad
+# - Search
+# - Alt
+# - Vi
+#
+# A `~` operator can be used before a mode to apply the binding whenever
+# the mode is *not* active, e.g. `~Alt`.
+#
+# Bindings are always filled by default, but will be replaced when a new
+# binding with the same triggers is defined. To unset a default binding, it can
+# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
+# a no-op if you do not wish to receive input characters for that binding.
+#
+# If the same trigger is assigned to multiple actions, all of them are executed
+# in the order they were defined in.
+#key_bindings:
+ #- { key: Paste, action: Paste }
+ #- { key: Copy, action: Copy }
+ #- { key: L, mods: Control, action: ClearLogNotice }
+ #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
+ #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, }
+ #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
+ #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, }
+ #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
+
+ # Vi Mode
+ #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
+ #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
+ #- { key: Escape, mode: Vi|~Search, action: ClearSelection }
+ #- { key: I, mode: Vi|~Search, action: ScrollToBottom }
+ #- { key: I, mode: Vi|~Search, action: ToggleViMode }
+ #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
+ #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
+ #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
+ #- { key: G, mode: Vi|~Search, action: ScrollToTop }
+ #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
+ #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
+ #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
+ #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
+ #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
+ #- { key: Y, mode: Vi|~Search, action: Copy }
+ #- { key: Y, mode: Vi|~Search, action: ClearSelection }
+ #- { key: Copy, mode: Vi|~Search, action: ClearSelection }
+ #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
+ #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
+ #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
+ #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
+ #- { key: Return, mode: Vi|~Search, action: Open }
+ #- { key: K, mode: Vi|~Search, action: Up }
+ #- { key: J, mode: Vi|~Search, action: Down }
+ #- { key: H, mode: Vi|~Search, action: Left }
+ #- { key: L, mode: Vi|~Search, action: Right }
+ #- { key: Up, mode: Vi|~Search, action: Up }
+ #- { key: Down, mode: Vi|~Search, action: Down }
+ #- { key: Left, mode: Vi|~Search, action: Left }
+ #- { key: Right, mode: Vi|~Search, action: Right }
+ #- { key: Key0, mode: Vi|~Search, action: First }
+ #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
+ #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
+ #- { key: H, mods: Shift, mode: Vi|~Search, action: High }
+ #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
+ #- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
+ #- { key: B, mode: Vi|~Search, action: SemanticLeft }
+ #- { key: W, mode: Vi|~Search, action: SemanticRight }
+ #- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
+ #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
+ #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
+ #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
+ #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
+ #- { key: Slash, mode: Vi|~Search, action: SearchForward }
+ #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
+ #- { key: N, mode: Vi|~Search, action: SearchNext }
+ #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
+
+ # Search Mode
+ #- { key: Return, mode: Search|Vi, action: SearchConfirm }
+ #- { key: Escape, mode: Search, action: SearchCancel }
+ #- { key: C, mods: Control, mode: Search, action: SearchCancel }
+ #- { key: U, mods: Control, mode: Search, action: SearchClear }
+ #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
+ #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
+ #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
+ #- { key: Up, mode: Search, action: SearchHistoryPrevious }
+ #- { key: Down, mode: Search, action: SearchHistoryNext }
+ #- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
+ #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
+
+ # (Windows, Linux, and BSD only)
+ #- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
+ #- { key: C, mods: Control|Shift, action: Copy }
+ #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
+ #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
+ #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
+ #- { key: Insert, mods: Shift, action: PasteSelection }
+ #- { key: Key0, mods: Control, action: ResetFontSize }
+ #- { key: Equals, mods: Control, action: IncreaseFontSize }
+ #- { key: Plus, mods: Control, action: IncreaseFontSize }
+ #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
+ #- { key: Minus, mods: Control, action: DecreaseFontSize }
+ #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
+
+ # (Windows only)
+ #- { key: Return, mods: Alt, action: ToggleFullscreen }
+
+ # (macOS only)
+ #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
+ #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
+ #- { key: Key0, mods: Command, action: ResetFontSize }
+ #- { key: Equals, mods: Command, action: IncreaseFontSize }
+ #- { key: Plus, mods: Command, action: IncreaseFontSize }
+ #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
+ #- { key: Minus, mods: Command, action: DecreaseFontSize }
+ #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
+ #- { key: V, mods: Command, action: Paste }
+ #- { key: C, mods: Command, action: Copy }
+ #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
+ #- { key: H, mods: Command, action: Hide }
+ #- { key: M, mods: Command, action: Minimize }
+ #- { key: Q, mods: Command, action: Quit }
+ #- { key: W, mods: Command, action: Quit }
+ #- { key: N, mods: Command, action: SpawnNewInstance }
+ #- { key: F, mods: Command|Control, action: ToggleFullscreen }
+ #- { key: F, mods: Command, mode: ~Search, action: SearchForward }
+ #- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
+
+#debug:
+ # Display the time it takes to redraw each frame.
+ #render_timer: false
+
+ # Keep the log file after quitting Alacritty.
+ #persistent_logging: false
+
+ # Log level
+ #
+ # Values for `log_level`:
+ # - Off
+ # - Error
+ # - Warn
+ # - Info
+ # - Debug
+ # - Trace
+ #log_level: Warn
+
+ # Print all received window events.
+ #print_events: false
diff --git a/alacritty/default.nix b/alacritty/default.nix
new file mode 100644
index 0000000..c5681b0
--- /dev/null
+++ b/alacritty/default.nix
@@ -0,0 +1,35 @@
+{
+
+ pkgs ? (import ../pkgs.nix) {},
+ zsh ? pkgs.zsh,
+
+}: rec {
+
+ # TODO figure out a way to provide my font to alacritty at runtime. fontconfig
+ # is a hot mess...
+ #
+ #dataDir = pkgs.stdenv.mkDerivation {
+ # name = "alacritty-dataDir";
+ # src = ./fonts;
+ # buildInputs = [ pkgs.fontconfig ];
+ # builder = builtins.toFile "builder.sh" ''
+ # source $stdenv/setup
+ # mkdir "$out"
+ # cp -r "$src" "$out"/fonts
+ # chmod -R +w "$out"
+
+ # env
+
+ # export FONTCONFIG_FILE="$out"/fontconfig
+ # fc-cache --verbose "$out"/fonts
+
+ # '';
+ #};
+
+ alacritty = pkgs.writeScriptBin "alacritty" ''
+ #!${pkgs.bash}/bin/bash
+ exec ${pkgs.nixgl}/bin/nixGLIntel ${pkgs.alacritty}/bin/alacritty \
+ --config-file ${./alacritty.yml} \
+ -e "${zsh}/bin/zsh"
+ '';
+}
diff --git a/alacritty/fonts/SourceCodePro-Black.ttf b/alacritty/fonts/SourceCodePro-Black.ttf
new file mode 100644
index 0000000..ea73e60
--- /dev/null
+++ b/alacritty/fonts/SourceCodePro-Black.ttf
Binary files differ
diff --git a/alacritty/fonts/SourceCodePro-Bold.ttf b/alacritty/fonts/SourceCodePro-Bold.ttf
new file mode 100644
index 0000000..a56f1fa
--- /dev/null
+++ b/alacritty/fonts/SourceCodePro-Bold.ttf
Binary files differ
diff --git a/alacritty/fonts/SourceCodePro-ExtraLight.ttf b/alacritty/fonts/SourceCodePro-ExtraLight.ttf
new file mode 100644
index 0000000..f409b71
--- /dev/null
+++ b/alacritty/fonts/SourceCodePro-ExtraLight.ttf
Binary files differ
diff --git a/alacritty/fonts/SourceCodePro-Light.ttf b/alacritty/fonts/SourceCodePro-Light.ttf
new file mode 100644
index 0000000..51eb963
--- /dev/null
+++ b/alacritty/fonts/SourceCodePro-Light.ttf
Binary files differ
diff --git a/alacritty/fonts/SourceCodePro-Medium.ttf b/alacritty/fonts/SourceCodePro-Medium.ttf
new file mode 100644
index 0000000..1ee45eb
--- /dev/null
+++ b/alacritty/fonts/SourceCodePro-Medium.ttf
Binary files differ
diff --git a/alacritty/fonts/SourceCodePro-Regular.ttf b/alacritty/fonts/SourceCodePro-Regular.ttf
new file mode 100644
index 0000000..b2cff92
--- /dev/null
+++ b/alacritty/fonts/SourceCodePro-Regular.ttf
Binary files differ
diff --git a/alacritty/fonts/SourceCodePro-Semibold.ttf b/alacritty/fonts/SourceCodePro-Semibold.ttf
new file mode 100644
index 0000000..b425f9c
--- /dev/null
+++ b/alacritty/fonts/SourceCodePro-Semibold.ttf
Binary files differ
diff --git a/appimage.nix b/appimage.nix
new file mode 100644
index 0000000..04778e5
--- /dev/null
+++ b/appimage.nix
@@ -0,0 +1,17 @@
+{
+
+ pkgsSrc ? ./pkgs.nix,
+
+}: let
+
+ nixBundle = builtins.fetchGit {
+ url = "https://github.com/matthewbauer/nix-bundle.git";
+ rev = "223f4ffc4179aa318c34dc873a08cb00090db829";
+ };
+
+ appimageTop = (import "${nixBundle}/appimage-top.nix") {
+ nixpkgs' = pkgsSrc;
+ };
+
+in { name, target }:
+ appimageTop.appimage (appimageTop.appdir { inherit name target; })
diff --git a/awesome/awesome.desktop b/awesome/awesome.desktop
new file mode 100644
index 0000000..1945e7a
--- /dev/null
+++ b/awesome/awesome.desktop
@@ -0,0 +1,9 @@
+# For use in ubuntu, just copy into /usr/share/xsessions
+
+[Desktop Entry]
+Name=awesome
+Comment=Highly configurable framework window manager
+Exec=/home/mediocregopher/.nix-profile/bin/awesome
+Type=Application
+Icon=/usr/share/pixmaps/awesome.xpm
+Keywords=Window manager
diff --git a/awesome/bat.lua b/awesome/bat.lua
new file mode 100644
index 0000000..a5348d6
--- /dev/null
+++ b/awesome/bat.lua
@@ -0,0 +1,43 @@
+local io = io
+local math = math
+local tonumber = tonumber
+local string = string
+local naughty = require("naughty")
+
+function batteryInfo()
+ for i=0,1 do
+ local dir = "/sys/class/power_supply/BAT" .. tostring(i) .. "/"
+ local f_status = io.popen("cat " .. dir .. "status 2>/dev/null")
+ local c_status = f_status:read()
+ f_status:close()
+
+ if c_status and c_status ~= "" then
+ local prefix = "energy"
+ local f_now = io.popen("cat " .. dir .. prefix .. "_now 2>/dev/null")
+ local c_now_str = f_now:read()
+ f_now:close()
+
+ if not c_now_str or c_now_str == "" then
+ prefix = "charge"
+ local f_now = io.popen("cat " .. dir .. prefix .. "_now")
+ c_now_str = f_now:read()
+ f_now:close()
+ end
+
+ local f_full = io.popen("cat " .. dir .. prefix .. "_full")
+ local c_full_str = f_full:read()
+ f_full:close()
+
+ local c_now = tonumber(c_now_str)
+ local c_full = tonumber(c_full_str)
+
+ local charging = (c_status == "Charging" or c_status == "Full")
+
+ if c_now ~= nil and c_full ~= nil then
+ local percent = math.floor((c_now/c_full) * 100)
+ return percent, charging
+ end
+ end
+ end
+ return nil, charging
+end
diff --git a/awesome/bin/cricket b/awesome/bin/cricket
new file mode 100755
index 0000000..b8d5699
--- /dev/null
+++ b/awesome/bin/cricket
Binary files differ
diff --git a/awesome/bin/imgavg b/awesome/bin/imgavg
new file mode 100755
index 0000000..f839d31
--- /dev/null
+++ b/awesome/bin/imgavg
Binary files differ
diff --git a/awesome/bin/random_i3lock.sh b/awesome/bin/random_i3lock.sh
new file mode 100755
index 0000000..e5f4e16
--- /dev/null
+++ b/awesome/bin/random_i3lock.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+R=`find "$1" | grep -P 'png$' | sort -R | head -n1`
+exec i3lock -i $R -t
diff --git a/awesome/bin/scrot-gobin.sh b/awesome/bin/scrot-gobin.sh
new file mode 100755
index 0000000..33bfc9f
--- /dev/null
+++ b/awesome/bin/scrot-gobin.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+scrot -o -s "/tmp/shot.png"
+eog /tmp/shot.png
diff --git a/awesome/bin/sysstats.sh b/awesome/bin/sysstats.sh
new file mode 100755
index 0000000..f42588e
--- /dev/null
+++ b/awesome/bin/sysstats.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+cd $(dirname "$0")
+
+sep=" | "
+
+out=$(/home/mediocregopher/.config/awesome/bin/cricket \
+ --limit 1 \
+ --ping-hosts 8.8.8.8 \
+ --net-interval "" \
+ --disk-interval "" \
+ --disk-io-interval "")
+
+function outNum {
+ echo "$out" | grep "$1" | grep -oP "$2=\"[0-9]+\"" | grep -oP '[0-9]+'
+}
+
+echo -n "ping:$(outNum "ping result" "tookMSAvg")ms"
+
+echo -n "$sep"
+
+memBarSize=10
+memPer=$(outNum "mem stats" "memUsedPer")
+memUsed=$(expr $memPer / $memBarSize)
+memUnused=$(expr $memBarSize - $memUsed)
+echo -n "mem:"
+for i in $(seq $memUsed); do echo -n "█"; done
+for i in $(seq $memUnused); do echo -n "░"; done
+for i in $(seq $(expr $memBarSize - $memUsed - $memUnused)); do echo -n "░"; done
+
+echo -n "$sep"
+
+cpuBarSize=20
+cpuIdle=$(outNum "cpu stats" "cpuIdle")
+cpuSys=$(outNum "cpu stats" "cpuSystem")
+cpuUser=$(outNum "cpu stats" "cpuUser")
+cpuTot=$(expr $cpuIdle + $cpuSys + $cpuUser)
+function cpuL {
+ python -c "print(int($1 / $cpuTot * $cpuBarSize))"
+}
+cpuLIdle=$(cpuL $cpuIdle)
+cpuLSys=$(cpuL $cpuSys)
+cpuLUser=$(cpuL $cpuUser)
+echo -n "cpu:"
+for i in $(seq $cpuLUser); do echo -n "█"; done
+for i in $(seq $cpuLSys); do echo -n "▓"; done
+for i in $(seq $cpuLIdle); do echo -n "░"; done
+for i in $(seq $(expr $cpuBarSize - $cpuLIdle - $cpuLSys - $cpuLUser)); do echo -n "░"; done
+
+echo ""
diff --git a/awesome/default.nix b/awesome/default.nix
new file mode 100644
index 0000000..8b52d9c
--- /dev/null
+++ b/awesome/default.nix
@@ -0,0 +1,26 @@
+{
+
+ pkgs ? (import ../pkgs.nix) {},
+
+}: rec {
+
+ cfg = ./.;
+ wp = ../wallpapers;
+
+ dirsLua = pkgs.writeTextDir "dirs.lua" ''
+ home_dir = os.getenv("HOME").."/"
+ conf_dir = "${cfg}/"
+ wp_dir = "${wp}/"
+ '';
+
+ awesome = pkgs.writeScriptBin "awesome" ''
+ #!${pkgs.bash}/bin/bash
+ echo "[$(date)] New awesome session starting" > ~/.awesome.log
+ exec ${pkgs.awesome}/bin/awesome \
+ -c ${cfg}/rc.lua \
+ --search ${dirsLua} \
+ --search ${cfg} \
+ 2>&1 2>>~/.awesome.log
+ '';
+
+}
diff --git a/awesome/helper.png b/awesome/helper.png
new file mode 100644
index 0000000..4b43bf7
--- /dev/null
+++ b/awesome/helper.png
Binary files differ
diff --git a/awesome/mediocregopher-sysstats.service b/awesome/mediocregopher-sysstats.service
new file mode 100644
index 0000000..bac39ba
--- /dev/null
+++ b/awesome/mediocregopher-sysstats.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=mediocregopher's sysstats
+Requires=network.target
+After=network.target
+
+[Service]
+Restart=always
+RestartSec=1s
+User=mediocregopher
+ExecStart=/bin/bash -c 'while [ 1 ]; do out=$(~/.config/awesome/bin/sysstats.sh); echo "$out" > /tmp/sysstats; sleep 1; done'
+
+[Install]
+WantedBy=multi-user.target
diff --git a/awesome/pulseaudio.lua b/awesome/pulseaudio.lua
new file mode 100644
index 0000000..765fd12
--- /dev/null
+++ b/awesome/pulseaudio.lua
@@ -0,0 +1,40 @@
+local io = io
+local math = math
+local tonumber = tonumber
+local tostring = tostring
+local string = string
+local naughty = require("naughty")
+
+function volumeInfo()
+ volmin = 0
+ volmax = 65536
+ local f = io.popen("pacmd dump |grep set-sink-volume|grep analog-stereo")
+ local g = io.popen("pacmd dump |grep set-sink-mute|grep analog-stereo")
+ local v = f:read()
+ local mute = g:read()
+ if mute ~= nil and string.find(mute, "no") then
+ volume = math.floor(tonumber(string.sub(v, string.find(v, 'x')-1)) * 100 / volmax)
+ else
+ volume = "off"
+ end
+ f:close()
+ g:close()
+ return "vol:"..volume.." "
+end
+
+function muteAll()
+ local outh = io.popen("pactl list short sources | awk '{print $1}'")
+ while true do
+ local i = outh:read()
+ if i == nil then break end
+ io.popen("pactl set-source-mute " .. i .. " 1"):close()
+ end
+ outh:close()
+end
+
+function unmuted()
+ local outh = io.popen("pactl list sources | grep 'Mute: no'")
+ local any = outh:read()
+ outh:close()
+ return any ~= nil
+end
diff --git a/awesome/rc.lua b/awesome/rc.lua
new file mode 100644
index 0000000..5ec053e
--- /dev/null
+++ b/awesome/rc.lua
@@ -0,0 +1,544 @@
+-- Standard awesome library
+local gears = require("gears")
+local awful = require("awful")
+awful.rules = require("awful.rules")
+require("awful.autofocus")
+-- Widget and layout library
+local wibox = require("wibox")
+-- Notification library
+local naughty = require("naughty")
+local menubar = require("menubar")
+
+local function debug(msg)
+ if not msg then msg = "" end
+ naughty.notify({ text = "debug: " .. msg })
+end
+
+local function info(msg)
+ naughty.notify({ text = msg })
+end
+
+require("dirs")
+require("bat")
+require("pulseaudio")
+muteAll() -- pre-emptively mute all mics, just in-case
+
+-- for sanity
+local home_dir = os.getenv("HOME").."/"
+
+-- {{{ Naughty config (the notification library)
+naughty.config.defaults.position = "bottom_right"
+naughty.config.defaults.width = 250
+naughty.config.defaults.icon=conf_dir .. "helper.png"
+naughty.config.defaults.icon_size = 75
+-- }}}
+
+-- {{{ Error handling
+-- Check if awesome encountered an error during startup and fell back to
+-- another config (This code will only ever execute for the fallback config)
+if awesome.startup_errors then
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, there were errors during startup!",
+ text = awesome.startup_errors })
+end
+
+-- Handle runtime errors after startup
+do
+ local in_error = false
+ awesome.connect_signal("debug::error", function (err)
+ -- Make sure we don't go into an endless error loop
+ if in_error then return end
+ in_error = true
+
+ naughty.notify({ preset = naughty.config.presets.critical,
+ title = "Oops, an error happened!",
+ text = err })
+ in_error = false
+ end)
+end
+-- }}}
+
+
+local beautiful = require("beautiful")
+
+-- {{{ Wallpaper
+-- we do this here, before the theme is loaded, because our theme depends on
+-- knowing what our wallpaper is, cause this shit is cray
+function rand_wp()
+ local ls = io.popen("ls " .. wp_dir .. " | shuf -n1")
+ local wp = ls:read("*l")
+ return wp_dir .. '/' .. wp
+end
+
+function rand_wp_lock()
+ awful.spawn(conf_dir.."bin/random_i3lock.sh "..wp_dir, false)
+end
+
+local wp = rand_wp()
+local imgavg = io.popen("cat " .. wp .. " | " .. conf_dir .. "/bin/imgavg")
+local avgcolor = imgavg:read()
+local comcolor = imgavg:read()
+imgavg:close()
+
+for s = 1, screen.count() do
+ gears.wallpaper.maximized(wp, s, true)
+end
+-- }}}
+
+require("theme/theme")
+local theme = load_theme(avgcolor, comcolor)
+beautiful.init(theme)
+
+-- This is used later as the default terminal and editor to run.
+terminal = "alacritty"
+
+editor = os.getenv("EDITOR") or "nano"
+editor_cmd = terminal .. " -e " .. editor
+
+-- Default modkey.
+-- Usually, Mod4 is the key with a logo between Control and Alt.
+-- If you do not like this or do not have such a key,
+-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
+-- However, you can use another modifier like Mod1, but it may interact with others.
+modkey = "Mod4"
+
+-- Table of layouts to cover with awful.layout.inc, order matters.
+local layouts =
+{
+ awful.layout.suit.fair,
+ awful.layout.suit.fair.horizontal,
+ awful.layout.suit.tile,
+ awful.layout.suit.tile.left,
+ awful.layout.suit.tile.bottom,
+ awful.layout.suit.tile.top,
+ -- awful.layout.suit.spiral,
+ -- awful.layout.suit.spiral.dwindle,
+ -- awful.layout.suit.max,
+ -- awful.layout.suit.max.fullscreen,
+ -- awful.layout.suit.magnifier,
+ awful.layout.suit.floating
+}
+-- }}}
+
+
+-- {{{ Tags
+-- Define a tag table which hold all screen tags.
+tags = {}
+for s = 1, screen.count() do
+ -- Each screen has its own tag table.
+ tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])
+end
+-- }}}
+
+-- Menubar configuration
+menubar.utils.terminal = terminal -- Set the terminal for applications that require it
+
+-- {{{ Wibox
+
+-- {{{ Battery widget
+local battimerintvl = 4
+batwidget = wibox.widget.textbox("")
+battimer = gears.timer({ timeout = battimerintvl })
+battimer:connect_signal("timeout",
+ function()
+ local batlevel, charging = batteryInfo()
+ if batlevel == nil then batlevel = "unk"
+ elseif (tonumber(batlevel) < 10) then
+ naughty.notify({
+ preset = naughty.config.presets.critical,
+ title="ALERT",
+ text="BATTERY LEVEL LOW",
+ timeout=battimerintvl-1,
+ })
+ end
+ if charging then
+ batwidget:set_markup('bat:'..batlevel)
+ else
+ batwidget:set_markup('<b>bat:'..batlevel..'</b>')
+ end
+ end)
+battimer:start()
+-- }}}
+
+-- {{{ sysstats widget
+sysstatswidget = wibox.widget.textbox("")
+sysstatstimer = gears.timer({ timeout = 1 })
+sysstatstimer:connect_signal("timeout",
+ function()
+ local sysstats = "??? STATS ???"
+ local f_sysstats = io.open("/tmp/sysstats")
+ if f_sysstats then
+ c_sysstats = f_sysstats:read()
+ f_sysstats:close()
+ if c_sysstats then sysstats = c_sysstats end
+ end
+ sysstatswidget:set_markup(sysstats)
+ end)
+sysstatstimer:start()
+-- }}}
+
+-- {{{ notifier for when my mic isn't muted
+local unmuteNot
+mutechecktimer = gears.timer({ timeout = 0.5 })
+mutechecktimer:connect_signal("timeout",
+ function()
+ local anyUnmuted = unmuted()
+ if unmuteNot and not anyUnmuted then
+ naughty.destroy(unmuteNot, naughty.notificationClosedReason.dismissedByUser)
+ unmuteNot = nil
+ elseif not unmuteNot and anyUnmuted then
+ unmuteNot = naughty.notify({
+ preset = naughty.config.presets.critical,
+ text = "Mic is hot!",
+ timeout = 0,
+ })
+ end
+ end)
+mutechecktimer:start()
+-- }}}
+
+
+-- Create a textclock widget
+mytextclock = wibox.widget.textclock("%a <b>%d</b>/%m <b>%H:%M</b> %z")
+myutctextclock = wibox.widget.textclock("%a %d/%m %H:%M %z", 60, "Z")
+
+-- Create a wibox for each screen and add it
+mywibox = {}
+mypromptbox = {}
+mylayoutbox = {}
+mytaglist = {}
+mytaglist.buttons = awful.util.table.join(
+ awful.button({ }, 1, awful.tag.viewonly),
+ awful.button({ modkey }, 1, awful.client.movetotag),
+ awful.button({ }, 3, awful.tag.viewtoggle),
+ awful.button({ modkey }, 3, awful.client.toggletag),
+ awful.button({ }, 4, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end),
+ awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end)
+ )
+mytasklist = {}
+mytasklist.buttons = awful.util.table.join(
+ awful.button({ }, 1, function (c)
+ if c == client.focus then
+ c.minimized = true
+ else
+ -- Without this, the following
+ -- :isvisible() makes no sense
+ c.minimized = false
+ if not c:isvisible() then
+ awful.tag.viewonly(c:tags()[1])
+ end
+ -- This will also un-minimize
+ -- the client, if needed
+ client.focus = c
+ c:raise()
+ end
+ end),
+ awful.button({ }, 3, function ()
+ if instance then
+ instance:hide()
+ instance = nil
+ else
+ instance = awful.menu.clients({
+ theme = { width = 250 }
+ })
+ end
+ end),
+ awful.button({ }, 4, function ()
+ awful.client.focus.byidx(1)
+ if client.focus then client.focus:raise() end
+ end),
+ awful.button({ }, 5, function ()
+ awful.client.focus.byidx(-1)
+ if client.focus then client.focus:raise() end
+ end))
+
+for s = 1, screen.count() do
+ -- Create a promptbox for each screen
+ mypromptbox[s] = awful.widget.prompt()
+ -- Create an imagebox widget which will contains an icon indicating which layout we're using.
+ -- We need one layoutbox per screen.
+ mylayoutbox[s] = awful.widget.layoutbox(s)
+ mylayoutbox[s]:buttons(awful.util.table.join(
+ awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
+ awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
+ awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
+ awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
+ -- Create a taglist widget
+ mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, mytaglist.buttons)
+
+ -- Create a tasklist widget
+ mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
+
+ -- Create the wibox
+ mywibox[s] = awful.wibar({ position = "top", screen = s })
+
+ -- Widgets that are aligned to the left
+ local left_layout = wibox.layout.fixed.horizontal()
+ left_layout:add(mylayoutbox[s])
+ left_layout:add(mypromptbox[s])
+
+ -- Widgets that are aligned to the right
+ local right_sep = " | "
+ local right_layout = wibox.layout.fixed.horizontal()
+ --right_layout:add(wibox.widget.textbox(right_sep))
+ right_layout:add(sysstatswidget)
+ right_layout:add(wibox.widget.textbox(right_sep))
+ right_layout:add(batwidget)
+ right_layout:add(wibox.widget.textbox(right_sep))
+ right_layout:add(wibox.widget.systray())
+ right_layout:add(wibox.widget.textbox(right_sep))
+ right_layout:add(mytaglist[s])
+ right_layout:add(wibox.widget.textbox(right_sep))
+ right_layout:add(myutctextclock)
+ right_layout:add(wibox.widget.textbox(right_sep))
+ right_layout:add(mytextclock)
+
+ -- Now bring it all together (with the tasklist in the middle)
+ local layout = wibox.layout.align.horizontal()
+ layout:set_left(left_layout)
+ layout:set_middle(mytasklist[s])
+ layout:set_right(right_layout)
+
+ mywibox[s]:set_widget(layout)
+end
+-- }}}
+
+local function focused()
+ return awful.screen.focused().index
+end
+
+-- {{{ Mouse bindings
+root.buttons(awful.util.table.join(
+ -- awful.button({ }, 3, function () mymainmenu:toggle() end),
+ awful.button({ }, 4, awful.tag.viewnext),
+ awful.button({ }, 5, awful.tag.viewprev)
+))
+-- }}}
+
+-- {{{ Key bindings
+globalkeys = awful.util.table.join(
+ awful.key({ modkey, }, "Left", awful.tag.viewprev ),
+ awful.key({ modkey, }, "Right", awful.tag.viewnext ),
+
+ -- j and k are used for moving around windows and moving windows around
+ awful.key({ modkey, }, "j",
+ function ()
+ awful.client.focus.byidx( 1)
+ if client.focus then client.focus:raise() end
+ end),
+ awful.key({ modkey, }, "k",
+ function ()
+ awful.client.focus.byidx(-1)
+ if client.focus then client.focus:raise() end
+ end),
+ awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end),
+ awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end),
+ awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end),
+ awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end),
+
+ -- h and l are for resizing
+ awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end),
+ awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end),
+ awful.key({ modkey, "Control" }, "h", function () awful.tag.incnmaster( 1) end),
+ awful.key({ modkey, "Control" }, "l", function () awful.tag.incnmaster(-1) end),
+
+ -- Space is for changing the layout
+ awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end),
+ awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end),
+
+
+ -- r is for restart, awesome or the whole computer
+ awful.key({ modkey }, "r", awesome.restart),
+ awful.key({ modkey, "Control" }, "r",
+ function ()
+ info("rebooting")
+ awful.spawn("systemctl reboot")
+ end),
+
+ -- Escape is for quitting, either the current program, all of awesome, or
+ -- or all of everything (suspend) (current program is under clientkeys)
+ awful.key({ modkey, "Control" }, "Escape", awesome.quit),
+ awful.key({ modkey, "Control", "Shift" }, "Escape",
+ function ()
+ info("hibernating")
+ awful.spawn("systemctl hibernate")
+ end),
+
+ -- n is for minimizing and unminimizing (minimmize is implemented under
+ -- clientkeys)
+ awful.key({ modkey, "Control" }, "n", awful.client.restore),
+
+ -- Prompt
+ awful.key({ modkey }, "p", function ()
+ local screen = awful.screen.focused().index
+ mywibox[screen].visible = true
+ mypromptbox[screen]:run()
+ end),
+
+ --Terminal
+ awful.key({ modkey }, "Return", function ()
+ awful.spawn(terminal)
+ end),
+
+ --PrintScreen
+ awful.key({}, "Print", false, function () awful.spawn(conf_dir.."bin/scrot-gobin.sh",false) end),
+ awful.key({ "Control" }, "Print", function ()
+ local scr_dir = home_dir..'Screenshots'
+ awful.spawn("mkdir -p "..scr_dir, false)
+ awful.spawn("scrot -e 'mv $f "..scr_dir.."/ 2>/dev/null'",false)
+ naughty.notify({ text = "Screenshot taken" })
+ end),
+
+ --Lock screen
+ awful.key({ modkey, "Control" }, "Delete", rand_wp_lock),
+
+ awful.key( { }, "XF86AudioRaiseVolume", function()
+ awful.spawn("/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%", false)
+ awful.spawn("/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ 0", false)
+ end),
+
+ awful.key( { }, "XF86AudioLowerVolume", function()
+ awful.spawn("/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%", false)
+ awful.spawn("/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ 0", false)
+ end),
+
+ awful.key( { }, "XF86AudioMute", function()
+ awful.spawn("/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle", false)
+ end),
+
+ awful.key( { }, "XF86MonBrightnessUp", function()
+ awful.spawn("/usr/bin/xbacklight -inc 5", false)
+ end),
+
+ awful.key( { }, "XF86MonBrightnessDown", function()
+ awful.spawn("/usr/bin/xbacklight -dec 5", false)
+ end),
+
+ -- Push to talk
+ awful.key( { modkey }, "q", function()
+ awful.spawn("/usr/bin/pactl set-source-mute @DEFAULT_SOURCE@ 0")
+ end,
+ muteAll,
+ { })
+)
+
+globalkeys = awful.util.table.join(globalkeys,
+ awful.key( { modkey }, "a", function()
+ info(tostring(os.time()))
+ end)
+)
+
+clientkeys = awful.util.table.join(
+ awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end),
+ awful.key({ modkey, }, "Escape", function (c) c:kill() end),
+ awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ),
+ awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end),
+ awful.key({ modkey, }, "n",
+ function (c)
+ -- The client currently has the input focus, so it cannot be
+ -- minimized, since minimized clients can't have the focus.
+ c.minimized = true
+ end),
+ awful.key({ modkey, }, "m",
+ function (c)
+ c.maximized_horizontal = not c.maximized_horizontal
+ c.maximized_vertical = not c.maximized_vertical
+ end)
+)
+
+-- Bind all key numbers to tags.
+-- Be careful: we use keycodes to make it works on any keyboard layout.
+-- This should map on the top row of your keyboard, usually 1 to 9.
+for i = 1, 9 do
+ globalkeys = awful.util.table.join(globalkeys,
+ -- View tag only.
+ awful.key({ modkey }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ tag:view_only()
+ end
+ end),
+ -- Toggle tag.
+ awful.key({ modkey, "Control" }, "#" .. i + 9,
+ function ()
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ awful.tag.viewtoggle(tag)
+ end
+ end),
+ -- Move client to tag.
+ awful.key({ modkey, "Shift" }, "#" .. i + 9,
+ function ()
+ if client.focus then
+ local screen = awful.screen.focused()
+ local tag = screen.tags[i]
+ if tag then
+ client.focus:move_to_tag(tag)
+ end
+ end
+ end))
+end
+
+clientbuttons = awful.util.table.join(
+ awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
+ awful.button({ modkey }, 1, awful.mouse.client.move),
+ awful.button({ modkey }, 3, awful.mouse.client.resize))
+
+-- Set keys
+root.keys(globalkeys)
+-- }}}
+
+-- {{{ Rules
+-- Rules to apply to new clients (through the "manage" signal).
+awful.rules.rules = {
+ -- All clients will match this rule.
+ { rule = { },
+ properties = { border_width = beautiful.border_width,
+ border_color = beautiful.border_normal,
+ focus = awful.client.focus.filter,
+ raise = true,
+ keys = clientkeys,
+ buttons = clientbuttons } },
+ { rule = { class = "MPlayer" },
+ properties = { floating = true } },
+ { rule = { class = "pinentry" },
+ properties = { floating = true } },
+ { rule = { class = "gimp" },
+ properties = { floating = true } }
+ -- Set Firefox to always map on tags number 2 of screen 1.
+ -- { rule = { class = "Firefox" },
+ -- properties = { tag = tags[1][2] } },
+}
+-- }}}
+
+-- {{{ Signals
+-- Signal function to execute when a new client appears.
+client.connect_signal("manage", function (c, startup)
+ -- Enable sloppy focus
+ c:connect_signal("mouse::enter", function(c)
+ if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
+ and awful.client.focus.filter(c) then
+ client.focus = c
+ end
+ end)
+
+ if not startup then
+ -- Set the windows at the slave,
+ -- i.e. put it at the end of others instead of setting it master.
+ -- awful.client.setslave(c)
+
+ -- Put windows in a smart way, only if they does not set an initial position.
+ if not c.size_hints.user_position and not c.size_hints.program_position then
+ c:move_to_screen(awful.screen.focused())
+ awful.placement.no_overlap(c)
+ awful.placement.no_offscreen(c)
+ end
+ end
+end)
+
+client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
+client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
+-- }}}
diff --git a/awesome/theme/README b/awesome/theme/README
new file mode 100644
index 0000000..1ddb349
--- /dev/null
+++ b/awesome/theme/README
@@ -0,0 +1,3 @@
+Background images:
+ Mikael Eriksson <mikael_eriksson@miffe.org>
+ Licensed under CC-BY-SA-3.0
diff --git a/awesome/theme/background.png b/awesome/theme/background.png
new file mode 100644
index 0000000..d72a39e
--- /dev/null
+++ b/awesome/theme/background.png
Binary files differ
diff --git a/awesome/theme/background_white.png b/awesome/theme/background_white.png
new file mode 100644
index 0000000..363ddd6
--- /dev/null
+++ b/awesome/theme/background_white.png
Binary files differ
diff --git a/awesome/theme/layouts/dwindle.png b/awesome/theme/layouts/dwindle.png
new file mode 100644
index 0000000..943ece5
--- /dev/null
+++ b/awesome/theme/layouts/dwindle.png
Binary files differ
diff --git a/awesome/theme/layouts/dwindlew.png b/awesome/theme/layouts/dwindlew.png
new file mode 100644
index 0000000..36de1ba
--- /dev/null
+++ b/awesome/theme/layouts/dwindlew.png
Binary files differ
diff --git a/awesome/theme/layouts/fairh.png b/awesome/theme/layouts/fairh.png
new file mode 100644
index 0000000..b4e289d
--- /dev/null
+++ b/awesome/theme/layouts/fairh.png
Binary files differ
diff --git a/awesome/theme/layouts/fairhw.png b/awesome/theme/layouts/fairhw.png
new file mode 100644
index 0000000..514d66d
--- /dev/null
+++ b/awesome/theme/layouts/fairhw.png
Binary files differ
diff --git a/awesome/theme/layouts/fairv.png b/awesome/theme/layouts/fairv.png
new file mode 100644
index 0000000..e5aad70
--- /dev/null
+++ b/awesome/theme/layouts/fairv.png
Binary files differ
diff --git a/awesome/theme/layouts/fairvw.png b/awesome/theme/layouts/fairvw.png
new file mode 100644
index 0000000..f97ce56
--- /dev/null
+++ b/awesome/theme/layouts/fairvw.png
Binary files differ
diff --git a/awesome/theme/layouts/floating.png b/awesome/theme/layouts/floating.png
new file mode 100644
index 0000000..cbc7804
--- /dev/null
+++ b/awesome/theme/layouts/floating.png
Binary files differ
diff --git a/awesome/theme/layouts/floatingw.png b/awesome/theme/layouts/floatingw.png
new file mode 100644
index 0000000..7ddf7ae
--- /dev/null
+++ b/awesome/theme/layouts/floatingw.png
Binary files differ
diff --git a/awesome/theme/layouts/fullscreen.png b/awesome/theme/layouts/fullscreen.png
new file mode 100644
index 0000000..46716f5
--- /dev/null
+++ b/awesome/theme/layouts/fullscreen.png
Binary files differ
diff --git a/awesome/theme/layouts/fullscreenw.png b/awesome/theme/layouts/fullscreenw.png
new file mode 100644
index 0000000..2c3cfad
--- /dev/null
+++ b/awesome/theme/layouts/fullscreenw.png
Binary files differ
diff --git a/awesome/theme/layouts/magnifier.png b/awesome/theme/layouts/magnifier.png
new file mode 100644
index 0000000..1476555
--- /dev/null
+++ b/awesome/theme/layouts/magnifier.png
Binary files differ
diff --git a/awesome/theme/layouts/magnifierw.png b/awesome/theme/layouts/magnifierw.png
new file mode 100644
index 0000000..97c1d11
--- /dev/null
+++ b/awesome/theme/layouts/magnifierw.png
Binary files differ
diff --git a/awesome/theme/layouts/max.png b/awesome/theme/layouts/max.png
new file mode 100644
index 0000000..fe70bef
--- /dev/null
+++ b/awesome/theme/layouts/max.png
Binary files differ
diff --git a/awesome/theme/layouts/maxw.png b/awesome/theme/layouts/maxw.png
new file mode 100644
index 0000000..d8debb8
--- /dev/null
+++ b/awesome/theme/layouts/maxw.png
Binary files differ
diff --git a/awesome/theme/layouts/spiral.png b/awesome/theme/layouts/spiral.png
new file mode 100644
index 0000000..a24faf5
--- /dev/null
+++ b/awesome/theme/layouts/spiral.png
Binary files differ
diff --git a/awesome/theme/layouts/spiralw.png b/awesome/theme/layouts/spiralw.png
new file mode 100644
index 0000000..f34ceb0
--- /dev/null
+++ b/awesome/theme/layouts/spiralw.png
Binary files differ
diff --git a/awesome/theme/layouts/tile.png b/awesome/theme/layouts/tile.png
new file mode 100644
index 0000000..071a385
--- /dev/null
+++ b/awesome/theme/layouts/tile.png
Binary files differ
diff --git a/awesome/theme/layouts/tilebottom.png b/awesome/theme/layouts/tilebottom.png
new file mode 100644
index 0000000..aeedbe2
--- /dev/null
+++ b/awesome/theme/layouts/tilebottom.png
Binary files differ
diff --git a/awesome/theme/layouts/tilebottomw.png b/awesome/theme/layouts/tilebottomw.png
new file mode 100644
index 0000000..f42da9d
--- /dev/null
+++ b/awesome/theme/layouts/tilebottomw.png
Binary files differ
diff --git a/awesome/theme/layouts/tileleft.png b/awesome/theme/layouts/tileleft.png
new file mode 100644
index 0000000..ab55e08
--- /dev/null
+++ b/awesome/theme/layouts/tileleft.png
Binary files differ
diff --git a/awesome/theme/layouts/tileleftw.png b/awesome/theme/layouts/tileleftw.png
new file mode 100644
index 0000000..c18e7b4
--- /dev/null
+++ b/awesome/theme/layouts/tileleftw.png
Binary files differ
diff --git a/awesome/theme/layouts/tiletop.png b/awesome/theme/layouts/tiletop.png
new file mode 100644
index 0000000..3febc35
--- /dev/null
+++ b/awesome/theme/layouts/tiletop.png
Binary files differ
diff --git a/awesome/theme/layouts/tiletopw.png b/awesome/theme/layouts/tiletopw.png
new file mode 100644
index 0000000..daf965f
--- /dev/null
+++ b/awesome/theme/layouts/tiletopw.png
Binary files differ
diff --git a/awesome/theme/layouts/tilew.png b/awesome/theme/layouts/tilew.png
new file mode 100644
index 0000000..c722a35
--- /dev/null
+++ b/awesome/theme/layouts/tilew.png
Binary files differ
diff --git a/awesome/theme/submenu.png b/awesome/theme/submenu.png
new file mode 100644
index 0000000..b2778e2
--- /dev/null
+++ b/awesome/theme/submenu.png
Binary files differ
diff --git a/awesome/theme/taglist/squarefw.png b/awesome/theme/taglist/squarefw.png
new file mode 100644
index 0000000..2a86430
--- /dev/null
+++ b/awesome/theme/taglist/squarefw.png
Binary files differ
diff --git a/awesome/theme/taglist/squarew.png b/awesome/theme/taglist/squarew.png
new file mode 100644
index 0000000..913f2ca
--- /dev/null
+++ b/awesome/theme/taglist/squarew.png
Binary files differ
diff --git a/awesome/theme/theme.lua b/awesome/theme/theme.lua
new file mode 100644
index 0000000..904c2bd
--- /dev/null
+++ b/awesome/theme/theme.lua
@@ -0,0 +1,105 @@
+---------------------------
+-- Default awesome theme --
+---------------------------
+
+function load_theme(avgcolor, comcolor)
+ if not avgcolor then avgcolor = "#000000" end
+ if not comcolor then comcolor = "#FFFFFF" end
+
+ local theme = {}
+
+ theme.font = "sans 8"
+
+ --theme.bg_normal = "#222222"
+ theme.bg_normal = avgcolor
+ theme.bg_focus = theme.bg_normal
+ theme.bg_urgent = "#ff0000" -- TODO should be opposite of bg_normal
+ theme.bg_minimize = theme.bg_normal
+ theme.bg_systray = theme.bg_normal
+
+
+ --theme.fg_normal = "#aaaaaa"
+ theme.fg_normal = comcolor
+ theme.fg_focus = comcolor
+ theme.fg_urgent = "#ffffff"
+ theme.fg_minimize = comcolor
+
+ theme.border_width = 1
+ theme.border_normal = "#000000"
+ theme.border_focus = "#535d6c"
+ theme.border_marked = "#91231c"
+
+ -- There are other variable sets
+ -- overriding the default one when
+ -- defined, the sets are:
+ -- [taglist|tasklist]_[bg|fg]_[focus|urgent]
+ -- titlebar_[bg|fg]_[normal|focus]
+ -- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
+ -- mouse_finder_[color|timeout|animate_timeout|radius|factor]
+ -- Example:
+ --theme.taglist_bg_focus = "#ff0000"
+
+ -- Display the taglist squares
+ theme.taglist_squares_sel = "/usr/share/awesome/themes/default/taglist/squarefw.png"
+ theme.taglist_squares_unsel = "/usr/share/awesome/themes/default/taglist/squarew.png"
+
+ -- Variables set for theming the menu:
+ -- menu_[bg|fg]_[normal|focus]
+ -- menu_[border_color|border_width]
+ theme.menu_submenu_icon = "/usr/share/awesome/themes/default/submenu.png"
+ theme.menu_height = 15
+ theme.menu_width = 100
+
+ -- You can add as many variables as
+ -- you wish and access them by using
+ -- beautiful.variable in your rc.lua
+ --theme.bg_widget = "#cc0000"
+
+ -- Define the image to load
+ theme.titlebar_close_button_normal = "/usr/share/awesome/themes/default/titlebar/close_normal.png"
+ theme.titlebar_close_button_focus = "/usr/share/awesome/themes/default/titlebar/close_focus.png"
+
+ theme.titlebar_ontop_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/ontop_normal_inactive.png"
+ theme.titlebar_ontop_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/ontop_focus_inactive.png"
+ theme.titlebar_ontop_button_normal_active = "/usr/share/awesome/themes/default/titlebar/ontop_normal_active.png"
+ theme.titlebar_ontop_button_focus_active = "/usr/share/awesome/themes/default/titlebar/ontop_focus_active.png"
+
+ theme.titlebar_sticky_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/sticky_normal_inactive.png"
+ theme.titlebar_sticky_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/sticky_focus_inactive.png"
+ theme.titlebar_sticky_button_normal_active = "/usr/share/awesome/themes/default/titlebar/sticky_normal_active.png"
+ theme.titlebar_sticky_button_focus_active = "/usr/share/awesome/themes/default/titlebar/sticky_focus_active.png"
+
+ theme.titlebar_floating_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/floating_normal_inactive.png"
+ theme.titlebar_floating_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/floating_focus_inactive.png"
+ theme.titlebar_floating_button_normal_active = "/usr/share/awesome/themes/default/titlebar/floating_normal_active.png"
+ theme.titlebar_floating_button_focus_active = "/usr/share/awesome/themes/default/titlebar/floating_focus_active.png"
+
+ theme.titlebar_maximized_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/maximized_normal_inactive.png"
+ theme.titlebar_maximized_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/maximized_focus_inactive.png"
+ theme.titlebar_maximized_button_normal_active = "/usr/share/awesome/themes/default/titlebar/maximized_normal_active.png"
+ theme.titlebar_maximized_button_focus_active = "/usr/share/awesome/themes/default/titlebar/maximized_focus_active.png"
+
+ theme.wallpaper = "/usr/share/awesome/themes/default/background.png"
+
+ -- You can use your own layout icons like this:
+ theme.layout_fairh = "/usr/share/awesome/themes/default/layouts/fairhw.png"
+ theme.layout_fairv = "/usr/share/awesome/themes/default/layouts/fairvw.png"
+ theme.layout_floating = "/usr/share/awesome/themes/default/layouts/floatingw.png"
+ theme.layout_magnifier = "/usr/share/awesome/themes/default/layouts/magnifierw.png"
+ theme.layout_max = "/usr/share/awesome/themes/default/layouts/maxw.png"
+ theme.layout_fullscreen = "/usr/share/awesome/themes/default/layouts/fullscreenw.png"
+ theme.layout_tilebottom = "/usr/share/awesome/themes/default/layouts/tilebottomw.png"
+ theme.layout_tileleft = "/usr/share/awesome/themes/default/layouts/tileleftw.png"
+ theme.layout_tile = "/usr/share/awesome/themes/default/layouts/tilew.png"
+ theme.layout_tiletop = "/usr/share/awesome/themes/default/layouts/tiletopw.png"
+ theme.layout_spiral = "/usr/share/awesome/themes/default/layouts/spiralw.png"
+ theme.layout_dwindle = "/usr/share/awesome/themes/default/layouts/dwindlew.png"
+
+ theme.awesome_icon = "/usr/share/awesome/icons/awesome16.png"
+
+ -- Define the icon theme for application icons. If not set then the icons
+ -- from /usr/share/icons and /usr/share/icons/hicolor will be used.
+ theme.icon_theme = nil
+
+ return theme
+end
diff --git a/awesome/theme/titlebar/close_focus.png b/awesome/theme/titlebar/close_focus.png
new file mode 100644
index 0000000..a5b7958
--- /dev/null
+++ b/awesome/theme/titlebar/close_focus.png
Binary files differ
diff --git a/awesome/theme/titlebar/close_normal.png b/awesome/theme/titlebar/close_normal.png
new file mode 100644
index 0000000..d0fdb7e
--- /dev/null
+++ b/awesome/theme/titlebar/close_normal.png
Binary files differ
diff --git a/awesome/theme/titlebar/floating_focus_active.png b/awesome/theme/titlebar/floating_focus_active.png
new file mode 100644
index 0000000..3447bb2
--- /dev/null
+++ b/awesome/theme/titlebar/floating_focus_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/floating_focus_inactive.png b/awesome/theme/titlebar/floating_focus_inactive.png
new file mode 100644
index 0000000..fe5bb3c
--- /dev/null
+++ b/awesome/theme/titlebar/floating_focus_inactive.png
Binary files differ
diff --git a/awesome/theme/titlebar/floating_normal_active.png b/awesome/theme/titlebar/floating_normal_active.png
new file mode 100644
index 0000000..3108e9e
--- /dev/null
+++ b/awesome/theme/titlebar/floating_normal_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/floating_normal_inactive.png b/awesome/theme/titlebar/floating_normal_inactive.png
new file mode 100644
index 0000000..d6f19db
--- /dev/null
+++ b/awesome/theme/titlebar/floating_normal_inactive.png
Binary files differ
diff --git a/awesome/theme/titlebar/maximized_focus_active.png b/awesome/theme/titlebar/maximized_focus_active.png
new file mode 100644
index 0000000..78a2914
--- /dev/null
+++ b/awesome/theme/titlebar/maximized_focus_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/maximized_focus_inactive.png b/awesome/theme/titlebar/maximized_focus_inactive.png
new file mode 100644
index 0000000..2c3a5b7
--- /dev/null
+++ b/awesome/theme/titlebar/maximized_focus_inactive.png
Binary files differ
diff --git a/awesome/theme/titlebar/maximized_normal_active.png b/awesome/theme/titlebar/maximized_normal_active.png
new file mode 100644
index 0000000..7eb34a9
--- /dev/null
+++ b/awesome/theme/titlebar/maximized_normal_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/maximized_normal_inactive.png b/awesome/theme/titlebar/maximized_normal_inactive.png
new file mode 100644
index 0000000..63cc537
--- /dev/null
+++ b/awesome/theme/titlebar/maximized_normal_inactive.png
Binary files differ
diff --git a/awesome/theme/titlebar/ontop_focus_active.png b/awesome/theme/titlebar/ontop_focus_active.png
new file mode 100644
index 0000000..f954bed
--- /dev/null
+++ b/awesome/theme/titlebar/ontop_focus_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/ontop_focus_inactive.png b/awesome/theme/titlebar/ontop_focus_inactive.png
new file mode 100644
index 0000000..7b7cf11
--- /dev/null
+++ b/awesome/theme/titlebar/ontop_focus_inactive.png
Binary files differ
diff --git a/awesome/theme/titlebar/ontop_normal_active.png b/awesome/theme/titlebar/ontop_normal_active.png
new file mode 100644
index 0000000..48defb3
--- /dev/null
+++ b/awesome/theme/titlebar/ontop_normal_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/ontop_normal_inactive.png b/awesome/theme/titlebar/ontop_normal_inactive.png
new file mode 100644
index 0000000..fd1dc01
--- /dev/null
+++ b/awesome/theme/titlebar/ontop_normal_inactive.png
Binary files differ
diff --git a/awesome/theme/titlebar/sticky_focus_active.png b/awesome/theme/titlebar/sticky_focus_active.png
new file mode 100644
index 0000000..1106399
--- /dev/null
+++ b/awesome/theme/titlebar/sticky_focus_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/sticky_focus_inactive.png b/awesome/theme/titlebar/sticky_focus_inactive.png
new file mode 100644
index 0000000..d75fa0e
--- /dev/null
+++ b/awesome/theme/titlebar/sticky_focus_inactive.png
Binary files differ
diff --git a/awesome/theme/titlebar/sticky_normal_active.png b/awesome/theme/titlebar/sticky_normal_active.png
new file mode 100644
index 0000000..b33956a
--- /dev/null
+++ b/awesome/theme/titlebar/sticky_normal_active.png
Binary files differ
diff --git a/awesome/theme/titlebar/sticky_normal_inactive.png b/awesome/theme/titlebar/sticky_normal_inactive.png
new file mode 100644
index 0000000..7aeac90
--- /dev/null
+++ b/awesome/theme/titlebar/sticky_normal_inactive.png
Binary files differ
diff --git a/base/gitconfig b/base/gitconfig
new file mode 100644
index 0000000..2d4a1ea
--- /dev/null
+++ b/base/gitconfig
@@ -0,0 +1,29 @@
+[push]
+ default = simple
+
+[alias]
+ #Shows diff in log
+ ll = log --stat --abbrev-commit
+
+ #Show all aliases
+ alias = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\t=> \\2/' | sort
+
+ #Full sync of local database
+ sync = fetch -pv --all
+
+ cam = commit -a -m
+ lug = log --color --graph --date=short --pretty=format:'%Cgreen%cd (%cr)%Creset %C(bold blue)%an%Creset %Cred%h%Creset -%C(yellow)%d%Creset %s' --abbrev-commit
+ purr = pull --rebase
+ chk = checkout
+ from = !git fetch origin master && git rebase -i origin/master
+
+ # print local branches and their last commit times
+ blanch = for-each-ref --sort=authordate --format '%(HEAD)%(align:left,40)%(refname:short)%(end) | %(align:left,20)%(authordate:iso)%(end) | %(subject)' refs/heads
+
+ # checkout master and delete previously checked out branch
+ close = !git checkout master && git branch -D @{-1}
+
+[color]
+ branch = auto
+ diff = auto
+ status = auto
diff --git a/bin/git-remote-gcrypt b/bin/git-remote-gcrypt
new file mode 100755
index 0000000..8b66f2f
--- /dev/null
+++ b/bin/git-remote-gcrypt
@@ -0,0 +1,921 @@
+#!/bin/sh
+
+# git-remote-gcrypt
+#
+# Copyright (c) 2013 engla
+# Copyright (c) 2013, 2014 Joey Hess <id@joeyh.name>
+# Copyright (c) 2016 Sean Whitton <spwhitton@spwhitton.name> and contributors
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) version 2 or any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# See README.rst for usage instructions
+
+set -e # errexit
+set -f # noglob
+set -C # noclobber
+
+export GITCEPTION="${GITCEPTION:-}+" # Reuse $Gref except when stacked
+Gref="refs/gcrypt/gitception$GITCEPTION"
+Gref_rbranch="refs/heads/master"
+Packkey_bytes=63 # nbr random bytes for packfile keys, any >= 256 bit is ok
+Hashtype=SHA256 # SHA512 SHA384 SHA256 SHA224 supported.
+Manifestfile=91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
+Hex40="[a-f0-9]"
+Hex40=$Hex40$Hex40$Hex40$Hex40$Hex40$Hex40$Hex40$Hex40
+Hex40=$Hex40$Hex40$Hex40$Hex40$Hex40 # Match SHA-1 hexdigest
+GPG="$(git config --get "gpg.program" '.+' || echo gpg)"
+
+Did_find_repo= # yes for connected, no for no repo
+Localdir="${GIT_DIR:=.git}/remote-gcrypt"
+Tempdir=
+
+Repoid=
+Refslist=
+Packlist=
+Keeplist=
+Extnlist=
+Repack_limit=25
+
+Recipients=
+
+# compat/utility functions
+# xfeed: The most basic output function puts $1 into the stdin of $2..$#
+xfeed()
+{
+ local input_=
+ input_=$1; shift
+ "$@" <<EOF
+$input_
+EOF
+}
+xecho() { xfeed "$*" cat; }
+xecho_n() { xecho "$@" | tr -d \\n ; } # kill newlines
+echo_git() { xecho "$@" ; } # Code clarity
+echo_info() { xecho "gcrypt:" "$@" >&2; }
+echo_die() { echo_info "$@" ; exit 1; }
+
+isnull() { case "$1" in "") return 0;; *) return 1;; esac; }
+isnonnull() { ! isnull "$1"; }
+iseq() { case "$1" in "$2") return 0;; *) return 1;; esac; }
+isnoteq() { ! iseq "$1" "$2"; }
+negate() { ! "$@"; }
+
+# Execute $@ or die
+pipefail()
+{
+ "$@" || { echo_info "'$1' failed!"; kill $$; exit 1; }
+}
+
+isurl() { isnull "${2%%$1://*}"; }
+islocalrepo() { isnull "${1##/*}" && [ ! -e "$1/HEAD" ]; }
+
+xgrep() { command grep "$@" || : ; }
+
+# setvar is used for named return variables
+# $1 *must* be a valid variable name, $2 is any value
+#
+# Conventions
+# return variable names are passed with a @ prefix
+# return variable functions use f_ prefix local vars
+# return var consumers use r_ prefix vars (or Titlecase globals)
+setvar()
+{
+ isnull "${1##@*}" || echo_die "Missing @ for return variable: $1"
+ eval ${1#@}=\$2
+}
+
+Newline="
+"
+
+# $1 is return var, $2 is value appended with newline separator
+append_to()
+{
+ local f_append_tmp_=
+ eval f_append_tmp_=\$${1#@}
+ isnull "$f_append_tmp_" || f_append_tmp_=$f_append_tmp_$Newline
+ setvar "$1" "$f_append_tmp_$2"
+}
+
+# Pick words from each line
+# $1 return variable name
+# $2 input value
+pick_fields_1_2()
+{
+ local f_ret= f_one= f_two=
+ while read f_one f_two _ # from << here-document
+ do
+ f_ret="$f_ret$f_one $f_two$Newline"
+ done <<EOF
+$2
+EOF
+ setvar "$1" "${f_ret#$Newline}"
+}
+
+# Take all lines matching $2 (full line)
+# $1 return variable name
+# $2 filter word
+# $3 input value
+# if $1 is a literal `!', the match is reversed (and arguments shift)
+# we instead remove all lines matching
+filter_to()
+{
+ local f_neg= f_line= f_ret= IFS=
+ isnoteq "$1" "!" || { f_neg=negate; shift; }
+ IFS=$Newline
+ for f_line in $3
+ do
+ $f_neg isnonnull "${f_line##$2}" || f_ret=$f_ret$f_line$Newline
+ done
+ setvar "$1" "${f_ret%$Newline}"
+}
+
+# Output the number of lines in $1
+line_count()
+{
+ local IFS=
+ IFS=$Newline
+ set -- $1
+ xecho "$#"
+}
+
+
+## gitception part
+# Fetch giturl $1, file $2
+gitception_get()
+{
+ # Take care to preserve FETCH_HEAD
+ local ret_=: obj_id= fet_head="$GIT_DIR/FETCH_HEAD"
+ [ -e "$fet_head" ] && command mv -f "$fet_head" "$fet_head.$$~" || :
+ git fetch -q -f "$1" "$Gref_rbranch:$Gref" >/dev/null &&
+ obj_id="$(git ls-tree "$Gref" | xgrep -E '\b'"$2"'$' | awk '{print $3}')" &&
+ isnonnull "$obj_id" && git cat-file blob "$obj_id" && ret_=: ||
+ { ret_=false && : ; }
+ [ -e "$fet_head.$$~" ] && command mv -f "$fet_head.$$~" "$fet_head" || :
+ $ret_
+}
+
+anon_commit()
+{
+ GIT_AUTHOR_NAME="root" GIT_AUTHOR_EMAIL="root@localhost" \
+ GIT_AUTHOR_DATE="1356994801 -0400" GIT_COMMITTER_NAME="root" \
+ GIT_COMMITTER_EMAIL="root@localhost" \
+ GIT_COMMITTER_DATE="1356994801 -0400" \
+ git commit-tree "$@" <<EOF
+Initial commit
+EOF
+}
+
+# Get 'tree' from $1, change file $2 to obj id $3
+update_tree()
+{
+ local tab_=" "
+ # $2 is a filename from the repo format
+ (set +e;
+ git ls-tree "$1" | xgrep -v -E '\b'"$2"'$';
+ xecho "100644 blob $3$tab_$2"
+ ) | git mktree
+}
+
+# Put giturl $1, file $2
+# depends on previous GET to set $Gref and depends on PUT_FINAL later
+gitception_put()
+{
+ local obj_id= tree_id= commit_id=
+ obj_id=$(git hash-object -w --stdin) &&
+ tree_id=$(update_tree "$Gref" "$2" "$obj_id") &&
+ commit_id=$(anon_commit "$tree_id") &&
+ git update-ref "$Gref" "$commit_id"
+}
+
+# Remove giturl $1, file $2
+# depends on previous GET like put
+gitception_remove()
+{
+ local tree_id= commit_id= tab_=" "
+ # $2 is a filename from the repo format
+ tree_id=$(git ls-tree "$Gref" | xgrep -v -E '\b'"$2"'$' | git mktree) &&
+ commit_id=$(anon_commit "$tree_id") &&
+ git update-ref "$Gref" "$commit_id"
+}
+
+gitception_new_repo()
+{
+ local commit_id= empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+ # get any file to update Gref, and if it's not updated we create empty
+ git update-ref -d "$Gref" || :
+ gitception_get "$1" "x" 2>/dev/null >&2 || :
+ git rev-parse -q --verify "$Gref" >/dev/null && return 0 ||
+ commit_id=$(anon_commit "$empty_tree") &&
+ git update-ref "$Gref" "$commit_id"
+}
+## end gitception
+
+# Fetch repo $1, file $2, tmpfile in $3
+GET()
+{
+ if isurl sftp "$1"
+ then
+ (exec 0>&-; curl -s -S -k "$1/$2") > "$3"
+ elif isurl rsync "$1"
+ then
+ (exec 0>&-; rsync -I -W "${1#rsync://}"/"$2" "$3" >&2)
+ elif islocalrepo "$1"
+ then
+ cat "$1/$2" > "$3"
+ else
+ gitception_get "${1#gitception://}" "$2" > "$3"
+ fi
+}
+
+# Put repo $1, file $2 or fail, tmpfile in $3
+PUT()
+{
+ if isurl sftp "$1"
+ then
+ curl -s -S -k --ftp-create-dirs -T "$3" "$1/$2"
+ elif isurl rsync "$1"
+ then
+ rsync -I -W "$3" "${1#rsync://}"/"$2" >&2
+ elif islocalrepo "$1"
+ then
+ cat >| "$1/$2" < "$3"
+ else
+ gitception_put "${1#gitception://}" "$2" < "$3"
+ fi
+}
+
+# Put all PUT changes for repo $1 at once
+PUT_FINAL()
+{
+ if isurl sftp "$1" || islocalrepo "$1" || isurl rsync "$1"
+ then
+ :
+ else
+ git push --quiet -f "${1#gitception://}" "$Gref:$Gref_rbranch"
+ fi
+}
+
+# Put directory for repo $1
+PUTREPO()
+{
+ if isurl sftp "$1"
+ then
+ :
+ elif isurl rsync "$1"
+ then
+ rsync -q -r --exclude='*' "$Localdir/" "${1#rsync://}" >&2
+ elif islocalrepo "$1"
+ then
+ mkdir -p "$1"
+ else
+ gitception_new_repo "${1#gitception://}"
+ fi
+}
+
+# For repo $1, delete all newline-separated files in $2
+REMOVE()
+{
+ local fn_=
+ if isurl sftp "$1"
+ then
+ # FIXME
+ echo_info "sftp: Ignore remove request $1/$2"
+ elif isurl rsync "$1"
+ then
+ xfeed "$2" rsync -I -W -v -r --delete --include-from=- \
+ --exclude='*' "$Localdir"/ "${1#rsync://}/" >&2
+ elif islocalrepo "$1"
+ then
+ for fn_ in $2; do
+ rm -f "$1"/"$fn_"
+ done
+ else
+ for fn_ in $2; do
+ gitception_remove "${1#gitception://}" "$fn_"
+ done
+ fi
+}
+
+CLEAN_FINAL()
+{
+ if isurl sftp "$1" || islocalrepo "$1" || isurl rsync "$1"
+ then
+ :
+ else
+ git update-ref -d "$Gref" || :
+ fi
+}
+
+ENCRYPT()
+{
+ rungpg --batch --force-mdc --compress-algo none --trust-model=always --passphrase-fd 3 -c 3<<EOF
+$1
+EOF
+}
+
+DECRYPT()
+{
+ rungpg -q --batch --no-default-keyring --secret-keyring /dev/null \
+ --keyring /dev/null --passphrase-fd 3 -d 3<<EOF
+$1
+EOF
+}
+
+# Encrypt to recipients $1
+PRIVENCRYPT()
+{
+ set -- $1
+ if isnonnull "$Conf_signkey"; then
+ set -- "$@" -u "$Conf_signkey"
+ fi
+ rungpg --compress-algo none --trust-model=always -se "$@"
+}
+
+# $1 is the match for good signature, $2 is the textual signers list
+PRIVDECRYPT()
+{
+ local status_=
+ exec 4>&1 &&
+ status_=$(rungpg --status-fd 3 -q -d 3>&1 1>&4) &&
+ xfeed "$status_" grep "^\[GNUPG:\] ENC_TO " >/dev/null &&
+ (xfeed "$status_" grep -e "$1" >/dev/null || {
+ echo_info "Failed to verify manifest signature!" &&
+ echo_info "Only accepting signatories: ${2:-(none)}" &&
+ return 1
+ })
+}
+
+# Generate $1 random bytes
+genkey()
+{
+ rungpg --armor --gen-rand 1 "$1"
+}
+
+gpg_hash()
+{
+ local hash_=
+ hash_=$(rungpg --with-colons --print-md "$1" | tr A-F a-f)
+ hash_=${hash_#:*:}
+ xecho "${hash_%:}"
+}
+
+rungpg()
+{
+ if isnonnull "$Conf_gpg_args"; then
+ set -- "$Conf_gpg_args" "$@"
+ fi
+ # gpg will fail to run when there is no controlling tty,
+ # due to trying to print messages to it, even if a gpg agent is set
+ # up. --no-tty fixes this.
+ if [ "x$GPG_AGENT_INFO" != "x" ]; then
+ ${GPG} --no-tty $@
+ else
+ ${GPG} $@
+ fi
+}
+
+# Pass the branch/ref by pipe to git
+safe_git_rev_parse()
+{
+ git cat-file --batch-check 2>/dev/null |
+ xgrep -v "missing" | cut -f 1 -d ' '
+}
+
+make_new_repo()
+{
+ echo_info "Setting up new repository"
+ PUTREPO "$URL"
+
+ # Needed assumption: the same user should have no duplicate Repoid
+ Repoid=":id:$(genkey 15)"
+ iseq "${NAME#gcrypt::}" "$URL" ||
+ git config "remote.$NAME.gcrypt-id" "$Repoid"
+ echo_info "Remote ID is $Repoid"
+ Extnlist="extn comment"
+}
+
+
+# $1 return var for goodsig match, $2 return var for signers text
+read_config()
+{
+ local recp_= r_tail= r_keyinfo= r_keyfpr= gpg_list= cap_= conf_part= good_sig= signers_=
+ Conf_signkey=$(git config --get "remote.$NAME.gcrypt-signingkey" '.+' ||
+ git config --path user.signingkey || :)
+ conf_part=$(git config --get "remote.$NAME.gcrypt-participants" '.+' ||
+ git config --get gcrypt.participants '.+' || :)
+ Conf_pubish_participants=$(git config --get --bool "remote.$NAME.gcrypt-publish-participants" '.+' ||
+ git config --get --bool gcrypt.publish-participants || :)
+ Conf_gpg_args=$(git config --get gcrypt.gpg-args '.+' || :)
+
+ # Figure out which keys we should encrypt to or accept signatures from
+ if isnull "$conf_part" || iseq "$conf_part" simple
+ then
+ signers_="(default keyring)"
+ Recipients="--throw-keyids --default-recipient-self"
+ good_sig="^\[GNUPG:\] GOODSIG "
+ setvar "$1" "$good_sig"
+ setvar "$2" "$signers_"
+ return 0
+ fi
+
+ for recp_ in $conf_part
+ do
+ gpg_list=$(rungpg --with-colons --fingerprint -k "$recp_")
+ r_tail_=$(echo "$recp_" | sed -e 's/^0x//')
+ filter_to @r_keyinfo "pub*" "$gpg_list"
+ if echo "$recp_" | grep -E -q '^[xA-F0-9]+$'; then # is $recp_ a keyid?
+ filter_to @r_keyfpr "fpr*$r_tail_*" "$gpg_list"
+ else
+ filter_to @r_keyfpr "fpr*" "$gpg_list"
+ fi
+ isnull "$r_keyinfo" || isnonnull "${r_keyinfo##*"$Newline"*}" ||
+ echo_info "WARNING: '$recp_' matches multiple keys, using one"
+ isnull "$r_keyfpr" || isnonnull "${r_keyfpr##*"$Newline"*}" ||
+ echo_info "WARNING: '$recp_' matches multiple fingerprints, using one"
+ r_keyinfo=${r_keyinfo%%"$Newline"*}
+ r_keyfpr=${r_keyfpr%%"$Newline"*}
+ keyid_=$(xfeed "$r_keyinfo" cut -f 5 -d :)
+ fprid_=$(xfeed "$r_keyfpr" cut -f 10 -d :)
+
+ isnonnull "$fprid_" &&
+ signers_="$signers_ $keyid_" &&
+ append_to @good_sig "^\[GNUPG:\] VALIDSIG .*$fprid_$" || {
+ echo_info "WARNING: Skipping missing key $recp_"
+ continue
+ }
+ # Check 'E'ncrypt capability
+ cap_=$(xfeed "$r_keyinfo" cut -f 12 -d :)
+ if ! iseq "${cap_#*E}" "$cap_"; then
+ if [ "$Conf_pubish_participants" = true ]; then
+ Recipients="$Recipients -r $keyid_"
+ else
+ Recipients="$Recipients -R $keyid_"
+ fi
+ fi
+ done
+
+ if isnull "$Recipients"
+ then
+ echo_info "You have not configured any keys you can encrypt to" \
+ "for this repository"
+ echo_info "Use ::"
+ echo_info " git config gcrypt.participants YOURKEYID"
+ exit 1
+ fi
+ setvar "$1" "$good_sig"
+ setvar "$2" "$signers_"
+}
+
+ensure_connected()
+{
+ local manifest_= r_repoid= r_name= url_frag= r_sigmatch= r_signers= \
+ tmp_manifest=
+
+ if isnonnull "$Did_find_repo"
+ then
+ return
+ fi
+ Did_find_repo=no
+ read_config @r_sigmatch @r_signers
+
+ iseq "${NAME#gcrypt::}" "$URL" || r_name=$NAME
+
+ if isurl gitception "$URL" && isnonnull "$r_name"; then
+ git config "remote.$r_name.url" "gcrypt::${URL#gitception://}"
+ echo_info "Updated URL for $r_name, gitception:// -> ()"
+ fi
+
+ # Find the URL fragment
+ url_frag=${URL##*"#"}
+ isnoteq "$url_frag" "$URL" || url_frag=
+ URL=${URL%"#$url_frag"}
+
+ # manifestfile -- sha224 hash if we can, else the default location
+ if isurl sftp "$URL" || islocalrepo "$URL" || isurl rsync "$URL"
+ then
+ # not for gitception
+ isnull "$url_frag" ||
+ Manifestfile=$(xecho_n "$url_frag" | gpg_hash SHA224)
+ else
+ isnull "$url_frag" || Gref_rbranch="refs/heads/$url_frag"
+ fi
+
+ Repoid=
+ isnull "$r_name" ||
+ Repoid=$(git config "remote.$r_name.gcrypt-id" || :)
+
+
+ tmp_manifest="$Tempdir/maniF"
+ GET "$URL" "$Manifestfile" "$tmp_manifest" 2>/dev/null || {
+ echo_info "Repository not found: $URL"
+ if ! isnull "$Repoid"; then
+ echo_info "..but repository ID is set. Aborting."
+ return 1
+ else
+ return 0
+ fi
+ }
+
+ Did_find_repo=yes
+ echo_info "Decrypting manifest"
+ manifest_=$(PRIVDECRYPT "$r_sigmatch" "$r_signers" < "$tmp_manifest") &&
+ isnonnull "$manifest_" ||
+ echo_die "Failed to decrypt manifest!"
+ rm -f "$tmp_manifest"
+
+ filter_to @Refslist "$Hex40 *" "$manifest_"
+ filter_to @Packlist "pack :*:* *" "$manifest_"
+ filter_to @Keeplist "keep :*:*" "$manifest_"
+ filter_to @Extnlist "extn *" "$manifest_"
+ filter_to @r_repoid "repo *" "$manifest_"
+
+ r_repoid=${r_repoid#repo }
+ r_repoid=${r_repoid% *}
+ if isnull "$Repoid"
+ then
+ echo_info "Remote ID is $r_repoid"
+ Repoid=$r_repoid
+ elif isnoteq "$r_repoid" "$Repoid"
+ then
+ echo_info "WARNING:"
+ echo_info "WARNING: Remote ID has changed!"
+ echo_info "WARNING: from $Repoid"
+ echo_info "WARNING: to $r_repoid"
+ echo_info "WARNING:"
+ Repoid=$r_repoid
+ else
+ return 0
+ fi
+
+ isnull "$r_name" || git config "remote.$r_name.gcrypt-id" "$r_repoid"
+}
+
+# $1 is the hash type (SHA256 etc)
+# $2 the pack id
+# $3 the key
+get_verify_decrypt_pack()
+{
+ local rcv_id= tmp_encrypted=
+ tmp_encrypted="$Tempdir/packF"
+ GET "$URL" "$2" "$tmp_encrypted" &&
+ rcv_id=$(gpg_hash "$1" < "$tmp_encrypted") &&
+ iseq "$rcv_id" "$2" || echo_die "Packfile $2 does not match digest!"
+ DECRYPT "$3" < "$tmp_encrypted"
+ rm -f "$tmp_encrypted"
+}
+
+# download all packlines (pack :SHA256:a32abc1231) from stdin (or die)
+# $1 destdir (when repack, else "")
+get_pack_files()
+{
+ local pack_id= r_pack_key_line= htype_= pack_= key_=
+ while IFS=': ' read -r _ htype_ pack_ # <<here-document
+ do
+ isnonnull "$pack_" || continue
+
+ # Get the Packlist line with the key
+ pack_id=":${htype_}:$pack_"
+ filter_to @r_pack_key_line "pack $pack_id *" "$Packlist"
+ key_=${r_pack_key_line#pack $pack_id }
+
+ if isnonnull "${pack_##$Hex40*}" ||
+ isnoteq "$htype_" SHA256 && isnoteq "$htype_" SHA224 &&
+ isnoteq "$htype_" SHA384 && isnoteq "$htype_" SHA512
+ then
+ echo_die "Packline malformed: $pack_id"
+ fi
+
+ get_verify_decrypt_pack "$htype_" "$pack_" "$key_" | \
+ if isnull "${1:-}"
+ then
+ # add to local pack list
+ git index-pack -v --stdin >/dev/null
+ xecho "pack $pack_id" >> "$Localdir/have_packs$GITCEPTION"
+ else
+ git index-pack -v --stdin "$1/${pack_}.pack" >/dev/null
+ fi
+ done
+}
+
+# Download and unpack remote packfiles
+# $1 return var for list of packfiles to delete
+repack_if_needed()
+{
+ local n_= m_= kline_= r_line= r_keep_packlist= r_del_list=
+
+ isnonnull "$Packlist" || return 0
+
+ if isnonnull "${GCRYPT_FULL_REPACK:-}"
+ then
+ Keeplist=
+ Repack_limit=0
+ fi
+
+ pick_fields_1_2 @r_del_list "$Packlist"
+
+ n_=$(line_count "$Packlist")
+ m_=$(line_count "$Keeplist")
+ if iseq 0 "$(( $Repack_limit < ($n_ - $m_) ))"; then
+ return
+ fi
+ echo_info "Repacking remote $NAME, ..."
+
+ mkdir "$Tempdir/pack"
+
+ # Split packages to keep and to repack
+ if isnonnull "$Keeplist"; then
+ while read -r _ kline_ _ # <<here-document
+ do
+ isnonnull "$kline_" || continue
+ filter_to @r_line "pack $kline_ *" "$Packlist"
+ append_to @r_keep_packlist "$r_line"
+ filter_to ! @r_del_list "pack $kline_" "$r_del_list"
+ done <<EOF
+$Keeplist
+EOF
+ fi
+
+ xfeed "$r_del_list" get_pack_files "$Tempdir/pack/"
+
+ (set +f; pipefail git verify-pack -v "$Tempdir"/pack/*.idx) |
+ grep -E '^[0-9a-f]{40}' | cut -f 1 -d ' '
+
+ Packlist=$r_keep_packlist
+ setvar "$1" "$r_del_list"
+}
+
+do_capabilities()
+{
+ echo_git fetch
+ echo_git push
+ echo_git
+}
+
+do_list()
+{
+ local obj_id= ref_name= line_=
+ ensure_connected
+
+ xecho "$Refslist" | while read line_
+ do
+ isnonnull "$line_" || break
+ obj_id=${line_%% *}
+ ref_name=${line_##* }
+ echo_git "$obj_id" "$ref_name"
+ if iseq "$ref_name" "refs/heads/master"
+ then
+ echo_git "@refs/heads/master HEAD"
+ fi
+ done
+
+ # end with blank line
+ echo_git
+}
+
+do_fetch()
+{
+ # Download packs in the manifest that don't appear in have_packs
+ local pneed_= premote_=
+
+ ensure_connected
+
+ # The `+` for $GITCEPTION is pointless but we will be safe for stacking
+ pick_fields_1_2 @premote_ "$Packlist"
+ if [ -s "$Localdir/have_packs+" ]
+ then
+ pneed_=$(xfeed "$premote_" xgrep -v -x -f "$Localdir/have_packs+")
+ else
+ pneed_=$premote_
+ fi
+
+ xfeed "$pneed_" get_pack_files
+
+ echo_git # end with blank line
+}
+
+# do_push PUSHARGS (multiple lines like +src:dst, with both + and src opt.)
+do_push()
+{
+ # Security protocol:
+ # Each git packfile is encrypted and then named for the encrypted
+ # file's hash. The manifest is updated with the pack id.
+ # The manifest is encrypted.
+ local r_revlist= pack_id= key_= obj_= src_= dst_= \
+ r_pack_delete= tmp_encrypted= tmp_objlist= tmp_manifest=
+
+ ensure_connected
+
+ if iseq "$Did_find_repo" "no"
+ then
+ make_new_repo
+ fi
+
+ if isnonnull "$Refslist"
+ then
+ # mark all remote refs with ^<sha-1> (if sha-1 exists locally)
+ r_revlist=$(xfeed "$Refslist" cut -f 1 -d ' ' |
+ safe_git_rev_parse | sed -e 's/^\(.\)/^&/')
+ fi
+
+ while IFS=: read -r src_ dst_ # << +src:dst
+ do
+ src_=${src_#+}
+ filter_to ! @Refslist "$Hex40 $dst_" "$Refslist"
+
+ if isnonnull "$src_"
+ then
+ append_to @r_revlist "$src_"
+ obj_=$(xfeed "$src_" safe_git_rev_parse)
+ append_to @Refslist "$obj_ $dst_"
+ fi
+ done <<EOF
+$1
+EOF
+
+ tmp_encrypted="$Tempdir/packP"
+ tmp_objlist="$Tempdir/objlP"
+
+ {
+ xfeed "$r_revlist" git rev-list --objects --stdin --
+ repack_if_needed @r_pack_delete
+ } > "$tmp_objlist"
+
+ # Only send pack if we have any objects to send
+ if [ -s "$tmp_objlist" ]
+ then
+ key_=$(genkey "$Packkey_bytes")
+ pack_id=$(export GIT_ALTERNATE_OBJECT_DIRECTORIES=$Tempdir;
+ pipefail git pack-objects --stdout < "$tmp_objlist" |
+ pipefail ENCRYPT "$key_" |
+ tee "$tmp_encrypted" | gpg_hash "$Hashtype")
+
+ append_to @Packlist "pack :${Hashtype}:$pack_id $key_"
+ if isnonnull "$r_pack_delete"
+ then
+ append_to @Keeplist "keep :${Hashtype}:$pack_id 1"
+ fi
+ fi
+
+ # Generate manifest
+ echo_info "Encrypting to: $Recipients"
+ echo_info "Requesting manifest signature"
+
+ tmp_manifest="$Tempdir/maniP"
+ PRIVENCRYPT "$Recipients" > "$tmp_manifest" <<EOF
+$Refslist
+$Packlist
+$Keeplist
+repo $Repoid
+$Extnlist
+EOF
+
+ # Upload pack
+ if [ -s "$tmp_objlist" ]
+ then
+ PUT "$URL" "$pack_id" "$tmp_encrypted"
+ fi
+
+ # Upload manifest
+ PUT "$URL" "$Manifestfile" "$tmp_manifest"
+
+ rm -f "$tmp_encrypted"
+ rm -f "$tmp_objlist"
+ rm -f "$tmp_manifest"
+
+ # Delete packs
+ if isnonnull "$r_pack_delete"; then
+ REMOVE "$URL" "$(xecho "$r_pack_delete" | \
+ while IFS=': ' read -r _ _ pack_
+ do
+ isnonnull "$pack_" || continue
+ xecho "$pack_"
+ done)"
+ fi
+
+ PUT_FINAL "$URL"
+
+ # ok all updates
+ while IFS=: read -r src_ dst_ # << +src:dst
+ do
+ echo_git "ok $dst_"
+ done <<EOF
+$1
+EOF
+
+ echo_git
+}
+
+cleanup_tmpfiles()
+{
+ if isnonnull "${Tempdir%%*."$$"}"; then
+ echo_die "Unexpected Tempdir value: $Tempdir"
+ fi
+ rm -r -f -- "${Tempdir}" >&2
+}
+
+setup()
+{
+ mkdir -p "$Localdir"
+
+ # Set up a subdirectory in /tmp
+ temp_key=$(genkey 9 | tr '/' _)
+ Tempdir="${TMPDIR:-/tmp}/git-remote-gcrypt-${temp_key}.$$"
+ case "${MSYSTEM:-unknown}" in
+ MSYS*|MINGW*)
+ mkdir "${Tempdir}"
+ echo_info "Warning: Not securing tempdir ${Tempdir} because we are on mingw/msys"
+ ;;
+ unknown|*)
+ mkdir -m 700 "${Tempdir}"
+ ;;
+ esac
+
+ trap cleanup_tmpfiles EXIT
+ trap 'exit 1' 1 2 3 15
+}
+
+# handle git-remote-helpers protocol
+gcrypt_main_loop()
+{
+ local input_= input_inner= r_args= temp_key=
+
+ NAME=$1 # Remote name
+ URL=$2 # Remote URL
+
+ setup
+
+ while read input_
+ do
+ case "$input_" in
+ capabilities)
+ do_capabilities
+ ;;
+ list|list\ for-push)
+ do_list
+ ;;
+ fetch\ *)
+ r_args=${input_##fetch }
+ while read input_inner
+ do
+ case "$input_inner" in
+ fetch*)
+ r_args= #ignored
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+ do_fetch "$r_args"
+ ;;
+ push\ *)
+ r_args=${input_##push }
+ while read input_inner
+ do
+ case "$input_inner" in
+ push\ *)
+ append_to @r_args "${input_inner#push }"
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+ do_push "$r_args"
+ ;;
+ ?*)
+ echo_die "Unknown input!"
+ ;;
+ *)
+ CLEAN_FINAL "$URL"
+ exit 0
+ ;;
+ esac
+ done
+}
+
+if [ "x$1" = x--check ]
+then
+ NAME=dummy-gcrypt-check
+ URL=$2
+ setup
+ ensure_connected
+ git remote remove $NAME 2>/dev/null || true
+ if iseq "$Did_find_repo" "no"
+ then
+ exit 100
+ fi
+else
+ gcrypt_main_loop "$@"
+fi
diff --git a/bin/go-playground b/bin/go-playground
new file mode 100755
index 0000000..37675d0
--- /dev/null
+++ b/bin/go-playground
@@ -0,0 +1,5 @@
+#!/bin/sh
+cd "$(mktemp -d)";
+go mod init local-playground;
+echo -e 'package main\n\nimport (\n\t"fmt"\n)\n\nfunc main() {\n\tfmt.Println("aloha")\n}\n' > main.go;
+$EDITOR main.go;
diff --git a/bin/sshfs b/bin/sshfs
new file mode 100755
index 0000000..d5d5ee7
--- /dev/null
+++ b/bin/sshfs
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+/usr/bin/sshfs -oTCPKeepAlive=yes -oServerAliveCountMax=1 -oServerAliveInterval=5 $@
diff --git a/bonzi.png b/bonzi.png
new file mode 100644
index 0000000..6833377
--- /dev/null
+++ b/bonzi.png
Binary files differ
diff --git a/default.nix b/default.nix
new file mode 100644
index 0000000..950dee0
--- /dev/null
+++ b/default.nix
@@ -0,0 +1,130 @@
+{
+
+ pkgsSrc ? ./pkgs.nix
+
+}: rec {
+
+ pkgs = (import pkgsSrc) {};
+
+ gitConfig = pkgs.writeTextDir "git/config"
+ (builtins.readFile ./base/gitconfig);
+
+ git = pkgs.writeScriptBin "git" ''
+ #!${pkgs.bash}/bin/bash
+ export XDG_CONFIG_HOME=${gitConfig}
+ exec ${pkgs.git}/bin/git "$@"
+ '';
+
+ zsh = ((import ./zsh) { inherit pkgs; }).zsh;
+
+ loadout = pkgs.buildEnv {
+ name = "loadout";
+ paths = [
+
+ pkgs.gnugrep
+ pkgs.ag
+ pkgs.gawk
+
+ git
+ pkgs.mercurial
+ pkgs.breezy # bzr
+
+ pkgs.gcc
+ pkgs.gnumake
+ pkgs.cmake
+ pkgs.strace
+
+ pkgs.curl
+ pkgs.wget
+ pkgs.rsync
+
+ pkgs.hostname
+ pkgs.netcat
+ pkgs.nmap
+ pkgs.dnsutils
+ pkgs.openssh
+
+ pkgs.tmux
+
+ pkgs.ncdu
+ pkgs.htop
+
+ pkgs.unzip
+ pkgs.unrar
+ pkgs.gzip
+
+ pkgs.jq
+ pkgs.yq
+ pkgs.go
+
+ pkgs.xsel
+ pkgs.pavucontrol
+
+ (pkgs.nerdfonts.override { fonts = [ "SourceCodePro" ]; })
+
+ ((import ./nvim) { inherit pkgs; }).nvim
+ zsh
+ ((import ./alacritty) { inherit pkgs zsh; }).alacritty
+ ((import ./awesome) { inherit pkgs; }).awesome
+ ];
+ };
+
+ appimageEntrypoint = pkgs.writeScriptBin "mediocre-loadout" ''
+ #!${pkgs.bash}/bin/bash
+
+ cmd="$1"; shift;
+
+ if [ "$cmd" = "editor" ]; then exec nvim "$@"; fi
+ if [ "$cmd" = "shell" ]; then exec zsh "$@"; fi
+ if [ "$cmd" = "gui" ]; then exec alacritty "$@"; fi
+ if [ "$cmd" = "wm" ]; then exec awesome "$@"; fi
+
+ echo "USAGE: $0 [editor|shell|gui|wm] [passthrough args...]"
+ exit 1
+ '';
+
+ appimageIcon = pkgs.stdenv.mkDerivation {
+ name = "mediocre-loadout-icon";
+ src = ./bonzi.png;
+ builder = builtins.toFile "builder.sh" ''
+ source $stdenv/setup
+ dir=share/icons/hicolor/256x256/apps
+ mkdir -p "$out"/$dir
+ cp $src "$out"/$dir/mediocre-loadout.png
+ '';
+ };
+
+ appimageDesktopFile = pkgs.writeTextDir "share/applications/mediocre-loadout.desktop" ''
+ [Desktop Entry]
+ Name=Mediocre Loadout
+ Exec=mediocre-loadout gui
+ Icon=mediocre-loadout
+ Type=Application
+ Categories=Utility;
+ '';
+
+ appimageTarget = pkgs.buildEnv {
+ name = "mediocre-loadout-target";
+ paths = [
+ loadout
+ appimageEntrypoint
+ appimageIcon
+ appimageDesktopFile
+ ];
+ };
+
+ appimageTargetFlat = pkgs.stdenv.mkDerivation {
+ name = "mediocre-loadout-target-flat";
+ src = appimageTarget;
+ builder = builtins.toFile "builder.sh" ''
+ source $stdenv/setup
+ cp -rL "$src" "$out"
+ '';
+ };
+
+ appimage = ((import ./appimage.nix) { pkgsSrc = pkgsSrc; }) {
+ name = "mediocre-loadout";
+ target = appimageTargetFlat;
+ };
+
+}
diff --git a/nvim/default.nix b/nvim/default.nix
new file mode 100644
index 0000000..d6d4a94
--- /dev/null
+++ b/nvim/default.nix
@@ -0,0 +1,94 @@
+{
+
+ pkgs ? (import ../pkgs.nix) {},
+
+}: rec {
+
+ goimports = pkgs.buildGoModule rec {
+ pname = "goimports";
+ version = "v0.1.7";
+ src = builtins.fetchGit {
+ url = "https://go.googlesource.com/tools";
+ rev = "0df0ca0f43117120bd7cc900ebf765f9b799438a";
+ };
+ vendorSha256 = "1vs4vbl3kh8lbqrm4yqqn27ammlqj7jdbi0ca9s4fkja2sk45ibi";
+ subPackages = [ "cmd/goimports" ];
+ };
+
+ # the gocode-gomod which comes with nixpkgs places the binary at
+ # gocode-gomod, we gotta rename it
+ gocode = pkgs.stdenv.mkDerivation {
+ name = "gocode";
+ src = pkgs.gocode-gomod;
+ builder = builtins.toFile "builder.sh" ''
+ source $stdenv/setup
+ mkdir -p "$out"/bin/
+ cp "$src"/bin/gocode-gomod "$out"/bin/gocode
+ '';
+ };
+
+ env = pkgs.buildEnv {
+ name = "nvim-env";
+ paths = [
+ pkgs.vimPlugins.vim-plug
+ pkgs.vimPlugins.deoplete-nvim
+ pkgs.vimPlugins.deoplete-go
+ pkgs.vimPlugins.nerdtree
+ pkgs.vimPlugins.nerdtree-git-plugin
+ pkgs.vimPlugins.vim-gitgutter
+ pkgs.vimPlugins.neomake
+ pkgs.vimPlugins.papercolor-theme
+ pkgs.vimPlugins.vim-go
+ pkgs.vimPlugins.vim-nix
+
+ pkgs.golangci-lint
+ pkgs.gopls
+ gocode
+ goimports
+ ];
+ };
+
+ envPlugins = "${env}/share/vim-plugins";
+
+ init = pkgs.writeText "nvim-init" ''
+ source ${envPlugins}/vim-plug/plug.vim
+
+ call plug#begin('${envPlugins}')
+ Plug '${envPlugins}/deoplete-nvim'
+ Plug '${envPlugins}/deoplete-go', { 'for': 'go' }
+ Plug '${envPlugins}/nerdtree', { 'on': 'NERDTreeToggle' }
+ Plug '${envPlugins}/nerdtree-git-plugin'
+ Plug '${envPlugins}/vim-gitgutter'
+ Plug '${envPlugins}/neomake'
+ Plug '${envPlugins}/papercolor-theme'
+ Plug '${envPlugins}/vim-go', { 'for': 'go' }
+ Plug '${envPlugins}/vim-nix', { 'for': 'nix' }
+ call plug#end()
+
+ source ${./init.vim}
+ '';
+
+ nvimRaw = pkgs.writeScriptBin "nvim" ''
+ #!${pkgs.bash}/bin/bash
+ export PATH=${env}/bin:$PATH
+ exec ${pkgs.neovim}/bin/nvim -u ${init} "$@"
+ '';
+
+ rplugin = pkgs.stdenv.mkDerivation {
+ name = "nvim-rplugin";
+ buildInputs = [ pkgs.git nvimRaw ];
+ builder = builtins.toFile "builder.sh" ''
+ source $stdenv/setup
+ mkdir -p "$out"/
+ export NVIM_RPLUGIN_MANIFEST="$out"/rplugin.vim
+ nvim -c ':UpdateRemotePlugins' -c ':exit' >/dev/null
+ '';
+ };
+
+ nvim = pkgs.writeScriptBin "nvim" ''
+ #!${pkgs.bash}/bin/bash
+ export NVIM_RPLUGIN_MANIFEST=${rplugin}/rplugin.vim
+ exec ${nvimRaw}/bin/nvim "$@"
+ '';
+
+}
diff --git a/nvim/init.vim b/nvim/init.vim
new file mode 100644
index 0000000..630b90d
--- /dev/null
+++ b/nvim/init.vim
@@ -0,0 +1,170 @@
+" PaperColor ###############################################################
+
+set background=light
+colorscheme PaperColor
+
+" Deoplete #################################################################
+let g:deoplete#enable_at_startup = 1
+" use tab to cycle
+inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
+" close preview when leaving insert
+autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif
+
+" NERDTree #################################################################
+let NERDTreeMouseMode=3
+let NERDTreeMinimalUI=1
+let NERDTreeAutoDeleteBuffer=1
+let NERDTreeHighlightCursorline=1
+let NERDTreeShowHidden=1
+let g:NERDTreeIndicatorMapCustom = {
+ \ "Modified" : "Δ",
+ \ "Staged" : "✚",
+ \ "Untracked" : "✭",
+ \ "Renamed" : "➜",
+ \ "Unmerged" : "☢",
+ \ "Deleted" : "-",
+ \ "Dirty" : "Δ",
+ \ "Clean" : "",
+ \ "Unknown" : ""
+ \ }
+
+map <C-n> :NERDTreeToggle<CR>
+" always enter term buffer in insert mode
+autocmd BufEnter * if &buftype == 'terminal' | :startinsert | endif
+
+" vim-go ###################################################################
+"
+"use goimports for formatting instead of gofmt
+let g:go_fmt_command = "goimports"
+
+" neomake ##################################################################
+autocmd! BufWritePost * Neomake
+"let g:neomake_verbose=3
+"let g:neomake_logfile='/tmp/neomake.log'
+
+" the sidebar sign placement wasn't playing nice with gitgutter, so use the
+" location list instead. But location list is kinda dumb cause it pops open
+" multiple times and at weird times, sooo.... fuck it
+"let g:neomake_open_list=2
+let g:neomake_open_list=0
+let g:neomake_place_signs=0
+
+let g:neomake_go_enabled_makers = ['go', 'golangcilint']
+let g:neomake_go_golangcilint_maker = {
+ \ 'exe': 'golangci-lint',
+ \ 'args': [
+ \ 'run',
+ \ '--no-config',
+ \ '--out-format=line-number',
+ \ '--print-issued-lines=false',
+ \ '-E=durationcheck',
+ \ '-E=errorlint',
+ \ '-E=exportloopref',
+ \ '-E=forbidigo',
+ \ '-E=gochecknoinits',
+ \ '-E=godot',
+ \ '-E=goimports',
+ \ '-E=misspell',
+ \ '-E=revive',
+ \ '-E=unconvert',
+ \ '-E=unparam',
+ \ '.'
+ \ ],
+ \ 'output_stream': 'stdout',
+ \ 'append_file': 0,
+ \ 'cwd': '%:h',
+ \ 'errorformat':
+ \ '%f:%l:%c: %m,' .
+ \ '%f:%l: %m'
+ \ }
+
+let g:neomake_markdown_enabled_makers = ['misspell']
+let g:neomake_markdown_misspell_maker = {
+ \ 'errorformat': '%f:%l:%c:%m',
+ \ }
+
+" mine #####################################################################
+
+"Makes current line/column highlighted, and set text width
+set tw=80
+set colorcolumn=+1
+"autocmd bufenter * set cursorline cursorcolumn colorcolumn=+1
+"autocmd bufleave * set nocursorline nocursorcolumn colorcolumn=0
+hi ColorColumn ctermfg=none ctermbg=grey cterm=none
+"hi CursorLine ctermfg=none ctermbg=lightgrey cterm=none
+"hi CursorColumn ctermfg=none ctermbg=lightgrey cterm=none
+
+"Buffers scroll a bit so cursor doens't go all the way to the bottom before
+"scroll begins
+set scrolloff=3
+
+"Makes all .swp files go to /tmp instead of . CAUSE FUCK DA POLICE
+set backupdir=/tmp
+set directory=/tmp
+
+"Better indenting
+set autoindent
+set expandtab
+set tabstop=4
+set shiftwidth=4
+
+"Show eol and tabs
+set list
+set listchars=trail:░,tab:►\ ,extends:>,precedes:<
+
+"Don't highlight search matches, don't jump while mid-search
+set noincsearch
+set nohlsearch
+
+"We want certain types to only have 2 space for tabs
+au FileType clojure setlocal tabstop=2 shiftwidth=2
+au FileType ruby setlocal tabstop=2 shiftwidth=2
+au FileType yaml setlocal tabstop=2 shiftwidth=2
+au FileType html setlocal tabstop=2 shiftwidth=2
+au FileType proto setlocal tabstop=2 shiftwidth=2
+au FileType javascript setlocal tabstop=2 shiftwidth=2
+
+"We want certain types to use tabs instead of spaces
+au FileType go setlocal nolist noexpandtab
+au FileType make setlocal nolist noexpandtab
+
+"terminal shortcuts
+tnoremap <leader><leader> \
+tnoremap <leader> <C-\><C-n>
+"tab shortcuts for terminal mode have terminal escape code preceding them
+tnoremap <leader>tn <C-\><C-n>:tabe term://zsh<CR>
+tnoremap <leader>tN <C-\><C-n>:tabe<CR>
+tnoremap <leader>ts <C-\><C-n>:vs term://zsh<CR>
+tnoremap <leader>tS <C-\><C-n>:vnew<CR>
+tnoremap <leader>ti <C-\><C-n>:sp term://zsh<CR>
+tnoremap <leader>tI <C-\><C-n>:new<CR>
+tnoremap <leader>th <C-\><C-n>gT
+tnoremap <leader>tH <C-\><C-n>:-tabmove<CR>
+tnoremap <leader>tl <C-\><C-n>gt
+tnoremap <leader>tL <C-\><C-n>:+tabmove<CR>
+tnoremap <leader>tx <C-\><C-n>:tabclose<CR>
+
+"tab shortcuts
+noremap <leader>tn :tabe term://zsh<CR>
+noremap <leader>tN :tabe<CR>
+noremap <leader>ts :vs term://zsh<CR>
+noremap <leader>tS :vnew<CR>
+noremap <leader>ti :sp term://zsh<CR>
+noremap <leader>tI :new<CR>
+noremap <leader>th gT
+noremap <leader>tH :-tabmove<CR>
+noremap <leader>tl gt
+noremap <leader>tL :+tabmove<CR>
+noremap <leader>tx :tabclose<CR>
+
+" yank/paste into/from clipboard
+set clipboard+=unnamedplus
+
+"Clojure specific mappings
+" Eval outerform
+au FileType clojure nmap <buffer> cpP :Eval<cr>
+" Eval full page
+au FileType clojure nmap <buffer> cpR :%Eval<cr>
+
+" Disable Ex mode!
+nnoremap Q <Nop>
diff --git a/pkgs.nix b/pkgs.nix
new file mode 100644
index 0000000..c79130d
--- /dev/null
+++ b/pkgs.nix
@@ -0,0 +1,41 @@
+let
+
+ src = builtins.fetchTarball {
+ name = "nixpkgs-2105";
+ url = "https://github.com/nixos/nixpkgs/archive/7e9b0dff974c89e070da1ad85713ff3c20b0ca97.tar.gz";
+ sha256 = "1ckzhh24mgz6jd1xhfgx0i9mijk6xjqxwsshnvq789xsavrmsc36";
+ };
+
+ normalPkgs = (import src) {};
+
+ config = {
+ allowUnfree = true;
+ packageOverrides = pkgs: {
+
+ go = builtins.fetchTarball {
+ url = "https://golang.org/dl/go1.17.1.linux-amd64.tar.gz";
+ sha256 = "1196h1jx9cn5ks1y9r95z0q2s6m6ssvnx7jd34g435jvxjgb2c94";
+ };
+
+ nixgl = let
+
+ src = builtins.fetchTarball {
+ name = "nixgl-unstable";
+ url = "https://github.com/guibou/nixGL/archive/51f19871a31b15b482ac4c80976da173289e77fb.tar.gz";
+ sha256 = "0dj2apbx5iqvkiixyz1dzx4id51iw9s2isp1f9x60a03f5sqcvvi";
+ };
+
+ nixgl = (import src) {
+ inherit pkgs;
+ enable32bits = false;
+ };
+
+ in nixgl.nixGLIntel;
+
+ };
+ };
+
+in pkgsArg:
+ (import src) (
+ normalPkgs.lib.attrsets.recursiveUpdate { config = config; } pkgsArg
+ )
diff --git a/wallpapers/4k-oled-wallpaper-of-the-m87-black-hole-2560×1440.jpg b/wallpapers/4k-oled-wallpaper-of-the-m87-black-hole-2560×1440.jpg
new file mode 100644
index 0000000..3a32367
--- /dev/null
+++ b/wallpapers/4k-oled-wallpaper-of-the-m87-black-hole-2560×1440.jpg
Binary files differ
diff --git a/wallpapers/4o1bisow7ps21.png b/wallpapers/4o1bisow7ps21.png
new file mode 100644
index 0000000..2c3a4b0
--- /dev/null
+++ b/wallpapers/4o1bisow7ps21.png
Binary files differ
diff --git a/wallpapers/7nmbvhlv21s21.jpg b/wallpapers/7nmbvhlv21s21.jpg
new file mode 100644
index 0000000..a314071
--- /dev/null
+++ b/wallpapers/7nmbvhlv21s21.jpg
Binary files differ
diff --git a/wallpapers/abra.jpg b/wallpapers/abra.jpg
new file mode 100644
index 0000000..4feb484
--- /dev/null
+++ b/wallpapers/abra.jpg
Binary files differ
diff --git a/wallpapers/articuno.jpg b/wallpapers/articuno.jpg
new file mode 100644
index 0000000..c203f3d
--- /dev/null
+++ b/wallpapers/articuno.jpg
Binary files differ
diff --git a/wallpapers/big_71d0086eab49280fed10d14d573893a876b5eaf4.png b/wallpapers/big_71d0086eab49280fed10d14d573893a876b5eaf4.png
new file mode 100644
index 0000000..4f7920f
--- /dev/null
+++ b/wallpapers/big_71d0086eab49280fed10d14d573893a876b5eaf4.png
Binary files differ
diff --git a/wallpapers/big_aaf416dcccb774b6e508f40e34bd040f72c3d854.jpg b/wallpapers/big_aaf416dcccb774b6e508f40e34bd040f72c3d854.jpg
new file mode 100644
index 0000000..ef2df65
--- /dev/null
+++ b/wallpapers/big_aaf416dcccb774b6e508f40e34bd040f72c3d854.jpg
Binary files differ
diff --git a/wallpapers/big_b1f7b91cb5f611733e723dfcd394364997738589.jpg b/wallpapers/big_b1f7b91cb5f611733e723dfcd394364997738589.jpg
new file mode 100644
index 0000000..73594e2
--- /dev/null
+++ b/wallpapers/big_b1f7b91cb5f611733e723dfcd394364997738589.jpg
Binary files differ
diff --git a/wallpapers/big_c52f705c7d5b9b74b96c30b5c44361fb04b7d0c7.png b/wallpapers/big_c52f705c7d5b9b74b96c30b5c44361fb04b7d0c7.png
new file mode 100644
index 0000000..7370c81
--- /dev/null
+++ b/wallpapers/big_c52f705c7d5b9b74b96c30b5c44361fb04b7d0c7.png
Binary files differ
diff --git a/wallpapers/bmc5i4njj4t21.png b/wallpapers/bmc5i4njj4t21.png
new file mode 100644
index 0000000..f867598
--- /dev/null
+++ b/wallpapers/bmc5i4njj4t21.png
Binary files differ
diff --git a/wallpapers/charizard.jpg b/wallpapers/charizard.jpg
new file mode 100644
index 0000000..ba8318c
--- /dev/null
+++ b/wallpapers/charizard.jpg
Binary files differ
diff --git a/wallpapers/cubone.jpg b/wallpapers/cubone.jpg
new file mode 100644
index 0000000..2bc4e8d
--- /dev/null
+++ b/wallpapers/cubone.jpg
Binary files differ
diff --git a/wallpapers/dragonair.jpg b/wallpapers/dragonair.jpg
new file mode 100644
index 0000000..442d8c5
--- /dev/null
+++ b/wallpapers/dragonair.jpg
Binary files differ
diff --git a/wallpapers/dratini.jpg b/wallpapers/dratini.jpg
new file mode 100644
index 0000000..24637f8
--- /dev/null
+++ b/wallpapers/dratini.jpg
Binary files differ
diff --git a/wallpapers/efo9jncq20s21.jpg b/wallpapers/efo9jncq20s21.jpg
new file mode 100644
index 0000000..c4fde2f
--- /dev/null
+++ b/wallpapers/efo9jncq20s21.jpg
Binary files differ
diff --git a/wallpapers/elochki-by-hangmoon-2560×1440.jpg b/wallpapers/elochki-by-hangmoon-2560×1440.jpg
new file mode 100644
index 0000000..63e3352
--- /dev/null
+++ b/wallpapers/elochki-by-hangmoon-2560×1440.jpg
Binary files differ
diff --git a/wallpapers/evee.jpg b/wallpapers/evee.jpg
new file mode 100644
index 0000000..e701480
--- /dev/null
+++ b/wallpapers/evee.jpg
Binary files differ
diff --git a/wallpapers/gastly.jpg b/wallpapers/gastly.jpg
new file mode 100644
index 0000000..700a4ad
--- /dev/null
+++ b/wallpapers/gastly.jpg
Binary files differ
diff --git a/wallpapers/growlithe.jpg b/wallpapers/growlithe.jpg
new file mode 100644
index 0000000..c470858
--- /dev/null
+++ b/wallpapers/growlithe.jpg
Binary files differ
diff --git a/wallpapers/haunter.jpg b/wallpapers/haunter.jpg
new file mode 100644
index 0000000..80fd1f6
--- /dev/null
+++ b/wallpapers/haunter.jpg
Binary files differ
diff --git a/wallpapers/ivysaur.jpg b/wallpapers/ivysaur.jpg
new file mode 100644
index 0000000..ebd4bda
--- /dev/null
+++ b/wallpapers/ivysaur.jpg
Binary files differ
diff --git a/wallpapers/jolteon.jpg b/wallpapers/jolteon.jpg
new file mode 100644
index 0000000..12c01a5
--- /dev/null
+++ b/wallpapers/jolteon.jpg
Binary files differ
diff --git a/wallpapers/magicarp.jpg b/wallpapers/magicarp.jpg
new file mode 100644
index 0000000..5499d85
--- /dev/null
+++ b/wallpapers/magicarp.jpg
Binary files differ
diff --git a/wallpapers/melee_minimal_wallpaper_by_browniehooves-d8lwcvk.png b/wallpapers/melee_minimal_wallpaper_by_browniehooves-d8lwcvk.png
new file mode 100644
index 0000000..f61a217
--- /dev/null
+++ b/wallpapers/melee_minimal_wallpaper_by_browniehooves-d8lwcvk.png
Binary files differ
diff --git a/wallpapers/mew.jpg b/wallpapers/mew.jpg
new file mode 100644
index 0000000..961825b
--- /dev/null
+++ b/wallpapers/mew.jpg
Binary files differ
diff --git a/wallpapers/mewtwo.jpg b/wallpapers/mewtwo.jpg
new file mode 100644
index 0000000..0b8b570
--- /dev/null
+++ b/wallpapers/mewtwo.jpg
Binary files differ
diff --git a/wallpapers/pikachu.jpg b/wallpapers/pikachu.jpg
new file mode 100644
index 0000000..8d14f48
--- /dev/null
+++ b/wallpapers/pikachu.jpg
Binary files differ
diff --git a/wallpapers/polywhirl.jpg b/wallpapers/polywhirl.jpg
new file mode 100644
index 0000000..d6f2223
--- /dev/null
+++ b/wallpapers/polywhirl.jpg
Binary files differ
diff --git a/wallpapers/rapidash.jpg b/wallpapers/rapidash.jpg
new file mode 100644
index 0000000..20742b5
--- /dev/null
+++ b/wallpapers/rapidash.jpg
Binary files differ
diff --git a/wallpapers/sand-inside-house-2560×1440.jpg b/wallpapers/sand-inside-house-2560×1440.jpg
new file mode 100644
index 0000000..09d1195
--- /dev/null
+++ b/wallpapers/sand-inside-house-2560×1440.jpg
Binary files differ
diff --git a/wallpapers/sea-house-spirited-away-2560×1440.jpg b/wallpapers/sea-house-spirited-away-2560×1440.jpg
new file mode 100644
index 0000000..b7d3bc6
--- /dev/null
+++ b/wallpapers/sea-house-spirited-away-2560×1440.jpg
Binary files differ
diff --git a/wallpapers/slowpoke.jpg b/wallpapers/slowpoke.jpg
new file mode 100644
index 0000000..8ebf502
--- /dev/null
+++ b/wallpapers/slowpoke.jpg
Binary files differ
diff --git a/wallpapers/snorlax.jpg b/wallpapers/snorlax.jpg
new file mode 100644
index 0000000..96bff3c
--- /dev/null
+++ b/wallpapers/snorlax.jpg
Binary files differ
diff --git a/wallpapers/typhlosion.jpg b/wallpapers/typhlosion.jpg
new file mode 100644
index 0000000..5fcc122
--- /dev/null
+++ b/wallpapers/typhlosion.jpg
Binary files differ
diff --git a/wallpapers/umbreon.jpg b/wallpapers/umbreon.jpg
new file mode 100644
index 0000000..de41fdb
--- /dev/null
+++ b/wallpapers/umbreon.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-103929.png b/wallpapers/wallhaven-103929.png
new file mode 100644
index 0000000..7764444
--- /dev/null
+++ b/wallpapers/wallhaven-103929.png
Binary files differ
diff --git a/wallpapers/wallhaven-109635.jpg b/wallpapers/wallhaven-109635.jpg
new file mode 100644
index 0000000..c06379d
--- /dev/null
+++ b/wallpapers/wallhaven-109635.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-113202.jpg b/wallpapers/wallhaven-113202.jpg
new file mode 100644
index 0000000..4456b0d
--- /dev/null
+++ b/wallpapers/wallhaven-113202.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-114805.jpg b/wallpapers/wallhaven-114805.jpg
new file mode 100644
index 0000000..43b3a54
--- /dev/null
+++ b/wallpapers/wallhaven-114805.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-134336.jpg b/wallpapers/wallhaven-134336.jpg
new file mode 100644
index 0000000..9197387
--- /dev/null
+++ b/wallpapers/wallhaven-134336.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-13623.jpg b/wallpapers/wallhaven-13623.jpg
new file mode 100644
index 0000000..27ccfe5
--- /dev/null
+++ b/wallpapers/wallhaven-13623.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-152672.jpg b/wallpapers/wallhaven-152672.jpg
new file mode 100644
index 0000000..5600902
--- /dev/null
+++ b/wallpapers/wallhaven-152672.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-154036.jpg b/wallpapers/wallhaven-154036.jpg
new file mode 100644
index 0000000..f16259c
--- /dev/null
+++ b/wallpapers/wallhaven-154036.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-157.jpg b/wallpapers/wallhaven-157.jpg
new file mode 100644
index 0000000..6562feb
--- /dev/null
+++ b/wallpapers/wallhaven-157.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-15767.jpg b/wallpapers/wallhaven-15767.jpg
new file mode 100644
index 0000000..7a3e69a
--- /dev/null
+++ b/wallpapers/wallhaven-15767.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-164029.png b/wallpapers/wallhaven-164029.png
new file mode 100644
index 0000000..99950e0
--- /dev/null
+++ b/wallpapers/wallhaven-164029.png
Binary files differ
diff --git a/wallpapers/wallhaven-164037.jpg b/wallpapers/wallhaven-164037.jpg
new file mode 100644
index 0000000..93db74f
--- /dev/null
+++ b/wallpapers/wallhaven-164037.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-17773.jpg b/wallpapers/wallhaven-17773.jpg
new file mode 100644
index 0000000..6189c19
--- /dev/null
+++ b/wallpapers/wallhaven-17773.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-192010.jpg b/wallpapers/wallhaven-192010.jpg
new file mode 100644
index 0000000..4dff785
--- /dev/null
+++ b/wallpapers/wallhaven-192010.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-20691.jpg b/wallpapers/wallhaven-20691.jpg
new file mode 100644
index 0000000..368b01a
--- /dev/null
+++ b/wallpapers/wallhaven-20691.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-22782.jpg b/wallpapers/wallhaven-22782.jpg
new file mode 100644
index 0000000..d611548
--- /dev/null
+++ b/wallpapers/wallhaven-22782.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-264484.jpg b/wallpapers/wallhaven-264484.jpg
new file mode 100644
index 0000000..f6cf688
--- /dev/null
+++ b/wallpapers/wallhaven-264484.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-28204.jpg b/wallpapers/wallhaven-28204.jpg
new file mode 100644
index 0000000..8312a12
--- /dev/null
+++ b/wallpapers/wallhaven-28204.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-2986.jpg b/wallpapers/wallhaven-2986.jpg
new file mode 100644
index 0000000..54301d9
--- /dev/null
+++ b/wallpapers/wallhaven-2986.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-310.jpg b/wallpapers/wallhaven-310.jpg
new file mode 100644
index 0000000..038a860
--- /dev/null
+++ b/wallpapers/wallhaven-310.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-356350.jpg b/wallpapers/wallhaven-356350.jpg
new file mode 100644
index 0000000..4946ecd
--- /dev/null
+++ b/wallpapers/wallhaven-356350.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-421330.png b/wallpapers/wallhaven-421330.png
new file mode 100644
index 0000000..4540152
--- /dev/null
+++ b/wallpapers/wallhaven-421330.png
Binary files differ
diff --git a/wallpapers/wallhaven-433992.png b/wallpapers/wallhaven-433992.png
new file mode 100644
index 0000000..ec3eb5b
--- /dev/null
+++ b/wallpapers/wallhaven-433992.png
Binary files differ
diff --git a/wallpapers/wallhaven-43843.jpg b/wallpapers/wallhaven-43843.jpg
new file mode 100644
index 0000000..f38c9e7
--- /dev/null
+++ b/wallpapers/wallhaven-43843.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-440501.jpg b/wallpapers/wallhaven-440501.jpg
new file mode 100644
index 0000000..001077c
--- /dev/null
+++ b/wallpapers/wallhaven-440501.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-441571.png b/wallpapers/wallhaven-441571.png
new file mode 100644
index 0000000..c141657
--- /dev/null
+++ b/wallpapers/wallhaven-441571.png
Binary files differ
diff --git a/wallpapers/wallhaven-48652.jpg b/wallpapers/wallhaven-48652.jpg
new file mode 100644
index 0000000..9618cda
--- /dev/null
+++ b/wallpapers/wallhaven-48652.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-4914.jpg b/wallpapers/wallhaven-4914.jpg
new file mode 100644
index 0000000..bbf02f9
--- /dev/null
+++ b/wallpapers/wallhaven-4914.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-50898.png b/wallpapers/wallhaven-50898.png
new file mode 100644
index 0000000..67545d6
--- /dev/null
+++ b/wallpapers/wallhaven-50898.png
Binary files differ
diff --git a/wallpapers/wallhaven-5168.png b/wallpapers/wallhaven-5168.png
new file mode 100644
index 0000000..400920b
--- /dev/null
+++ b/wallpapers/wallhaven-5168.png
Binary files differ
diff --git a/wallpapers/wallhaven-52603.jpg b/wallpapers/wallhaven-52603.jpg
new file mode 100644
index 0000000..e682ef1
--- /dev/null
+++ b/wallpapers/wallhaven-52603.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-64346.png b/wallpapers/wallhaven-64346.png
new file mode 100644
index 0000000..f69a20e
--- /dev/null
+++ b/wallpapers/wallhaven-64346.png
Binary files differ
diff --git a/wallpapers/wallhaven-66430.jpg b/wallpapers/wallhaven-66430.jpg
new file mode 100644
index 0000000..750c1e3
--- /dev/null
+++ b/wallpapers/wallhaven-66430.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-75547.jpg b/wallpapers/wallhaven-75547.jpg
new file mode 100644
index 0000000..87c7572
--- /dev/null
+++ b/wallpapers/wallhaven-75547.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-80073.jpg b/wallpapers/wallhaven-80073.jpg
new file mode 100644
index 0000000..c89ec7a
--- /dev/null
+++ b/wallpapers/wallhaven-80073.jpg
Binary files differ
diff --git a/wallpapers/wallhaven-89245.png b/wallpapers/wallhaven-89245.png
new file mode 100644
index 0000000..f01e592
--- /dev/null
+++ b/wallpapers/wallhaven-89245.png
Binary files differ
diff --git a/wallpapers/wallhaven-89936.jpg b/wallpapers/wallhaven-89936.jpg
new file mode 100644
index 0000000..a7e61d3
--- /dev/null
+++ b/wallpapers/wallhaven-89936.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1031754.png b/wallpapers/wallpaper-1031754.png
new file mode 100644
index 0000000..ed8e79d
--- /dev/null
+++ b/wallpapers/wallpaper-1031754.png
Binary files differ
diff --git a/wallpapers/wallpaper-1092661.png b/wallpapers/wallpaper-1092661.png
new file mode 100644
index 0000000..e12e007
--- /dev/null
+++ b/wallpapers/wallpaper-1092661.png
Binary files differ
diff --git a/wallpapers/wallpaper-1096348.png b/wallpapers/wallpaper-1096348.png
new file mode 100644
index 0000000..6b07556
--- /dev/null
+++ b/wallpapers/wallpaper-1096348.png
Binary files differ
diff --git a/wallpapers/wallpaper-1170647.jpg b/wallpapers/wallpaper-1170647.jpg
new file mode 100644
index 0000000..301cd55
--- /dev/null
+++ b/wallpapers/wallpaper-1170647.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1233776.jpg b/wallpapers/wallpaper-1233776.jpg
new file mode 100644
index 0000000..7bb28f7
--- /dev/null
+++ b/wallpapers/wallpaper-1233776.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1259135.jpg b/wallpapers/wallpaper-1259135.jpg
new file mode 100644
index 0000000..74377ca
--- /dev/null
+++ b/wallpapers/wallpaper-1259135.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1335059.jpg b/wallpapers/wallpaper-1335059.jpg
new file mode 100644
index 0000000..b8d54f2
--- /dev/null
+++ b/wallpapers/wallpaper-1335059.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1571358.jpg b/wallpapers/wallpaper-1571358.jpg
new file mode 100644
index 0000000..069f16c
--- /dev/null
+++ b/wallpapers/wallpaper-1571358.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1673697.jpg b/wallpapers/wallpaper-1673697.jpg
new file mode 100644
index 0000000..14f5705
--- /dev/null
+++ b/wallpapers/wallpaper-1673697.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1727148.jpg b/wallpapers/wallpaper-1727148.jpg
new file mode 100644
index 0000000..1307852
--- /dev/null
+++ b/wallpapers/wallpaper-1727148.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1845598.jpg b/wallpapers/wallpaper-1845598.jpg
new file mode 100644
index 0000000..cd7e565
--- /dev/null
+++ b/wallpapers/wallpaper-1845598.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-1856538.jpg b/wallpapers/wallpaper-1856538.jpg
new file mode 100644
index 0000000..3f84b48
--- /dev/null
+++ b/wallpapers/wallpaper-1856538.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2020049.png b/wallpapers/wallpaper-2020049.png
new file mode 100644
index 0000000..eef8f94
--- /dev/null
+++ b/wallpapers/wallpaper-2020049.png
Binary files differ
diff --git a/wallpapers/wallpaper-2098909.jpg b/wallpapers/wallpaper-2098909.jpg
new file mode 100644
index 0000000..6c661f9
--- /dev/null
+++ b/wallpapers/wallpaper-2098909.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2123373.jpg b/wallpapers/wallpaper-2123373.jpg
new file mode 100644
index 0000000..e9b5243
--- /dev/null
+++ b/wallpapers/wallpaper-2123373.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2292757.jpg b/wallpapers/wallpaper-2292757.jpg
new file mode 100644
index 0000000..07a4060
--- /dev/null
+++ b/wallpapers/wallpaper-2292757.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2383182.jpg b/wallpapers/wallpaper-2383182.jpg
new file mode 100644
index 0000000..aac5942
--- /dev/null
+++ b/wallpapers/wallpaper-2383182.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2404915.jpg b/wallpapers/wallpaper-2404915.jpg
new file mode 100644
index 0000000..d65ca23
--- /dev/null
+++ b/wallpapers/wallpaper-2404915.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2451854.jpg b/wallpapers/wallpaper-2451854.jpg
new file mode 100644
index 0000000..1aff9d4
--- /dev/null
+++ b/wallpapers/wallpaper-2451854.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2462730.jpg b/wallpapers/wallpaper-2462730.jpg
new file mode 100644
index 0000000..7764691
--- /dev/null
+++ b/wallpapers/wallpaper-2462730.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2468040.jpg b/wallpapers/wallpaper-2468040.jpg
new file mode 100644
index 0000000..fe42909
--- /dev/null
+++ b/wallpapers/wallpaper-2468040.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2469209.jpg b/wallpapers/wallpaper-2469209.jpg
new file mode 100644
index 0000000..f827a2b
--- /dev/null
+++ b/wallpapers/wallpaper-2469209.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2514662.jpg b/wallpapers/wallpaper-2514662.jpg
new file mode 100644
index 0000000..e132edb
--- /dev/null
+++ b/wallpapers/wallpaper-2514662.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2547585.jpg b/wallpapers/wallpaper-2547585.jpg
new file mode 100644
index 0000000..db40298
--- /dev/null
+++ b/wallpapers/wallpaper-2547585.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2552963.jpg b/wallpapers/wallpaper-2552963.jpg
new file mode 100644
index 0000000..c503913
--- /dev/null
+++ b/wallpapers/wallpaper-2552963.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2571307.jpg b/wallpapers/wallpaper-2571307.jpg
new file mode 100644
index 0000000..1d3c5ed
--- /dev/null
+++ b/wallpapers/wallpaper-2571307.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2571513.jpg b/wallpapers/wallpaper-2571513.jpg
new file mode 100644
index 0000000..90e2cf4
--- /dev/null
+++ b/wallpapers/wallpaper-2571513.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2576834.jpg b/wallpapers/wallpaper-2576834.jpg
new file mode 100644
index 0000000..89e9754
--- /dev/null
+++ b/wallpapers/wallpaper-2576834.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2594238.png b/wallpapers/wallpaper-2594238.png
new file mode 100644
index 0000000..7d6910d
--- /dev/null
+++ b/wallpapers/wallpaper-2594238.png
Binary files differ
diff --git a/wallpapers/wallpaper-2626467.jpg b/wallpapers/wallpaper-2626467.jpg
new file mode 100644
index 0000000..3a9bb82
--- /dev/null
+++ b/wallpapers/wallpaper-2626467.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2644066.jpg b/wallpapers/wallpaper-2644066.jpg
new file mode 100644
index 0000000..8212462
--- /dev/null
+++ b/wallpapers/wallpaper-2644066.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2761476.png b/wallpapers/wallpaper-2761476.png
new file mode 100644
index 0000000..164ab56
--- /dev/null
+++ b/wallpapers/wallpaper-2761476.png
Binary files differ
diff --git a/wallpapers/wallpaper-2774743.png b/wallpapers/wallpaper-2774743.png
new file mode 100644
index 0000000..ee418a2
--- /dev/null
+++ b/wallpapers/wallpaper-2774743.png
Binary files differ
diff --git a/wallpapers/wallpaper-2794845.png b/wallpapers/wallpaper-2794845.png
new file mode 100644
index 0000000..364595d
--- /dev/null
+++ b/wallpapers/wallpaper-2794845.png
Binary files differ
diff --git a/wallpapers/wallpaper-2795513.png b/wallpapers/wallpaper-2795513.png
new file mode 100644
index 0000000..ffbc221
--- /dev/null
+++ b/wallpapers/wallpaper-2795513.png
Binary files differ
diff --git a/wallpapers/wallpaper-2827849.jpg b/wallpapers/wallpaper-2827849.jpg
new file mode 100644
index 0000000..73c1a61
--- /dev/null
+++ b/wallpapers/wallpaper-2827849.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2831602.png b/wallpapers/wallpaper-2831602.png
new file mode 100644
index 0000000..63934b4
--- /dev/null
+++ b/wallpapers/wallpaper-2831602.png
Binary files differ
diff --git a/wallpapers/wallpaper-2845795.png b/wallpapers/wallpaper-2845795.png
new file mode 100644
index 0000000..58c3595
--- /dev/null
+++ b/wallpapers/wallpaper-2845795.png
Binary files differ
diff --git a/wallpapers/wallpaper-2849326.jpg b/wallpapers/wallpaper-2849326.jpg
new file mode 100644
index 0000000..8d12fed
--- /dev/null
+++ b/wallpapers/wallpaper-2849326.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2905680.jpg b/wallpapers/wallpaper-2905680.jpg
new file mode 100644
index 0000000..1e7b37a
--- /dev/null
+++ b/wallpapers/wallpaper-2905680.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2912392.png b/wallpapers/wallpaper-2912392.png
new file mode 100644
index 0000000..80d17f9
--- /dev/null
+++ b/wallpapers/wallpaper-2912392.png
Binary files differ
diff --git a/wallpapers/wallpaper-2917632.jpg b/wallpapers/wallpaper-2917632.jpg
new file mode 100644
index 0000000..a2fcc46
--- /dev/null
+++ b/wallpapers/wallpaper-2917632.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2940335.jpg b/wallpapers/wallpaper-2940335.jpg
new file mode 100644
index 0000000..7ea4c3f
--- /dev/null
+++ b/wallpapers/wallpaper-2940335.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2940344.jpg b/wallpapers/wallpaper-2940344.jpg
new file mode 100644
index 0000000..7c884d7
--- /dev/null
+++ b/wallpapers/wallpaper-2940344.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2940924.jpg b/wallpapers/wallpaper-2940924.jpg
new file mode 100644
index 0000000..90b85e8
--- /dev/null
+++ b/wallpapers/wallpaper-2940924.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2986307.jpg b/wallpapers/wallpaper-2986307.jpg
new file mode 100644
index 0000000..185e941
--- /dev/null
+++ b/wallpapers/wallpaper-2986307.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-2994852.jpg b/wallpapers/wallpaper-2994852.jpg
new file mode 100644
index 0000000..894a346
--- /dev/null
+++ b/wallpapers/wallpaper-2994852.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-432387.jpg b/wallpapers/wallpaper-432387.jpg
new file mode 100644
index 0000000..f9fb865
--- /dev/null
+++ b/wallpapers/wallpaper-432387.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-678322.jpg b/wallpapers/wallpaper-678322.jpg
new file mode 100644
index 0000000..829a763
--- /dev/null
+++ b/wallpapers/wallpaper-678322.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-744402.jpg b/wallpapers/wallpaper-744402.jpg
new file mode 100644
index 0000000..4756936
--- /dev/null
+++ b/wallpapers/wallpaper-744402.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-756794.jpg b/wallpapers/wallpaper-756794.jpg
new file mode 100644
index 0000000..71aba03
--- /dev/null
+++ b/wallpapers/wallpaper-756794.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-798984.jpg b/wallpapers/wallpaper-798984.jpg
new file mode 100644
index 0000000..b52f7e9
--- /dev/null
+++ b/wallpapers/wallpaper-798984.jpg
Binary files differ
diff --git a/wallpapers/wallpaper-897227.jpg b/wallpapers/wallpaper-897227.jpg
new file mode 100644
index 0000000..2a323a4
--- /dev/null
+++ b/wallpapers/wallpaper-897227.jpg
Binary files differ
diff --git a/wallpapers/zapdos.jpg b/wallpapers/zapdos.jpg
new file mode 100644
index 0000000..6f6fdf3
--- /dev/null
+++ b/wallpapers/zapdos.jpg
Binary files differ
diff --git a/zsh/aliases b/zsh/aliases
new file mode 100644
index 0000000..1c71cea
--- /dev/null
+++ b/zsh/aliases
@@ -0,0 +1,38 @@
+alias grep='grep --color=auto'
+alias lal='ls -la'
+
+alias src='cd ~/src/'
+alias s='src && ls'
+alias gosrc='cd ~/src/go/src'
+alias gs='gosrc && ls'
+
+alias t='tmuxn'
+alias tmuxn='tmux new -s'
+alias ta='tmuxa'
+alias tmuxa='tmux attach -d -t'
+alias tls='tmux ls'
+
+alias cb='xsel -bi; xsel -bo'
+
+alias rsyncv='rsync -av --progress'
+
+function psgrep {
+ ps aux | grep -P "[^]]$1"
+}
+
+function pskill {
+ PROCS=$(psgrep "$1")
+ echo "$PROCS"
+ echo "$PROCS" | awk '{print $2}' | xargs kill
+}
+
+# takes in a search regex and a replace string, and does a recursive
+# find/replace inside the current directory. Safe to run on repos with .git
+# folders and shit like that
+function agsed {
+ search="$1"
+ replace="$2"
+ files=$(ag "$search" -l0)
+ echo -n "$files" | xargs -0 -n1 echo
+ echo -n "$files" | xargs -0 sed -i "s/$search/$replace/g"
+}
diff --git a/zsh/custom/themes/mediocregopher.zsh-theme b/zsh/custom/themes/mediocregopher.zsh-theme
new file mode 100644
index 0000000..529f46b
--- /dev/null
+++ b/zsh/custom/themes/mediocregopher.zsh-theme
@@ -0,0 +1,23 @@
+#!/usr/bin/env zsh
+
+# Unique string based on hostname
+sha1=$(echo $(hostname) | sha1sum | awk '{print $1}' | grep -oP '[0-9a-f]{8}' | head -n1)
+# Turn sha1 into int
+asint=$(printf "%d" 0x$sha1)
+
+colorint=$(printf "%03d" $(expr $asint % 255))
+color=$FG[$colorint]
+
+PROMPT='%{$color%} %~%{$reset_color%}$(git_prompt_info)$(git_prompt_status)%{$reset_color%} :: '
+
+ZSH_THEME_GIT_PROMPT_PREFIX=" ::%{$fg[green]%} "
+ZSH_THEME_GIT_PROMPT_SUFFIX=""
+ZSH_THEME_GIT_PROMPT_DIRTY=""
+ZSH_THEME_GIT_PROMPT_CLEAN=""
+
+ZSH_THEME_GIT_PROMPT_ADDED=" +"
+ZSH_THEME_GIT_PROMPT_MODIFIED=" ^"
+ZSH_THEME_GIT_PROMPT_DELETED=" -"
+ZSH_THEME_GIT_PROMPT_RENAMED=" >"
+ZSH_THEME_GIT_PROMPT_UNMERGED=" @"
+ZSH_THEME_GIT_PROMPT_UNTRACKED=" *"
diff --git a/zsh/default.nix b/zsh/default.nix
new file mode 100644
index 0000000..5071c9f
--- /dev/null
+++ b/zsh/default.nix
@@ -0,0 +1,31 @@
+{
+
+ pkgs ? (import ../pkgs.nix) {},
+
+}: rec {
+
+ ohMyZsh = ./oh-my-zsh;
+
+ zshrc = pkgs.writeTextDir ".zshrc" ''
+
+ # oh-my-zsh
+ export ZSH=${pkgs.oh-my-zsh}/share/oh-my-zsh
+ ZSH_CUSTOM=${./custom}
+ ZSH_THEME=mediocregopher
+ DISABLE_AUTO_UPDATE=true
+ plugins=(git vi-mode)
+ source $ZSH/oh-my-zsh.sh
+
+ PATH=${../bin}:$PATH
+
+ . ${./zshrc}
+ . ${./env}
+ . ${./aliases}
+ . ${pkgs.nix}/etc/profile.d/nix.sh
+ '';
+
+ zsh = pkgs.writeScriptBin "zsh" ''
+ #!${pkgs.bash}/bin/bash
+ ZDOTDIR=${zshrc} exec ${pkgs.zsh}/bin/zsh "$@"
+ '';
+}
diff --git a/zsh/env b/zsh/env
new file mode 100644
index 0000000..0188d76
--- /dev/null
+++ b/zsh/env
@@ -0,0 +1,18 @@
+#Global stuff shitty programs use
+export EDITOR=~/.nix-profile/bin/nvim
+
+#Basics
+export PATH=$PATH:/bin
+export PATH=$PATH:/usr/bin
+export PATH=$PATH:/usr/local/bin
+
+#my shit
+export PATH=~/bin:$PATH
+
+#Go has its own path system. Way to be difficult go
+export GOPATH=~/.go
+export GOBIN=$GOPATH/bin
+export PATH=$GOPATH/bin:$PATH
+
+# GPG is needy
+export GPG_TTY=$(tty)
diff --git a/zsh/zshrc b/zsh/zshrc
new file mode 100644
index 0000000..c939401
--- /dev/null
+++ b/zsh/zshrc
@@ -0,0 +1,18 @@
+#Correctly background processes
+setopt nohup
+
+#Stop zsh from stupidly asking me to correct vim to .vim
+unsetopt correctall
+
+#Bind my shit
+bindkey -s "\eu" "cd ..\n" #cd up
+
+#Turn off share history
+unsetopt share_history
+
+#zmv is the bee's-knees
+autoload -U zmv
+
+# Save ssh password within a terminal
+eval $(ssh-agent) 2>&1 >/dev/null
+trap "kill $SSH_AGENT_PID" 0