summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/dunst/dunstrc58
-rw-r--r--.config/git/config26
-rw-r--r--.config/git/gitignore199
-rw-r--r--.config/i3/config281
-rw-r--r--.config/i3status/config83
-rw-r--r--.config/mimeapps.list34
-rw-r--r--.config/texts/setsail26
-rw-r--r--.config/texts/todo.md4
-rw-r--r--.config/user-dirs.dirs15
-rw-r--r--.config/user-dirs.locale1
-rw-r--r--.config/vim/autoload/pathogen.vim264
-rw-r--r--.config/vim/colors/cyberpunk.vim136
-rw-r--r--.config/vim/colors/jellybeans.vim673
-rw-r--r--.config/vim/compiler/futhark.vim17
-rw-r--r--.config/vim/ftdetect/cpp.vim2
-rw-r--r--.config/vim/ftdetect/cu.vim1
-rw-r--r--.config/vim/ftdetect/fut.vim2
-rw-r--r--.config/vim/ftdetect/tex.vim9
-rw-r--r--.config/vim/ftplugin/fut.vim8
-rw-r--r--.config/vim/indent/fsharp.vim249
-rw-r--r--.config/vim/indent/fut.vim90
-rw-r--r--.config/vim/syntax/fut.vim53
-rw-r--r--.config/vim/vimrc117
-rw-r--r--.config/vimrc129
-rw-r--r--.config/x/defaults60
-rw-r--r--.config/xinitrc7
-rw-r--r--.config/zathura/zathurarc4
-rw-r--r--.config/zsh/.zshrc233
-rw-r--r--.xinitrc7
-rw-r--r--.zprofile47
30 files changed, 2835 insertions, 0 deletions
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..2fda75d
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,58 @@
+[global]
+alignment = left
+bounce_freq = 0
+browser = /usr/bin/firefox-developer-edition -new-tab
+dmenu = /usr/bin/dmenu -p dunst:
+follow = none
+font = DejaVuSansMono Nerd Font Mono 11
+#font = Iosevka Term 11
+format = "<b>%s</b>\n%b"
+frame_color = "#8EC07C"
+frame_width = 3
+geometry = "300x50-15+49"
+hide_duplicates_count = yes
+history_length = 15
+horizontal_padding = 6
+icon_path = /usr/share/icons/Arc/mimetypes/16:/usr/share/icons/Arc/status/48:/usr/share/icons/Arc/devices/16:/usr/share/icons/Arc/emblems/48
+#icon_path = /usr/share/icons/Paper/16x16/mimetypes/:/usr/share/icons/Paper/48x48/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/48x48/notifications/:/usr/share/icons/Paper/48x48/emblems/
+icon_position = off
+idle_threshold = 0
+ignore_newline = no
+indicate_hidden = yes
+line_height = 3
+markup = yes
+max_icon_size = 80
+monitor = 0
+padding = 6
+plain_text = no
+separator_color = frame
+separator_height = 2
+show_age_threshold = -1
+show_indicators = no
+shrink = no
+sort = no
+stack_duplicates = yes
+startup_notification = false
+sticky_history = yes
+transparency = 5
+word_wrap = yes
+[shortcuts]
+close = ctrl+space
+close_all = ctrl+shift+space
+history = ctrl+grave
+context = ctrl+shift+period
+[urgency_low]
+frame_color = "#3B7C87"
+foreground = "#3B7C87"
+background = "#191311"
+timeout = 4
+[urgency_normal]
+frame_color = "#5B8234"
+foreground = "#5B8234"
+background = "#191311"
+timeout = 6
+[urgency_critical]
+frame_color = "#B7472A"
+foreground = "#B7472A"
+background = "#191311"
+timeout = 8
diff --git a/.config/git/config b/.config/git/config
new file mode 100644
index 0000000..f54ac6c
--- /dev/null
+++ b/.config/git/config
@@ -0,0 +1,26 @@
+[user]
+ email = example@example.org
+ name = whoami
+ signingkey = example@example.org
+[core]
+ editor = vim
+ excludesfile = ~/.config/git/gitignore
+ pager = less -F -X
+[commit]
+ gpgsign = true
+[gpg]
+ program = gpg
+[diff]
+ tool = vimdiff
+[pull]
+ rebase = true
+[difftool]
+ prompt = false
+[mergetool]
+ vimdiff = true
+ prompt = false
+[alias]
+ d = difftool
+[merge]
+ tool = vimdiff
+ conflictstyle = diff3
diff --git a/.config/git/gitignore b/.config/git/gitignore
new file mode 100644
index 0000000..5c22bf0
--- /dev/null
+++ b/.config/git/gitignore
@@ -0,0 +1,199 @@
+## Core latex/pdflatex auxiliary files:
+*.aux
+*.lof
+*.log
+*.lot
+*.fls
+*.out
+*.toc
+*.fmt
+*.fot
+*.cb
+*.cb2
+*.tmp
+*.pdf
+
+__pychache__/
+
+# Some binaries
+*.png
+*.jpg
+
+## Intermediate documents:
+*.dvi
+*-converted-to.*
+# these rules might exclude image files for figures etc.
+# *.ps
+# *.eps
+# *.pdf
+
+## Bibliography auxiliary files (bibtex/biblatex/biber):
+*.bbl
+*.bcf
+*.blg
+*-blx.aux
+*-blx.bib
+*.brf
+*.run.xml
+
+## Build tool auxiliary files:
+*.fdb_latexmk
+*.synctex
+*.synctex.gz
+*.synctex.gz(busy)
+*.pdfsync
+
+## Auxiliary and intermediate files from other packages:
+# algorithms
+*.alg
+*.loa
+
+# achemso
+acs-*.bib
+
+# amsthm
+*.thm
+
+# beamer
+*.nav
+*.snm
+*.vrb
+
+# cprotect
+*.cpt
+
+# fixme
+*.lox
+
+#(r)(e)ledmac/(r)(e)ledpar
+*.end
+*.?end
+*.[1-9]
+*.[1-9][0-9]
+*.[1-9][0-9][0-9]
+*.[1-9]R
+*.[1-9][0-9]R
+*.[1-9][0-9][0-9]R
+*.eledsec[1-9]
+*.eledsec[1-9]R
+*.eledsec[1-9][0-9]
+*.eledsec[1-9][0-9]R
+*.eledsec[1-9][0-9][0-9]
+*.eledsec[1-9][0-9][0-9]R
+
+# glossaries
+*.acn
+*.acr
+*.glg
+*.glo
+*.gls
+*.glsdefs
+
+# gnuplottex
+*-gnuplottex-*
+
+# hyperref
+*.brf
+
+# knitr
+*-concordance.tex
+# TODO Comment the next line if you want to keep your tikz graphics files
+*.tikz
+*-tikzDictionary
+
+# listings
+*.lol
+
+# makeidx
+*.idx
+*.ilg
+*.ind
+*.ist
+
+# minitoc
+*.maf
+*.mlf
+*.mlt
+*.mtc
+*.mtc[0-9]
+*.mtc[1-9][0-9]
+
+# minted
+_minted*
+*.pyg
+*.pyc
+# *.ipynb
+
+# morewrites
+*.mw
+
+# mylatexformat
+*.fmt
+
+# nomencl
+*.nlo
+
+# sagetex
+*.sagetex.sage
+*.sagetex.py
+*.sagetex.scmd
+
+# sympy
+*.sout
+*.sympy
+sympy-plots-for-*.tex/
+
+# pdfcomment
+*.upa
+*.upb
+
+# pythontex
+*.pytxcode
+pythontex-files-*/
+
+# thmtools
+*.loe
+
+# TikZ & PGF
+*.dpth
+*.md5
+*.auxlock
+
+# todonotes
+*.tdo
+
+# xindy
+*.xdy
+
+# xypic precompiled matrices
+*.xyc
+
+# endfloat
+*.ttt
+*.fff
+
+## Editors:
+# WinEdt
+*.bak
+*.sav
+
+# Texpad
+.texpadtmp
+
+# Kile
+*.backup
+
+# KBibTeX
+*~[0-9]*
+
+*.exe
+*.o
+*.out
+
+# Vim
+*.swp
+*.swo
+*.zip
+
+tags
+.tags
diff --git a/.config/i3/config b/.config/i3/config
new file mode 100644
index 0000000..37383e5
--- /dev/null
+++ b/.config/i3/config
@@ -0,0 +1,281 @@
+# i3 config file (v4)
+# Please see http://i3wm.org/docs/userguide.html for a complete reference!
+set $mod Mod4
+
+### Variables
+# Logo key. Use Mod1 for Alt.
+set $mod Mod4
+# Your preferred #terminal emulator
+set $term st
+# Home row direction keys, like vim
+set $left h
+set $down j
+set $up k
+set $right l
+
+font pango: DejaVuSans Mono Nerd Font Mono 12
+
+
+### Output configuration
+
+# Default wallpaper (more resolutions are available in /usr/share/sway/)
+exec_always feh --bg-scale $HOME/pictures/bg2.png
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+### Key bindings
+ # start a terminal
+ #bindsym $mod+Return exec $term -f "DejaVuSansMono Nerd Font Mono:pixelsize=16"
+ bindsym $mod+Return exec $term
+ bindsym $mod+e exec urxvt -bg '[50]#000000' -g 220x40 -t float -e nnn
+ bindsym $mod+Shift+Return exec $term -t float
+ bindsym $mod+Shift+p exec $term -f ":pixelsize=24"
+ bindsym $mod+Shift+o exec $term -f ":pixelsize=18"
+ bindsym $mod+p exec feh -^ float_sticky -R 15 https://www.cafeen.org/test.php
+ bindsym Print exec import -window root -display :0 ~/scr.png && xclip -selection clip -t image/png ~/scr.png
+ bindsym $mod+c exec exec $term -title float -e fsharpi --consolecolors+ --nologo --use:.scripts/fsharpinit.fsx
+ bindsym $mod+Shift+v exec exec $term -t float -e vim
+
+ # kill focused window
+ bindsym $mod+Shift+q kill
+
+ # start your launcher
+ # bindsym $mod+d exec $menu
+
+ bindsym $mod+Shift+d exec setxkbmap dk
+ bindsym $mod+Shift+s exec setxkbmap us
+
+ # Brightness control
+ bindsym XF86MonBrightnessDown exec brightnessctl s 10%-
+ bindsym XF86MonBrightnessUp exec brightnessctl s 10%+
+
+ # Volume control
+
+ bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pactl info | grep 'Default Sink' | sed -Ee 's/^.*: (.*)$/\1/g') -5%
+ bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pactl info | grep 'Default Sink' | sed -Ee 's/^.*: (.*)$/\1/g') +5%
+ bindsym XF86AudioMute exec pactl set-sink-mute $(pactl info | grep 'Default Sink' | sed -Ee 's/^.*: (.*)$/\1/g') toggle
+
+
+# Your preferred application launcher
+bindsym $mod+d exec dmenu_run -i -q -fn 'DejaVuSansMono Nerd Font Mono'
+#bindsym $mod+d exec rofi -show run -theme Pop-Dark
+# Lock your computer
+bindsym $mod+x exec i3lock -i $HOME/pictures/lock.png -t -f -e
+
+# Drag floating windows by holding down $mod and left mouse button.
+# Resize them with right mouse button + $mod.
+# Despite the name, also works for non-floating windows.
+# Change normal to inverse to use left mouse button for resizing and right
+# mouse button for dragging.
+#floating_modifier $mod normal
+
+# reload the configuration file
+bindsym $mod+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym $mod+Shift+r restart
+# exit i3 (logs you out of your X session)
+bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
+
+# split in horizontal orientation
+bindsym $mod+b split h
+
+# split in vertical orientation
+bindsym $mod+v split v
+
+#
+# Moving around:
+#
+ # Move your focus around
+ bindsym $mod+$left focus left
+ bindsym $mod+$down focus down
+ bindsym $mod+$up focus up
+ bindsym $mod+$right focus right
+ # or use $mod+[up|down|left|right]
+ bindsym $mod+Left focus left
+ bindsym $mod+Down focus down
+ bindsym $mod+Up focus up
+ bindsym $mod+Right focus right
+
+ # _move_ the focused window with the same, but add Shift
+ bindsym $mod+Shift+$left move left
+ bindsym $mod+Shift+$down move down
+ bindsym $mod+Shift+$up move up
+ bindsym $mod+Shift+$right move right
+ # ditto, with arrow keys
+ bindsym $mod+Shift+Left move left
+ bindsym $mod+Shift+Down move down
+ bindsym $mod+Shift+Up move up
+ bindsym $mod+Shift+Right move right
+#
+# Workspaces:
+#
+ set $ws0 "0:&#xf06d; "
+ set $ws1 "1:&#xf120; "
+ set $ws2 "2:&#xf269; "
+ set $ws3 "3:&#xf268; "
+ set $ws4 "4:&#xf0f4; "
+ set $ws5 "5:5"
+ set $ws6 "6:6"
+ set $ws7 "7:7"
+ set $ws8 "8:8"
+ set $ws9 "9:&#xf198; "
+ set $ws10 "10:&#xf868; "
+ # F1-12
+ set $wsf01 "11:f1"
+ set $wsf02 "12:f2"
+ set $wsf03 "13:f3"
+ set $wsf04 "14:f4"
+ set $wsf05 "15:f5"
+ set $wsf06 "16:f6"
+ set $wsf07 "17:f7"
+ set $wsf08 "18:f8"
+ set $wsf09 "19:f9"
+ set $wsf10 "20:f10"
+ set $wsf11 "21:f11"
+ set $wsf12 "22:f12"
+ # switch to workspace
+ bindsym $mod+grave workspace $ws0
+ bindsym $mod+onehalf workspace $ws0
+ bindsym $mod+1 workspace $ws1
+ bindsym $mod+2 workspace $ws2
+ bindsym $mod+3 workspace $ws3
+ bindsym $mod+4 workspace $ws4
+ bindsym $mod+5 workspace $ws5
+ bindsym $mod+6 workspace $ws6
+ bindsym $mod+7 workspace $ws7
+ bindsym $mod+8 workspace $ws8
+ bindsym $mod+9 workspace $ws9
+ bindsym $mod+0 workspace $ws10
+
+ bindsym $mod+F1 workspace $wsf01
+ bindsym $mod+F2 workspace $wsf02
+ bindsym $mod+F3 workspace $wsf03
+ bindsym $mod+F4 workspace $wsf04
+ bindsym $mod+F5 workspace $wsf05
+ bindsym $mod+F6 workspace $wsf06
+ bindsym $mod+F7 workspace $wsf07
+ bindsym $mod+F8 workspace $wsf08
+ bindsym $mod+F9 workspace $wsf09
+ bindsym $mod+F10 workspace $wsf10
+ bindsym $mod+F11 workspace $wsf11
+ bindsym $mod+F12 workspace $wsf12
+
+ # move focused container to workspace
+ bindsym $mod+Shift+grave move container to workspace $ws0
+ bindsym $mod+Shift+1 move container to workspace $ws1
+ bindsym $mod+Shift+2 move container to workspace $ws2
+ bindsym $mod+Shift+3 move container to workspace $ws3
+ bindsym $mod+Shift+4 move container to workspace $ws4
+ bindsym $mod+Shift+5 move container to workspace $ws5
+ bindsym $mod+Shift+6 move container to workspace $ws6
+ bindsym $mod+Shift+7 move container to workspace $ws7
+ bindsym $mod+Shift+8 move container to workspace $ws8
+ bindsym $mod+Shift+9 move container to workspace $ws9
+ bindsym $mod+Shift+0 move container to workspace $ws10
+
+ bindsym $mod+Shift+F1 move container to workspace $wsf01
+ bindsym $mod+Shift+F2 move container to workspace $wsf02
+ bindsym $mod+Shift+F3 move container to workspace $wsf03
+ bindsym $mod+Shift+F4 move container to workspace $wsf04
+ bindsym $mod+Shift+F5 move container to workspace $wsf05
+ bindsym $mod+Shift+F6 move container to workspace $wsf06
+ bindsym $mod+Shift+F7 move container to workspace $wsf07
+ bindsym $mod+Shift+F8 move container to workspace $wsf08
+ bindsym $mod+Shift+F9 move container to workspace $wsf09
+ bindsym $mod+Shift+F10 move container to workspace $wsf10
+ bindsym $mod+Shift+F11 move container to workspace $wsf11
+ bindsym $mod+Shift+F12 move container to workspace $wsf12
+
+# change container layout (stacked, tabbed, toggle split)
+#bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+s layout toggle split
+
+ # Make the current focus fullscreen
+bindsym $mod+f fullscreen toggle
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# Take webcam picture
+bindsym $mod+z exec python ~/.scripts/cam_capture
+
+# focus the child container
+#bindsym $mod+d focus child
+
+
+new_window pixel 1
+floating_maximum_size 1600 x 800
+
+hide_edge_borders both
+
+assign [class="firefox*"] workspace $ws2
+for_window [title="^test$"] floating enable
+for_window [title="Steam Guard*"] floating enable
+for_window [title="float"] floating enable
+for_window [title="sticky"] sticky enable
+for_window [title="(P|p)review"] floating enable
+for_window [class="firefox*"] floating disabled
+for_window [title="Opening*"] floating enabled
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+ # These bindings trigger as soon as you enter the resize mode
+
+ # Pressing left will shrink the window’s width.
+ # Pressing right will grow the window’s width.
+ # Pressing up will shrink the window’s height.
+ # Pressing down will grow the window’s height.
+ bindsym $left resize shrink width 10 px or 10 ppt
+ bindsym $down resize grow height 10 px or 10 ppt
+ bindsym $up resize shrink height 10 px or 10 ppt
+ bindsym $right resize grow width 10 px or 10 ppt
+
+ # same bindings, but for the arrow keys
+ bindsym Left resize shrink width 2 px or 2 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Up resize shrink height 2 px or 2 ppt
+ bindsym Right resize grow width 10 px or 10 ppt
+ # Bigger resize
+ bindsym Shift+Left resize shrink width 20 px or 20 ppt
+ bindsym Shift+Down resize grow height 40 px or 40 ppt
+ bindsym Shift+Up resize shrink height 20 px or 20 ppt
+ bindsym Shift+Right resize grow width 20 px or 20 ppt
+
+ # back to normal: Enter or Escape
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+bindsym $mod+r mode "resize"
+
+
+# Start i3bar to display a workspace bar (plus the system information i3status
+# finds out, if available)
+bar {
+ status_command i3status
+ position top
+ strip_workspace_numbers yes
+ font pango: DejaVu Sans, DejaVuSansMono Nerd Font 12
+ bindsym button4 nop
+ bindsym button5 nop
+ colors {
+ background #1a1a1a
+ statusline #bbbbbb
+ }
+}
+
+# class border backgr. text indicator child_border
+client.focused #444444 #444444 #ffffff #2e9ef4 #222222
+client.focused_inactive #444444 #444444 #ffffff #2e9ef4 #222222
+client.unfocused #222222 #222222 #aaaaaa #2e9ef4 #111111
+client.urgent #444444 #444444 #dd0000 #2e9ef4 #111111
+client.placeholder #444444 #444444 #ffffff #2e9ef4 #111111
+client.background #444444
diff --git a/.config/i3status/config b/.config/i3status/config
new file mode 100644
index 0000000..4990d5e
--- /dev/null
+++ b/.config/i3status/config
@@ -0,0 +1,83 @@
+# i3status configuration file.
+# see "man i3status" for documentation.
+
+# It is important that this file is edited as UTF-8.
+# The following line should contain a sharp s:
+# ß
+# If the above line is not correctly displayed, fix your editor first!
+
+general {
+ output_format = i3bar
+ colors = true
+ interval = 5
+ separator = " / "
+ color_good = "#68fc5a"
+ color_bad = "#fc785a"
+ color_degraded = "#fcf45a"
+}
+
+order += "volume master"
+order += "disk /"
+order += "disk /home"
+order += "wireless _first_"
+order += "ethernet enp0s31f6"
+order += "battery all"
+order += "cpu_usage"
+order += "cpu_temperature all"
+order += "time"
+
+volume master {
+ format = "墳 %volume"
+ format_muted = "奄 %volume"
+ device = "default"
+ mixer = "Master"
+ mixer_idx = 0
+}
+
+wireless _first_ {
+ # if you use %speed, i3status requires root privileges
+ format_up = " " # %ip (%speed)"
+ format_down = "" # "E: down"
+}
+
+ethernet enp0s31f6 {
+ # if you use %speed, i3status requires root privileges
+ format_up = " %ip" # %ip (%speed)"
+ format_down = "" # "E: down"
+}
+
+battery all {
+ format = "%status %percentage" # %remaining"
+ hide_seconds = true
+ integer_battery_capacity = true
+ status_unk = ""
+ status_chr = "" # "[&#xf0e7;]"
+ status_bat = "" # "[&#xf242;]"
+ status_full = "" # "&#xf242;"
+ format_down = ""
+ last_full_capacity = true
+ low_threshold = 35
+ threshold_type = percent
+}
+
+time {
+ format = "%Y-%m-%d %H:%M"
+}
+
+cpu_temperature all {
+ format = " %degrees°"
+ max_threshold = 50
+}
+
+cpu_usage {
+ format = " %usage"
+ max_threshold = 50
+}
+
+disk "/" {
+ format = " [%avail]"
+}
+
+disk "/home" {
+ format = " [%avail]"
+}
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
new file mode 100644
index 0000000..d428e42
--- /dev/null
+++ b/.config/mimeapps.list
@@ -0,0 +1,34 @@
+[Added Associations]
+application/pdf=com.github.xournalpp.xournalpp.desktop;org.pwmt.zathura-pdf-mupdf.desktop;org.gnome.Evince.desktop;firefox-developer-edition.desktop;
+text/plain=vim.desktop;
+application/postscript=org.gnome.Evince.desktop;firefox-developer-edition.desktop;
+unknown/unknown=vim.desktop;
+image/jpeg=vim.desktop;
+text/x-chdr=vim.desktop;
+text/markdown=firefox-developer-edition.desktop;
+application/zip=vim.desktop;
+x-scheme-handler/http=firefox-developer-edition.desktop;
+x-scheme-handler/https=firefox-developer-edition.desktop;
+x-scheme-handler/ftp=firefox-developer-edition.desktop;
+x-scheme-handler/chrome=firefox-developer-edition.desktop;
+text/html=firefox-developer-edition.desktop;
+application/x-extension-htm=firefox-developer-edition.desktop;
+application/x-extension-html=firefox-developer-edition.desktop;
+application/x-extension-shtml=firefox-developer-edition.desktop;
+application/xhtml+xml=firefox-developer-edition.desktop;
+application/x-extension-xhtml=firefox-developer-edition.desktop;
+application/x-extension-xht=firefox-developer-edition.desktop;
+application/gzip=vim.desktop;
+
+[Default Applications]
+x-scheme-handler/http=firefox-developer-edition.desktop
+x-scheme-handler/https=firefox-developer-edition.desktop
+x-scheme-handler/ftp=firefox-developer-edition.desktop
+x-scheme-handler/chrome=firefox-developer-edition.desktop
+text/html=firefox-developer-edition.desktop
+application/x-extension-htm=firefox-developer-edition.desktop
+application/x-extension-html=firefox-developer-edition.desktop
+application/x-extension-shtml=firefox-developer-edition.desktop
+application/xhtml+xml=firefox-developer-edition.desktop
+application/x-extension-xhtml=firefox-developer-edition.desktop
+application/x-extension-xht=firefox-developer-edition.desktop
diff --git a/.config/texts/setsail b/.config/texts/setsail
new file mode 100644
index 0000000..19ae457
--- /dev/null
+++ b/.config/texts/setsail
@@ -0,0 +1,26 @@
+-- .-""-.
+ ) ( )
+ ( ) (
+ / )
+ (_ _) 0_,-.__
+ (_ )_ |_.-._/
+ ( ) |lulz..\
+ (__) |__--_/
+ |'' ``\ |
+ | [Lulz] \ | /b/
+ | \ ,,,---===?A`\ | ,==y'
+ ___,,,,,---==""\ |M] \ | ;|\ |>
+ _ _ \ ___,|H,,---==""""bno,
+ o O (_) (_) \ / _ AWAW/
+ / _(+)_ dMM/
+ \@_,,,,,,---==" \ \\|// MW/
+--''''" === d/
+ // SET SAIL FOR FAIL!
+ ,'_________________________
+ \ \ \ \ ,/~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ _____ ,' ~~~ .-""-.~~~~~~ .-""-.
+ .-""-. ///==--- /`-._ ..-' -.__..-'
+ `-.__..-' =====\\\\\\ V/ .---\.
+ ~~~~~~~~~~~~, _',--/_.\ .-""-.
+ .-""-.___` -- \| -.__..-
+
diff --git a/.config/texts/todo.md b/.config/texts/todo.md
new file mode 100644
index 0000000..62cdc37
--- /dev/null
+++ b/.config/texts/todo.md
@@ -0,0 +1,4 @@
+# Todo
+
+* ...
+* ...
diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs
new file mode 100644
index 0000000..fe1bd70
--- /dev/null
+++ b/.config/user-dirs.dirs
@@ -0,0 +1,15 @@
+# This file is written by xdg-user-dirs-update
+# If you want to change or add directories, just edit the line you're
+# interested in. All local changes will be retained on the next run.
+# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
+# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
+# absolute path. No other format is supported.
+#
+XDG_DESKTOP_DIR="$HOME"
+XDG_DOWNLOAD_DIR="$HOME/downloads"
+XDG_TEMPLATES_DIR="$HOME"
+XDG_PUBLICSHARE_DIR="$HOME"
+XDG_DOCUMENTS_DIR="$HOME"
+XDG_MUSIC_DIR="$HOME"
+XDG_PICTURES_DIR="$HOME/pictures"
+XDG_VIDEOS_DIR="$HOME"
diff --git a/.config/user-dirs.locale b/.config/user-dirs.locale
new file mode 100644
index 0000000..4889c8e
--- /dev/null
+++ b/.config/user-dirs.locale
@@ -0,0 +1 @@
+en_GB \ No newline at end of file
diff --git a/.config/vim/autoload/pathogen.vim b/.config/vim/autoload/pathogen.vim
new file mode 100644
index 0000000..3582fbf
--- /dev/null
+++ b/.config/vim/autoload/pathogen.vim
@@ -0,0 +1,264 @@
+" pathogen.vim - path option manipulation
+" Maintainer: Tim Pope <http://tpo.pe/>
+" Version: 2.4
+
+" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
+"
+" For management of individually installed plugins in ~/.vim/bundle (or
+" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
+" .vimrc is the only other setup necessary.
+"
+" The API is documented inline below.
+
+if exists("g:loaded_pathogen") || &cp
+ finish
+endif
+let g:loaded_pathogen = 1
+
+" Point of entry for basic default usage. Give a relative path to invoke
+" pathogen#interpose() or an absolute path to invoke pathogen#surround().
+" Curly braces are expanded with pathogen#expand(): "bundle/{}" finds all
+" subdirectories inside "bundle" inside all directories in the runtime path.
+" If no arguments are given, defaults "bundle/{}", and also "pack/{}/start/{}"
+" on versions of Vim without native package support.
+function! pathogen#infect(...) abort
+ if a:0
+ let paths = filter(reverse(copy(a:000)), 'type(v:val) == type("")')
+ else
+ let paths = ['bundle/{}', 'pack/{}/start/{}']
+ endif
+ if has('packages')
+ call filter(paths, 'v:val !~# "^pack/[^/]*/start/[^/]*$"')
+ endif
+ let static = '^\%([$~\\/]\|\w:[\\/]\)[^{}*]*$'
+ for path in filter(copy(paths), 'v:val =~# static')
+ call pathogen#surround(path)
+ endfor
+ for path in filter(copy(paths), 'v:val !~# static')
+ if path =~# '^\%([$~\\/]\|\w:[\\/]\)'
+ call pathogen#surround(path)
+ else
+ call pathogen#interpose(path)
+ endif
+ endfor
+ call pathogen#cycle_filetype()
+ if pathogen#is_disabled($MYVIMRC)
+ return 'finish'
+ endif
+ return ''
+endfunction
+
+" Split a path into a list.
+function! pathogen#split(path) abort
+ if type(a:path) == type([]) | return a:path | endif
+ if empty(a:path) | return [] | endif
+ let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,')
+ return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")')
+endfunction
+
+" Convert a list to a path.
+function! pathogen#join(...) abort
+ if type(a:1) == type(1) && a:1
+ let i = 1
+ let space = ' '
+ else
+ let i = 0
+ let space = ''
+ endif
+ let path = ""
+ while i < a:0
+ if type(a:000[i]) == type([])
+ let list = a:000[i]
+ let j = 0
+ while j < len(list)
+ let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g')
+ let path .= ',' . escaped
+ let j += 1
+ endwhile
+ else
+ let path .= "," . a:000[i]
+ endif
+ let i += 1
+ endwhile
+ return substitute(path,'^,','','')
+endfunction
+
+" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
+function! pathogen#legacyjoin(...) abort
+ return call('pathogen#join',[1] + a:000)
+endfunction
+
+" Turn filetype detection off and back on again if it was already enabled.
+function! pathogen#cycle_filetype() abort
+ if exists('g:did_load_filetypes')
+ filetype off
+ filetype on
+ endif
+endfunction
+
+" Check if a bundle is disabled. A bundle is considered disabled if its
+" basename or full name is included in the list g:pathogen_blacklist or the
+" comma delimited environment variable $VIMBLACKLIST.
+function! pathogen#is_disabled(path) abort
+ if a:path =~# '\~$'
+ return 1
+ endif
+ let sep = pathogen#slash()
+ let blacklist = get(g:, 'pathogen_blacklist', get(g:, 'pathogen_disabled', [])) + pathogen#split($VIMBLACKLIST)
+ if !empty(blacklist)
+ call map(blacklist, 'substitute(v:val, "[\\/]$", "", "")')
+ endif
+ return index(blacklist, fnamemodify(a:path, ':t')) != -1 || index(blacklist, a:path) != -1
+endfunction
+
+" Prepend the given directory to the runtime path and append its corresponding
+" after directory. Curly braces are expanded with pathogen#expand().
+function! pathogen#surround(path) abort
+ let sep = pathogen#slash()
+ let rtp = pathogen#split(&rtp)
+ let path = fnamemodify(a:path, ':s?[\\/]\=$??')
+ let before = filter(pathogen#expand(path), '!pathogen#is_disabled(v:val)')
+ let after = filter(reverse(pathogen#expand(path, sep.'after')), '!pathogen#is_disabled(v:val[0:-7])')
+ call filter(rtp, 'index(before + after, v:val) == -1')
+ let &rtp = pathogen#join(before, rtp, after)
+ return &rtp
+endfunction
+
+" For each directory in the runtime path, add a second entry with the given
+" argument appended. Curly braces are expanded with pathogen#expand().
+function! pathogen#interpose(name) abort
+ let sep = pathogen#slash()
+ let name = a:name
+ if has_key(s:done_bundles, name)
+ return ""
+ endif
+ let s:done_bundles[name] = 1
+ let list = []
+ for dir in pathogen#split(&rtp)
+ if dir =~# '\<after$'
+ let list += reverse(filter(pathogen#expand(dir[0:-6].name, sep.'after'), '!pathogen#is_disabled(v:val[0:-7])')) + [dir]
+ else
+ let list += [dir] + filter(pathogen#expand(dir.sep.name), '!pathogen#is_disabled(v:val)')
+ endif
+ endfor
+ let &rtp = pathogen#join(pathogen#uniq(list))
+ return 1
+endfunction
+
+let s:done_bundles = {}
+
+" Invoke :helptags on all non-$VIM doc directories in runtimepath.
+function! pathogen#helptags() abort
+ let sep = pathogen#slash()
+ for glob in pathogen#split(&rtp)
+ for dir in map(split(glob(glob), "\n"), 'v:val.sep."/doc/".sep')
+ if (dir)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir) == 2 && !empty(split(glob(dir.'*.txt'))) && (!filereadable(dir.'tags') || filewritable(dir.'tags'))
+ silent! execute 'helptags' pathogen#fnameescape(dir)
+ endif
+ endfor
+ endfor
+endfunction
+
+command! -bar Helptags :call pathogen#helptags()
+
+" Execute the given command. This is basically a backdoor for --remote-expr.
+function! pathogen#execute(...) abort
+ for command in a:000
+ execute command
+ endfor
+ return ''
+endfunction
+
+" Section: Unofficial
+
+function! pathogen#is_absolute(path) abort
+ return a:path =~# (has('win32') ? '^\%([\\/]\|\w:\)[\\/]\|^[~$]' : '^[/~$]')
+endfunction
+
+" Given a string, returns all possible permutations of comma delimited braced
+" alternatives of that string. pathogen#expand('/{a,b}/{c,d}') yields
+" ['/a/c', '/a/d', '/b/c', '/b/d']. Empty braces are treated as a wildcard
+" and globbed. Actual globs are preserved.
+function! pathogen#expand(pattern, ...) abort
+ let after = a:0 ? a:1 : ''
+ let pattern = substitute(a:pattern, '^[~$][^\/]*', '\=expand(submatch(0))', '')
+ if pattern =~# '{[^{}]\+}'
+ let [pre, pat, post] = split(substitute(pattern, '\(.\{-\}\){\([^{}]\+\)}\(.*\)', "\\1\001\\2\001\\3", ''), "\001", 1)
+ let found = map(split(pat, ',', 1), 'pre.v:val.post')
+ let results = []
+ for pattern in found
+ call extend(results, pathogen#expand(pattern))
+ endfor
+ elseif pattern =~# '{}'
+ let pat = matchstr(pattern, '^.*{}[^*]*\%($\|[\\/]\)')
+ let post = pattern[strlen(pat) : -1]
+ let results = map(split(glob(substitute(pat, '{}', '*', 'g')), "\n"), 'v:val.post')
+ else
+ let results = [pattern]
+ endif
+ let vf = pathogen#slash() . 'vimfiles'
+ call map(results, 'v:val =~# "\\*" ? v:val.after : isdirectory(v:val.vf.after) ? v:val.vf.after : isdirectory(v:val.after) ? v:val.after : ""')
+ return filter(results, '!empty(v:val)')
+endfunction
+
+" \ on Windows unless shellslash is set, / everywhere else.
+function! pathogen#slash() abort
+ return !exists("+shellslash") || &shellslash ? '/' : '\'
+endfunction
+
+function! pathogen#separator() abort
+ return pathogen#slash()
+endfunction
+
+" Convenience wrapper around glob() which returns a list.
+function! pathogen#glob(pattern) abort
+ let files = split(glob(a:pattern),"\n")
+ return map(files,'substitute(v:val,"[".pathogen#slash()."/]$","","")')
+endfunction
+
+" Like pathogen#glob(), only limit the results to directories.
+function! pathogen#glob_directories(pattern) abort
+ return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')
+endfunction
+
+" Remove duplicates from a list.
+function! pathogen#uniq(list) abort
+ let i = 0
+ let seen = {}
+ while i < len(a:list)
+ if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i])
+ call remove(a:list,i)
+ elseif a:list[i] ==# ''
+ let i += 1
+ let empty = 1
+ else
+ let seen[a:list[i]] = 1
+ let i += 1
+ endif
+ endwhile
+ return a:list
+endfunction
+
+" Backport of fnameescape().
+function! pathogen#fnameescape(string) abort
+ if exists('*fnameescape')
+ return fnameescape(a:string)
+ elseif a:string ==# '-'
+ return '\-'
+ else
+ return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','')
+ endif
+endfunction
+
+" Like findfile(), but hardcoded to use the runtimepath.
+function! pathogen#runtime_findfile(file,count) abort
+ let rtp = pathogen#join(1,pathogen#split(&rtp))
+ let file = findfile(a:file,rtp,a:count)
+ if file ==# ''
+ return ''
+ else
+ return fnamemodify(file,':p')
+ endif
+endfunction
+
+" vim:set et sw=2 foldmethod=expr foldexpr=getline(v\:lnum)=~'^\"\ Section\:'?'>1'\:getline(v\:lnum)=~#'^fu'?'a1'\:getline(v\:lnum)=~#'^endf'?'s1'\:'=':
diff --git a/.config/vim/colors/cyberpunk.vim b/.config/vim/colors/cyberpunk.vim
new file mode 100644
index 0000000..87ab9ac
--- /dev/null
+++ b/.config/vim/colors/cyberpunk.vim
@@ -0,0 +1,136 @@
+""" ===========================================================================
+" File: cyberpunk.vim
+" Description: A port of Emacs' Cyberpunk colorscheme for vim.
+""" ===========================================================================
+
+set background=dark
+
+if version > 580
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+
+let colors_name = "cyberpunk"
+
+" Cyberpunk theme colors {{{
+let s:colors = {
+ \ "cyberpunk-fg": "#dcdccc",
+ \ "cyberpunk-bg-1": "#2b2b2b",
+ \ "cyberpunk-bg-05": "#383838",
+ \ "cyberpunk-bg": "#000000",
+ \ "cyberpunk-bg+1": "#4f4f4f",
+ \ "cyberpunk-bg+2": "#5f5f5f",
+ \ "cyberpunk-bg+3": "#6f6f6f",
+ \ "cyberpunk-red+1": "#dca3a3",
+ \ "cyberpunk-red": "#ff0000",
+ \ "cyberpunk-red-1": "#8b0000",
+ \ "cyberpunk-red-2": "#8b0000",
+ \ "cyberpunk-red-3": "#9c6363",
+ \ "cyberpunk-red-4": "#8c5353",
+ \ "cyberpunk-red-5": "#7F073F",
+ \ "cyberpunk-pink": "#ff69b4",
+ \ "cyberpunk-pink-1": "#ff1493",
+ \ "cyberpunk-pink-2": "#cd1076",
+ \ "cyberpunk-orange-2": "#FF6400",
+ \ "cyberpunk-orange-1": "#ff8c00",
+ \ "cyberpunk-orange": "#ffa500",
+ \ "cyberpunk-yellow": "#ffff00",
+ \ "cyberpunk-yellow-1": "#FBDE2D",
+ \ "cyberpunk-yellow-2": "#d0bf8f",
+ \ "cyberpunk-yellow-3": "#D8FA3C",
+ \ "cyberpunk-yellow-4": "#E9C062",
+ \ "cyberpunk-yellow-5": "#ffd700",
+ \ "cyberpunk-green-2": "#006400",
+ \ "cyberpunk-green-1": "#2e8b57",
+ \ "cyberpunk-green": "#00ff00",
+ \ "cyberpunk-green+1": "#61CE3C",
+ \ "cyberpunk-green+2": "#9fc59f",
+ \ "cyberpunk-green+3": "#afd8af",
+ \ "cyberpunk-green+4": "#bfebbf",
+ \ "cyberpunk-cyan": "#93e0e3",
+ \ "cyberpunk-blue+1": "#94bff3",
+ \ "cyberpunk-blue": "#0000ff",
+ \ "cyberpunk-blue-1": "#7b68ee",
+ \ "cyberpunk-blue-2": "#6a5acd",
+ \ "cyberpunk-blue-3": "#add8e6",
+ \ "cyberpunk-blue-4": "#b2dfee",
+ \ "cyberpunk-blue-5": "#4c83ff",
+ \ "cyberpunk-blue-6": "#96CBFE",
+ \ "cyberpunk-blue-7": "#00ffff",
+ \ "cyberpunk-blue-8": "#4F94CD",
+ \ "cyberpunk-magenta": "#dc8cc3",
+ \ "cyberpunk-black": "#000000",
+ \ "cyberpunk-black-2": "#0C1021",
+ \ "cyberpunk-black-3": "#0A0A0A",
+ \ "cyberpunk-gray": "#d3d3d3",
+ \ "cyberpunk-gray-2": "#8B8989",
+ \ "cyberpunk-gray-3": "#919191",
+ \ "cyberpunk-gray-4": "#999999",
+ \ "cyberpunk-gray-5": "#333333",
+ \ "cyberpunk-gray-6": "#1A1A1A",
+ \ "cyberpunk-gray-7": "#4D4D4D",
+ \ "cyberpunk-gray-8": "#262626",
+ \ "cyberpunk-white": "#ffffff",
+ \ "cyberpunk-white-2": "#F8F8F8",
+ \ "cyberpunk-white-3": "#fffafa"
+\ }
+
+
+function! Hi(name, guifg, guibg)
+ let l:cmd = "hi " . a:name . " guifg=" . a:guifg . " guibg=" . a:guibg
+ exe l:cmd
+endfunc
+
+call Hi("Normal", s:colors["cyberpunk-fg"], s:colors["cyberpunk-black"])
+call Hi("Cursor", s:colors["cyberpunk-fg"], s:colors["cyberpunk-yellow-1"])
+call Hi("Visual", s:colors["cyberpunk-fg"], s:colors["cyberpunk-red-5"])
+call Hi("Visual", s:colors["cyberpunk-fg"], s:colors["cyberpunk-red-5"])
+call Hi("LineNr", s:colors["cyberpunk-green+2"], s:colors["cyberpunk-bg"])
+
+call Hi("DiffAdd", s:colors["cyberpunk-green"], s:colors["cyberpunk-black"])
+call Hi("DiffChange", s:colors["cyberpunk-yellow"], s:colors["cyberpunk-black"])
+call Hi("DiffDelete", s:colors["cyberpunk-red"], s:colors["cyberpunk-black"])
+
+call Hi("StatusLine", s:colors["cyberpunk-gray-5"], s:colors["cyberpunk-blue-5"])
+call Hi("StatusLineNC", s:colors["cyberpunk-gray-6"], s:colors["cyberpunk-gray-7"])
+
+
+exe "hi Warning guifg=" . s:colors["cyberpunk-pink"]
+call Hi("VertSplit", s:colors["cyberpunk-gray-5"], s:colors["cyberpunk-gray-5"])
+
+if version >= 700
+ exe "hi CursorLine guibg=" . s:colors["cyberpunk-gray-5"]
+endif
+
+" Syntax highlighting {{{
+exe "hi String guifg=" . s:colors["cyberpunk-green+1"]
+exe "hi Type guifg=" . s:colors["cyberpunk-yellow-3"]
+exe "hi Function guifg=" . s:colors["cyberpunk-pink-1"]
+exe "hi Comment guifg=" . s:colors["cyberpunk-gray-2"] . " cterm=italic"
+exe "hi Keyword guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi Identifier guifg=" . s:colors["cyberpunk-yellow-3"]
+exe "hi Conditional guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi Repeat guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi Operator guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi Label guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi Structure guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi StorageClass guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi Typedef guifg=" . s:colors["cyberpunk-yellow-1"]
+exe "hi Constant guifg=" . s:colors["cyberpunk-blue-5"]
+exe "hi PreProc guifg=" . s:colors["cyberpunk-gray-3"]
+
+exe "hi Delimiter guifg=" . s:colors["cyberpunk-fg"]
+" Numbers
+exe "hi Number guifg=" . s:colors["cyberpunk-fg"]
+exe "hi Float guifg=" . s:colors["cyberpunk-fg"]
+" }}}
+
+if has("gui_running")
+ set guicursor+=n-v-i:blinkwait750-blinkon750-blinkoff750
+endif
+
+exe "hi Directory guifg=" . s:colors["cyberpunk-pink-1"]
+
+exe "hi ExtraWhitespace guibg=" . s:colors["cyberpunk-red"] \ No newline at end of file
diff --git a/.config/vim/colors/jellybeans.vim b/.config/vim/colors/jellybeans.vim
new file mode 100644
index 0000000..40509a4
--- /dev/null
+++ b/.config/vim/colors/jellybeans.vim
@@ -0,0 +1,673 @@
+" Vim color file
+"
+" " __ _ _ _ "
+" " \ \ ___| | |_ _| |__ ___ __ _ _ __ ___ "
+" " \ \/ _ \ | | | | | _ \ / _ \/ _ | _ \/ __| "
+" " /\_/ / __/ | | |_| | |_| | __/ |_| | | | \__ \ "
+" " \___/ \___|_|_|\__ |____/ \___|\____|_| |_|___/ "
+" " \___/ "
+"
+" "A colorful, dark color scheme for Vim."
+"
+" File: jellybeans.vim
+" URL: github.com/nanotech/jellybeans.vim
+" Scripts URL: vim.org/scripts/script.php?script_id=2555
+" Maintainer: NanoTech (nanotech.nanotechcorp.net)
+" Version: 1.6
+" Last Change: October 18th, 2016
+" License: MIT
+" Contributors: Andrew Wong (w0ng)
+" Brian Marshall (bmars)
+" Daniel Herbert (pocketninja)
+" David Liang <bmdavll at gmail dot com>
+" Henry So, Jr. <henryso@panix.com>
+" Joe Doherty (docapotamus)
+" Karl Litterfeldt (Litterfeldt)
+" Keith Pitt (keithpitt)
+" Philipp Rustemeier (12foo)
+" Rafael Bicalho (rbika)
+" Rich Healey (richo)
+" Siwen Yu (yusiwen)
+" Tim Willis (willist)
+"
+" Copyright (c) 2009-2016 NanoTech
+"
+" Permission is hereby granted, free of charge, to any per‐
+" son obtaining a copy of this software and associated doc‐
+" umentation files (the “Software”), to deal in the Soft‐
+" ware without restriction, including without limitation
+" the rights to use, copy, modify, merge, publish, distrib‐
+" ute, sublicense, and/or sell copies of the Software, and
+" to permit persons to whom the Software is furnished to do
+" so, subject to the following conditions:
+"
+" The above copyright notice and this permission notice
+" shall be included in all copies or substantial portions
+" of the Software.
+"
+" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY
+" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU‐
+" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON‐
+" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON‐
+" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+" THE SOFTWARE.
+
+set background=dark
+
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "jellybeans"
+
+if has("gui_running") || &t_Co == 88 || &t_Co == 256
+ let s:low_color = 0
+else
+ let s:low_color = 1
+endif
+
+" Configuration Variables:
+" - g:jellybeans_overrides (default = {})
+" - g:jellybeans_use_lowcolor_black (default = 1)
+" - g:jellybeans_use_gui_italics (default = 1)
+" - g:jellybeans_use_term_italics (default = 0)
+
+" let s:background_color = "151515"
+let s:background_color = "none"
+
+if exists("g:jellybeans_overrides")
+ let s:overrides = g:jellybeans_overrides
+else
+ let s:overrides = {}
+endif
+
+" Backwards compatibility
+if exists("g:jellybeans_background_color")
+ \ || exists("g:jellybeans_background_color_256")
+ \ || exists("g:jellybeans_use_term_background_color")
+
+ let s:overrides = deepcopy(s:overrides)
+
+ if !has_key(s:overrides, "background")
+ let s:overrides["background"] = {}
+ endif
+
+ if exists("g:jellybeans_background_color")
+ let s:overrides["background"]["guibg"] = g:jellybeans_background_color
+ endif
+
+ if exists("g:jellybeans_background_color_256")
+ let s:overrides["background"]["256ctermbg"] = g:jellybeans_background_color_256
+ endif
+
+ if exists("g:jellybeans_use_term_background_color")
+ \ && g:jellybeans_use_term_background_color
+ let s:overrides["background"]["ctermbg"] = "NONE"
+ let s:overrides["background"]["256ctermbg"] = "NONE"
+ endif
+endif
+
+if !exists("g:jellybeans_use_lowcolor_black") || g:jellybeans_use_lowcolor_black
+ let s:termBlack = "Black"
+else
+ let s:termBlack = "Grey"
+endif
+
+" Color approximation functions by Henry So, Jr. and David Liang {{{
+" Added to jellybeans.vim by Daniel Herbert
+
+" returns an approximate grey index for the given grey level
+fun! s:grey_number(x)
+ if &t_Co == 88
+ if a:x < 23
+ return 0
+ elseif a:x < 69
+ return 1
+ elseif a:x < 103
+ return 2
+ elseif a:x < 127
+ return 3
+ elseif a:x < 150
+ return 4
+ elseif a:x < 173
+ return 5
+ elseif a:x < 196
+ return 6
+ elseif a:x < 219
+ return 7
+ elseif a:x < 243
+ return 8
+ else
+ return 9
+ endif
+ else
+ if a:x < 14
+ return 0
+ else
+ let l:n = (a:x - 8) / 10
+ let l:m = (a:x - 8) % 10
+ if l:m < 5
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+endfun
+
+" returns the actual grey level represented by the grey index
+fun! s:grey_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 46
+ elseif a:n == 2
+ return 92
+ elseif a:n == 3
+ return 115
+ elseif a:n == 4
+ return 139
+ elseif a:n == 5
+ return 162
+ elseif a:n == 6
+ return 185
+ elseif a:n == 7
+ return 208
+ elseif a:n == 8
+ return 231
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 8 + (a:n * 10)
+ endif
+ endif
+endfun
+
+" returns the palette index for the given grey index
+fun! s:grey_color(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 16
+ elseif a:n == 9
+ return 79
+ else
+ return 79 + a:n
+ endif
+ else
+ if a:n == 0
+ return 16
+ elseif a:n == 25
+ return 231
+ else
+ return 231 + a:n
+ endif
+ endif
+endfun
+
+" returns an approximate color index for the given color level
+fun! s:rgb_number(x)
+ if &t_Co == 88
+ if a:x < 69
+ return 0
+ elseif a:x < 172
+ return 1
+ elseif a:x < 230
+ return 2
+ else
+ return 3
+ endif
+ else
+ if a:x < 75
+ return 0
+ else
+ let l:n = (a:x - 55) / 40
+ let l:m = (a:x - 55) % 40
+ if l:m < 20
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+endfun
+
+" returns the actual color level for the given color index
+fun! s:rgb_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 139
+ elseif a:n == 2
+ return 205
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 55 + (a:n * 40)
+ endif
+ endif
+endfun
+
+" returns the palette index for the given R/G/B color indices
+fun! s:rgb_color(x, y, z)
+ if &t_Co == 88
+ return 16 + (a:x * 16) + (a:y * 4) + a:z
+ else
+ return 16 + (a:x * 36) + (a:y * 6) + a:z
+ endif
+endfun
+
+" returns the palette index to approximate the given R/G/B color levels
+fun! s:color(r, g, b)
+ " map greys directly (see xterm's 256colres.pl)
+ if &t_Co == 256 && a:r == a:g && a:g == a:b && a:r > 3 && a:r < 243
+ return float2nr(round(a:r - 8) / 10.0) + 232
+ endif
+
+ " get the closest grey
+ let l:gx = s:grey_number(a:r)
+ let l:gy = s:grey_number(a:g)
+ let l:gz = s:grey_number(a:b)
+
+ " get the closest color
+ let l:x = s:rgb_number(a:r)
+ let l:y = s:rgb_number(a:g)
+ let l:z = s:rgb_number(a:b)
+
+ if l:gx == l:gy && l:gy == l:gz
+ " there are two possibilities
+ let l:dgr = s:grey_level(l:gx) - a:r
+ let l:dgg = s:grey_level(l:gy) - a:g
+ let l:dgb = s:grey_level(l:gz) - a:b
+ let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
+ let l:dr = s:rgb_level(l:gx) - a:r
+ let l:dg = s:rgb_level(l:gy) - a:g
+ let l:db = s:rgb_level(l:gz) - a:b
+ let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
+ if l:dgrey < l:drgb
+ " use the grey
+ return s:grey_color(l:gx)
+ else
+ " use the color
+ return s:rgb_color(l:x, l:y, l:z)
+ endif
+ else
+ " only one possibility
+ return s:rgb_color(l:x, l:y, l:z)
+ endif
+endfun
+
+fun! s:is_empty_or_none(str)
+ return empty(a:str) || a:str ==? "NONE"
+endfun
+
+" returns the palette index to approximate the 'rrggbb' hex string
+fun! s:rgb(rgb)
+ if s:is_empty_or_none(a:rgb)
+ return "NONE"
+ endif
+ let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
+ let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
+ let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
+ return s:color(l:r, l:g, l:b)
+endfun
+
+fun! s:prefix_highlight_value_with(prefix, color)
+ if s:is_empty_or_none(a:color)
+ return "NONE"
+ else
+ return a:prefix . a:color
+ endif
+endfun
+
+fun! s:remove_italic_attr(attr)
+ let l:attr = join(filter(split(a:attr, ","), "v:val !=? 'italic'"), ",")
+ if empty(l:attr)
+ let l:attr = "NONE"
+ endif
+ return l:attr
+endfun
+
+" sets the highlighting for the given group
+fun! s:X(group, fg, bg, attr, lcfg, lcbg)
+ if s:low_color
+ exec "hi ".a:group.
+ \ " ctermfg=".s:prefix_highlight_value_with("", a:lcfg).
+ \ " ctermbg=".s:prefix_highlight_value_with("", a:lcbg)
+ else
+ exec "hi ".a:group.
+ \ " guifg=".s:prefix_highlight_value_with("#", a:fg).
+ \ " guibg=".s:prefix_highlight_value_with("#", a:bg).
+ \ " ctermfg=".s:rgb(a:fg).
+ \ " ctermbg=".s:rgb(a:bg)
+ endif
+
+ let l:attr = s:prefix_highlight_value_with("", a:attr)
+
+ if exists("g:jellybeans_use_term_italics") && g:jellybeans_use_term_italics
+ let l:cterm_attr = l:attr
+ else
+ let l:cterm_attr = s:remove_italic_attr(l:attr)
+ endif
+
+ if !exists("g:jellybeans_use_gui_italics") || g:jellybeans_use_gui_italics
+ let l:gui_attr = l:attr
+ else
+ let l:gui_attr = s:remove_italic_attr(l:attr)
+ endif
+
+ exec "hi ".a:group." gui=".l:gui_attr." cterm=".l:cterm_attr
+endfun
+" }}}
+
+call s:X("Normal","e8e8d3",s:background_color,"","White","")
+set background=dark
+
+if version >= 700
+ call s:X("CursorLine","","1c1c1c","","",s:termBlack)
+ call s:X("CursorColumn","","1c1c1c","","",s:termBlack)
+ call s:X("MatchParen","ffffff","556779","bold","","DarkCyan")
+
+ call s:X("TabLine","000000","b0b8c0","italic","",s:termBlack)
+ call s:X("TabLineFill","9098a0","","","",s:termBlack)
+ call s:X("TabLineSel","000000","f0f0f0","italic,bold",s:termBlack,"White")
+
+ " Auto-completion
+ call s:X("Pmenu","ffffff","606060","","White",s:termBlack)
+ call s:X("PmenuSel","101010","eeeeee","",s:termBlack,"White")
+endif
+
+call s:X("Visual","","404040","","",s:termBlack)
+call s:X("Cursor",s:background_color,"b0d0f0","","","")
+
+call s:X("LineNr","605958",s:background_color,"NONE",s:termBlack,"")
+call s:X("CursorLineNr","ccc5c4","","NONE","White","")
+call s:X("Comment","888888","","italic","Grey","")
+call s:X("Todo","c7c7c7","","bold","White",s:termBlack)
+
+call s:X("StatusLine","000000","dddddd","italic","","White")
+call s:X("StatusLineNC","ffffff","403c41","italic","White","Black")
+call s:X("VertSplit","777777","403c41","",s:termBlack,s:termBlack)
+call s:X("WildMenu","f0a0c0","302028","","Magenta","")
+
+call s:X("Folded","a0a8b0","384048","italic",s:termBlack,"")
+call s:X("FoldColumn","535D66","1f1f1f","","",s:termBlack)
+call s:X("SignColumn","777777","333333","","",s:termBlack)
+call s:X("ColorColumn","","000000","","",s:termBlack)
+
+call s:X("Title","70b950","","bold","Green","")
+
+call s:X("Constant","cf6a4c","","","Red","")
+call s:X("Special","799d6a","","","Green","")
+call s:X("Delimiter","668799","","","Grey","")
+
+call s:X("String","99ad6a","","","Green","")
+call s:X("StringDelimiter","556633","","","DarkGreen","")
+
+call s:X("Identifier","c6b6ee","","","LightCyan","")
+call s:X("Structure","8fbfdc","","","LightCyan","")
+call s:X("Function","fad07a","","","Yellow","")
+call s:X("Statement","8197bf","","","DarkBlue","")
+call s:X("PreProc","8fbfdc","","","LightBlue","")
+
+hi! link Operator Structure
+hi! link Conceal Operator
+
+call s:X("Type","ffb964","","","Yellow","")
+call s:X("NonText","101010",s:background_color,"",s:termBlack,"")
+
+call s:X("SpecialKey","141414","","",s:termBlack,"")
+
+call s:X("Search","f0a0c0","302028","underline","Magenta","")
+
+call s:X("Directory","dad085","","","Yellow","")
+call s:X("ErrorMsg","","902020","","","DarkRed")
+hi! link Error ErrorMsg
+hi! link MoreMsg Special
+call s:X("Question","65C254","","","Green","")
+
+
+" Spell Checking
+
+call s:X("SpellBad","","902020","underline","","DarkRed")
+call s:X("SpellCap","","0000df","underline","","Blue")
+call s:X("SpellRare","","540063","underline","","DarkMagenta")
+call s:X("SpellLocal","","2D7067","underline","","Green")
+
+" Diff
+
+hi! link diffRemoved Constant
+hi! link diffAdded String
+
+" VimDiff
+
+call s:X("DiffAdd","D2EBBE","437019","","White","DarkGreen")
+call s:X("DiffDelete","40000A","700009","","DarkRed","DarkRed")
+call s:X("DiffChange","","2B5B77","","White","DarkBlue")
+call s:X("DiffText","8fbfdc","000000","reverse","Yellow","")
+
+" PHP
+
+hi! link phpFunctions Function
+call s:X("StorageClass","c59f6f","","","Red","")
+hi! link phpSuperglobal Identifier
+hi! link phpQuoteSingle StringDelimiter
+hi! link phpQuoteDouble StringDelimiter
+hi! link phpBoolean Constant
+hi! link phpNull Constant
+hi! link phpArrayPair Operator
+hi! link phpOperator Normal
+hi! link phpRelation Normal
+hi! link phpVarSelector Identifier
+
+" Python
+
+hi! link pythonOperator Statement
+
+" Ruby
+
+hi! link rubySharpBang Comment
+call s:X("rubyClass","447799","","","DarkBlue","")
+call s:X("rubyIdentifier","c6b6fe","","","Cyan","")
+hi! link rubyConstant Type
+hi! link rubyFunction Function
+
+call s:X("rubyInstanceVariable","c6b6fe","","","Cyan","")
+call s:X("rubySymbol","7697d6","","","Blue","")
+hi! link rubyGlobalVariable rubyInstanceVariable
+hi! link rubyModule rubyClass
+call s:X("rubyControl","7597c6","","","Blue","")
+
+hi! link rubyString String
+hi! link rubyStringDelimiter StringDelimiter
+hi! link rubyInterpolationDelimiter Identifier
+
+call s:X("rubyRegexpDelimiter","540063","","","Magenta","")
+call s:X("rubyRegexp","dd0093","","","DarkMagenta","")
+call s:X("rubyRegexpSpecial","a40073","","","Magenta","")
+
+call s:X("rubyPredefinedIdentifier","de5577","","","Red","")
+
+" Erlang
+
+hi! link erlangAtom rubySymbol
+hi! link erlangBIF rubyPredefinedIdentifier
+hi! link erlangFunction rubyPredefinedIdentifier
+hi! link erlangDirective Statement
+hi! link erlangNode Identifier
+
+" Elixir
+
+hi! link elixirAtom rubySymbol
+
+
+" JavaScript
+
+hi! link javaScriptValue Constant
+hi! link javaScriptRegexpString rubyRegexp
+hi! link javaScriptTemplateVar StringDelim
+hi! link javaScriptTemplateDelim Identifier
+hi! link javaScriptTemplateString String
+
+" CoffeeScript
+
+hi! link coffeeRegExp javaScriptRegexpString
+
+" Lua
+
+hi! link luaOperator Conditional
+
+" C
+
+hi! link cFormat Identifier
+hi! link cOperator Constant
+
+" Objective-C/Cocoa
+
+hi! link objcClass Type
+hi! link cocoaClass objcClass
+hi! link objcSubclass objcClass
+hi! link objcSuperclass objcClass
+hi! link objcDirective rubyClass
+hi! link objcStatement Constant
+hi! link cocoaFunction Function
+hi! link objcMethodName Identifier
+hi! link objcMethodArg Normal
+hi! link objcMessageName Identifier
+
+" Vimscript
+
+hi! link vimOper Normal
+
+" HTML
+
+hi! link htmlTag Statement
+hi! link htmlEndTag htmlTag
+hi! link htmlTagName htmlTag
+
+" XML
+
+hi! link xmlTag Statement
+hi! link xmlEndTag xmlTag
+hi! link xmlTagName xmlTag
+hi! link xmlEqual xmlTag
+hi! link xmlEntity Special
+hi! link xmlEntityPunct xmlEntity
+hi! link xmlDocTypeDecl PreProc
+hi! link xmlDocTypeKeyword PreProc
+hi! link xmlProcessingDelim xmlAttrib
+
+" Debugger.vim
+
+call s:X("DbgCurrent","DEEBFE","345FA8","","White","DarkBlue")
+call s:X("DbgBreakPt","","4F0037","","","DarkMagenta")
+
+" vim-indent-guides
+
+if !exists("g:indent_guides_auto_colors")
+ let g:indent_guides_auto_colors = 0
+endif
+call s:X("IndentGuidesOdd","","232323","","","")
+call s:X("IndentGuidesEven","","1b1b1b","","","")
+
+" Plugins, etc.
+
+hi! link TagListFileName Directory
+call s:X("PreciseJumpTarget","B9ED67","405026","","White","Green")
+
+" Manual overrides for 256-color terminals. Dark colors auto-map badly.
+if !s:low_color
+ hi StatusLineNC ctermbg=235
+ hi Folded ctermbg=236
+ hi DiffText ctermfg=81
+ hi DbgBreakPt ctermbg=53
+ hi IndentGuidesOdd ctermbg=235
+ hi IndentGuidesEven ctermbg=234
+endif
+
+if !empty("s:overrides")
+ fun! s:current_attr(group)
+ let l:synid = synIDtrans(hlID(a:group))
+ let l:attrs = []
+ for l:attr in ["bold", "italic", "reverse", "standout", "underline", "undercurl"]
+ if synIDattr(l:synid, l:attr, "gui") == 1
+ call add(l:attrs, l:attr)
+ endif
+ endfor
+ return join(l:attrs, ",")
+ endfun
+ fun! s:current_color(group, what, mode)
+ let l:color = synIDattr(synIDtrans(hlID(a:group)), a:what, a:mode)
+ if l:color == -1
+ return ""
+ else
+ return substitute(l:color, "^#", "", "")
+ endif
+ endfun
+ fun! s:load_color_def(group, def)
+ call s:X(a:group, get(a:def, "guifg", s:current_color(a:group, "fg", "gui")),
+ \ get(a:def, "guibg", s:current_color(a:group, "bg", "gui")),
+ \ get(a:def, "attr", s:current_attr(a:group)),
+ \ get(a:def, "ctermfg", s:current_color(a:group, "fg", "cterm")),
+ \ get(a:def, "ctermbg", s:current_color(a:group, "bg", "cterm")))
+ if !s:low_color
+ for l:prop in ["ctermfg", "ctermbg"]
+ let l:override_key = "256".l:prop
+ if has_key(a:def, l:override_key)
+ exec "hi ".a:group." ".l:prop."=".a:def[l:override_key]
+ endif
+ endfor
+ endif
+ endfun
+ fun! s:load_colors(defs)
+ for [l:group, l:def] in items(a:defs)
+ if l:group == "background"
+ call s:load_color_def("LineNr", l:def)
+ call s:load_color_def("NonText", l:def)
+ call s:load_color_def("Normal", l:def)
+ else
+ call s:load_color_def(l:group, l:def)
+ endif
+ unlet l:group
+ unlet l:def
+ endfor
+ endfun
+ call s:load_colors(s:overrides)
+ delf s:load_colors
+ delf s:load_color_def
+ delf s:current_color
+ delf s:current_attr
+endif
+
+call s:X("ExtraWhitespace","902020","902020","","red",s:termBlack)
+match ExtraWhitespace /^\t*\zs \+/
+match ExtraWhitespace /\s\+$/
+
+" delete functions {{{
+delf s:X
+delf s:remove_italic_attr
+delf s:prefix_highlight_value_with
+delf s:rgb
+delf s:is_empty_or_none
+delf s:color
+delf s:rgb_color
+delf s:rgb_level
+delf s:rgb_number
+delf s:grey_color
+delf s:grey_level
+delf s:grey_number
+" }}}
diff --git a/.config/vim/compiler/futhark.vim b/.config/vim/compiler/futhark.vim
new file mode 100644
index 0000000..132ccfe
--- /dev/null
+++ b/.config/vim/compiler/futhark.vim
@@ -0,0 +1,17 @@
+" Vim compiler file
+" Compiler: Futhark Compiler
+" Latest Revision: 2020/05/24
+
+if exists("current_compiler") || &cp
+ finish
+endif
+let current_compiler = "futhark"
+
+let s:cpo_save = "futhark"
+set cpo&vim
+
+"CompilerSet errorformat=Error at %f:%l:%c-%v:\r%m
+
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/.config/vim/ftdetect/cpp.vim b/.config/vim/ftdetect/cpp.vim
new file mode 100644
index 0000000..3166fda
--- /dev/null
+++ b/.config/vim/ftdetect/cpp.vim
@@ -0,0 +1,2 @@
+autocmd BufRead *.cpp setlocal tabstop=4
+autocmd BufRead *.cpp setlocal shiftwidth=4
diff --git a/.config/vim/ftdetect/cu.vim b/.config/vim/ftdetect/cu.vim
new file mode 100644
index 0000000..d7e8516
--- /dev/null
+++ b/.config/vim/ftdetect/cu.vim
@@ -0,0 +1 @@
+au BufRead,BufNewFile *.cu,*.cuh,*.cu.h set filetype=cuda
diff --git a/.config/vim/ftdetect/fut.vim b/.config/vim/ftdetect/fut.vim
new file mode 100644
index 0000000..2c281c7
--- /dev/null
+++ b/.config/vim/ftdetect/fut.vim
@@ -0,0 +1,2 @@
+au BufRead,BufNewFile *.fut set filetype=fut
+au BufRead,BufNewFile *.fut set includeexpr=v:fname.'.fut'
diff --git a/.config/vim/ftdetect/tex.vim b/.config/vim/ftdetect/tex.vim
new file mode 100644
index 0000000..43f5fde
--- /dev/null
+++ b/.config/vim/ftdetect/tex.vim
@@ -0,0 +1,9 @@
+" put \begin{} \end{} tags tags around the current word
+autocmd BufRead *.tex map <C-B> YpkI\begin{<ESC>A}<ESC>jI\end{<ESC>A}<esc>kA
+autocmd BufRead *.tex map! <C-B> <ESC>YpkI\begin{<ESC>A}<ESC>jI\end{<ESC>A}<esc>kA
+autocmd BufRead *.tex map <C-M> :call Synctex()<CR>
+
+"autocmd BufRead *.tex imap /\ \land
+"autocmd BufRead *.tex imap \/ \lor
+"autocmd BufRead *.tex imap -> \rightarrow
+"autocmd BufRead *.tex imap ~~ \neg
diff --git a/.config/vim/ftplugin/fut.vim b/.config/vim/ftplugin/fut.vim
new file mode 100644
index 0000000..29410d5
--- /dev/null
+++ b/.config/vim/ftplugin/fut.vim
@@ -0,0 +1,8 @@
+" ftplugin/fut.vim
+setlocal commentstring=--%s
+setlocal comments=:--
+setlocal iskeyword+=',_
+setlocal tabstop=2
+setlocal softtabstop=2
+setlocal shiftwidth=2
+setlocal expandtab
diff --git a/.config/vim/indent/fsharp.vim b/.config/vim/indent/fsharp.vim
new file mode 100644
index 0000000..6227bdd
--- /dev/null
+++ b/.config/vim/indent/fsharp.vim
@@ -0,0 +1,249 @@
+" Vim indent file
+" Language: FSharp
+" Maintainers: Jean-Francois Yuen <jfyuen@happycoders.org>
+" Mike Leary <leary@nwlink.com>
+" Markus Mottl <markus.mottl@gmail.com>
+" Rudi Grinberg <rudi.grinberg@gmail.com>
+" Gregor Uhlenheuer <kongo2002@gmail.com>
+" Last Change: 2013 Jun 29
+" 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
+" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
+" 2013 June - commented textwidth (Marc Weber)
+" 2014 August - Ported to F#
+" 2014 August - F# specific cleanup
+"
+" Marc Weber's comment: This file may contain a lot of (very custom) stuff
+" which eventually should be moved somewhere else ..
+
+" Only load this indent file when no other was loaded.
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetFsharpIndent()
+setlocal indentkeys+=0=and,0=class,0=constraint,0=done,0=else,0=end,0=exception,0=external,0=if,0=in,0=include,0=inherit,0=let,0=method,0=open,0=then,0=type,0=val,0=with,0;;,0>\],0\|\],0>},0\|,0},0\],0)
+
+" Only define the function once.
+if exists("*GetFsharpIndent")
+ finish
+endif
+
+" Skipping pattern, for comments
+function! s:GetLineWithoutFullComment(lnum)
+ let lnum = prevnonblank(a:lnum - 1)
+ let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
+ while lline =~ '^\s*$' && lnum > 0
+ let lnum = prevnonblank(lnum - 1)
+ let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
+ endwhile
+ return lnum
+endfunction
+
+" Indent for ';;' to match multiple 'let'
+function! s:GetInd(lnum, pat, lim)
+ let llet = search(a:pat, 'bW')
+ let old = indent(a:lnum)
+ while llet > 0
+ let old = indent(llet)
+ let nb = s:GetLineWithoutFullComment(llet)
+ if getline(nb) =~ a:lim
+ return old
+ endif
+ let llet = search(a:pat, 'bW')
+ endwhile
+ return old
+endfunction
+
+" Indent pairs
+function! s:FindPair(pstart, pmid, pend)
+ call search(a:pend, 'bW')
+ return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
+endfunction
+
+" Indent 'let'
+function! s:FindLet(pstart, pmid, pend)
+ call search(a:pend, 'bW')
+ return indent(searchpair(a:pstart, a:pmid, a:pend, 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") =~ "^\\s*let\\>.*=.*\\<in\\s*$" || getline(prevnonblank(".") - 1) =~ s:beflet'))
+endfunction
+
+function! GetFsharpIndent()
+ " Find a non-commented line above the current line.
+ let lnum = s:GetLineWithoutFullComment(v:lnum)
+
+ " At the start of the file use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ let ind = indent(lnum)
+ let lline = substitute(getline(lnum), '(\*.*\*)\s*$', '', '')
+
+ " " Return single 'shiftwidth' after lines matching:
+ " if lline =~ '^\s*|.*->\s*$'
+ " return ind + &sw
+ " endif
+
+ let line = getline(v:lnum)
+
+ " Indent if current line begins with 'end':
+ if line =~ '^\s*end\>'
+ return s:FindPair(s:module, '','\<end\>')
+
+ " Indent if current line begins with 'done' for 'do':
+ elseif line =~ '^\s*done\>'
+ return s:FindPair('\<do\>', '','\<done\>')
+
+ " Indent if current line begins with '}' or '>}':
+ elseif line =~ '^\s*\(\|>\)}'
+ return s:FindPair('{', '','}')
+
+ " Indent if current line begins with ']', '|]' or '>]':
+ elseif line =~ '^\s*\(\||\|>\)\]'
+ return s:FindPair('\[', '','\]')
+
+ " Indent if current line begins with ')':
+ elseif line =~ '^\s*)'
+ return s:FindPair('(', '',')')
+
+ " Indent if current line begins with 'let':
+ elseif line =~ '^\s*let\>'
+ if lline !~ s:lim . '\|' . s:letlim . '\|' . s:beflet
+ return s:FindLet(s:type, '','\<let\s*$')
+ endif
+
+ " Indent if current line begins with 'class' or 'type':
+ elseif line =~ '^\s*\(class\|type\)\>'
+ if lline !~ s:lim . '\|\<and\s*$\|' . s:letlim
+ return s:FindLet(s:type, '','\<\(class\|type\)\s*$')
+ endif
+
+ " Indent for pattern matching:
+ elseif line =~ '^\s*|'
+ if lline !~ '^\s*\(|[^\]]\|\(match\|type\|with\)\>\)\|\<\(function\|private\|with\)\s*$'
+ call search('|', 'bW')
+ return indent(searchpair('^\s*\(match\|type\)\>\|\<\(function\|private\|with\)\s*$', '', '^\s*|', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment" || getline(".") !~ "^\\s*|.*->"'))
+ endif
+
+ " Indent if current line begins with ';;':
+ elseif line =~ '^\s*;;'
+ if lline !~ ';;\s*$'
+ return s:GetInd(v:lnum, s:letpat, s:letlim)
+ endif
+
+ " Indent if current line begins with 'in':
+ elseif line =~ '^\s*in\>'
+ if lline !~ '^\s*\(let\|and\)\>'
+ return s:FindPair('\<let\>', '', '\<in\>')
+ endif
+
+ " Indent if current line begins with 'else':
+ elseif line =~ '^\s*else\>'
+ if lline !~ '^\s*\(if\|then\)\>'
+ return s:FindPair('\<if\>', '', '\<else\>')
+ endif
+
+ " Indent if current line begins with 'then':
+ elseif line =~ '^\s*then\>'
+ if lline !~ '^\s*\(if\|else\)\>'
+ return s:FindPair('\<if\>', '', '\<then\>')
+ endif
+
+ " Indent if current line begins with 'and':
+ elseif line =~ '^\s*and\>'
+ if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$'
+ return ind - &sw
+ endif
+
+ " Indent if current line begins with 'with':
+ elseif line =~ '^\s*with\>'
+ if lline !~ '^\s*\(match\|try\)\>'
+ return s:FindPair('\<\%(match\|try\)\>', '','\<with\>')
+ endif
+
+ " Indent if current line begins with 'exception', 'external', 'include' or
+ " 'open':
+ elseif line =~ '^\s*\(exception\|external\|include\|open\)\>'
+ if lline !~ s:lim . '\|' . s:letlim
+ call search(line)
+ return indent(search('^\s*\(\(exception\|external\|include\|open\|type\)\>\|val\>.*:\)', 'bW'))
+ endif
+
+ " Indent if current line begins with 'val':
+ elseif line =~ '^\s*val\>'
+ if lline !~ '^\s*\(exception\|external\|include\|open\)\>\|' . s:obj . '\|' . s:letlim
+ return indent(search('^\s*\(\(exception\|include\|initializer\|method\|open\|type\|val\)\>\|external\>.*:\)', 'bW'))
+ endif
+
+ " Indent if current line begins with 'constraint', 'inherit', 'initializer'
+ " or 'method':
+ elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>'
+ if lline !~ s:obj
+ return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + &sw
+ endif
+
+ endif
+
+ " Add a 'shiftwidth' after lines ending with:
+ if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$'
+ let ind = ind + &sw
+
+ " Back to normal indent after lines ending with ';;':
+ elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
+ let ind = s:GetInd(v:lnum, s:letpat, s:letlim)
+
+ " Back to normal indent after lines ending with 'end':
+ elseif lline =~ '\<end\s*$'
+ let ind = s:FindPair(s:module, '','\<end\>')
+
+ " Back to normal indent after lines ending with 'in':
+ elseif lline =~ '\<in\s*$' && lline !~ '^\s*in\>'
+ let ind = s:FindPair('\<let\>', '', '\<in\>')
+
+ " Back to normal indent after lines ending with 'done':
+ elseif lline =~ '\<done\s*$'
+ let ind = s:FindPair('\<do\>', '','\<done\>')
+
+ " Back to normal indent after lines ending with '}' or '>}':
+ elseif lline =~ '\(\|>\)}\s*$'
+ let ind = s:FindPair('{', '','}')
+
+ " Back to normal indent after lines ending with ']', '|]' or '>]':
+ elseif lline =~ '\(\||\|>\)\]\s*$'
+ let ind = s:FindPair('\[', '','\]')
+
+ " Back to normal indent after comments:
+ elseif lline =~ '\*)\s*$'
+ call search('\*)', 'bW')
+ let ind = indent(searchpair('(\*', '', '\*)', 'bWn', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
+
+ " Back to normal indent after lines ending with ')':
+ elseif lline =~ ')\s*$'
+ let ind = s:FindPair('(', '',')')
+
+ " If this is a multiline comment then align '*':
+ elseif lline =~ '^\s*(\*' && line =~ '^\s*\*'
+ let ind = ind + 1
+
+ else
+ " Don't change indentation of this line
+ " for new lines (indent==0) use indentation of previous line
+
+ " This is for preventing removing indentation of these args:
+ " let f x =
+ " let y = x + 1 in
+ " Printf.printf
+ " "o" << here
+ " "oeuth" << don't touch indentation
+
+ let i = indent(v:lnum)
+ return i == 0 ? ind : i
+
+ endif
+
+ return ind
+
+endfunction
+
+" vim: sw=4 et sts=4
diff --git a/.config/vim/indent/fut.vim b/.config/vim/indent/fut.vim
new file mode 100644
index 0000000..fb0df69
--- /dev/null
+++ b/.config/vim/indent/fut.vim
@@ -0,0 +1,90 @@
+" Vim indent file
+" Language: Futhark
+" Authors: Bene Collyridam, 0undefined
+" Last Change: 2020/01/11
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal nolisp
+setlocal autoindent
+
+setlocal indentkeys=0{,0},0),0],!^F,e,o,O
+setlocal indentexpr=FutharkIndent(v:lnum)
+
+if exists("*FutharkIndent")
+ finish
+endif
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+function! s:get_line_trimmed(lnum)
+ " Get the line and remove a trailing comment.
+ " Use syntax highlighting attributes when possible.
+ " NOTE: this is not accurate; /* */ or a line continuation could trick it
+ let line = getline(a:lnum)
+ let line_len = strlen(line)
+ if has('syntax_items')
+ " If the last character in the line is a comment, do a binary search for
+ " the start of the comment. synID() is slow, a linear search would take
+ " too long on a long line.
+ if synIDattr(synID(a:lnum, line_len, 1), "name") =~ 'Comment\|Todo'
+ let min = 1
+ let max = line_len
+ while min < max
+ let col = (min + max) / 2
+ if synIDattr(synID(a:lnum, col, 1), "name") =~ 'Comment\|Todo'
+ let max = col
+ else
+ let min = col + 1
+ endif
+ endwhile
+ let line = strpart(line, 0, min - 1)
+ endif
+ return substitute(line, "\s*$", "", "")
+ else
+ " Sorry, this is not complete, nor fully correct (e.g. string "--").
+ " Such is life.
+ return substitute(line, "\s*--.*$", "", "")
+ endif
+endfunction
+
+function! FutharkIndent(lnum)
+ let line = getline(a:lnum)
+ let prevNum = prevnonblank(a:lnum - 1)
+ let prev = s:get_line_trimmed(prevNum)
+ while prevNum > 1 && prevline !~ '[^[:blank:]]'
+ let prevNum = prevnonblank(prevNum - 1)
+ let prev = s:get_line_trimmed(prevNum)
+ endwhile
+
+ if prev[len(prevline) - 1] == ","
+ \ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]'
+ \ && prevline !~ '^\s*let\s'
+ \ && prevline !~ '([^()]\+,$'
+ \ && s:get_line_trimmed(a:lnum) !~ '^\s*\S\+\s*=>'
+ return indent(prevNum)
+ endif
+
+ " Indent extra if matching these patterns
+ if prev =~ "=$"
+ \ || prev =~ "->$"
+ \ || prev =~ "do$"
+ \ || prev =~ "($"
+ \ || prev =~ "in$"
+ \ || prev =~ "then$"
+ \ || prev =~ "else$"
+ return indent(prevNum) + &shiftwidth
+
+ " Else keep same level of indentation
+ else
+ return indent(prevNum)
+
+ endif
+endfunction
+
+let &cpo = s:save_cpo
+unlet s:save_cpo
diff --git a/.config/vim/syntax/fut.vim b/.config/vim/syntax/fut.vim
new file mode 100644
index 0000000..d3d7b78
--- /dev/null
+++ b/.config/vim/syntax/fut.vim
@@ -0,0 +1,53 @@
+syntax case match
+
+syn match FutharkAssigment "\v\="
+syn match FutharkOperator "\(+\|-\|*\|/\|>\|<\|%\|!\|&\||\|\^\)"
+syn match FutharkOperator "\(++\|==\|!=\|>->\|<-<\||>\|<|\)" containedin=FutharkLambdaOperator
+
+" Literally the same, just with parenthesis
+syn match FutharkLambdaOperator "(\ *\(++\|==\|!=\|>->\|<-<\||>\|<|\)\ *)"
+syn match FutharkLambdaOperator "(\ *\(+\|-\|*\|/\|>\|<\|%\|!\|&\||\|^\)\ *)"
+" Except for these two
+syn match FutharkLambdaOperator "(\ *\(\.[1-9][0-9]*\)\ *)"
+syn match FutharkLambdaOperator /).[1-9][0-9]*/ms=s+1
+
+syn match Number "\v[+-]?<((\d+|0[xX]\x+|0[bB][01]+)([ui](8|16|32|64))?)>"
+
+syn match float "\v[+-]?<((\d+(\.\d+)?)(f(32|64))?)>"
+
+" Exponent
+syn match float "\v-?(\d(\d|_)*|(\d(\d|_)*)?\.(\d(\d|_)*))[eE][+\-]?\d+"
+
+syn keyword boolean true false
+
+syn match FutIdentifier "\v\h(\w|')*" skipwhite contained contains=NONE
+
+syn keyword type i8 i16 i32 i64 u8 u16 u32 u64 int real bool char f32 f64
+
+syn keyword conditional if then else
+syn keyword Statement loop with entry for while do in local val
+syn keyword keyword concat zip unzip unsafe
+syn keyword typedef type
+syn keyword FutharkBinding let entry nextgroup=FutIdentifier skipwhite skipempty
+syn keyword PreProc module open import nextgroup=FutIdentifier skipwhite skipempty
+
+syn keyword function map map1 map2 map3 map4 map5 stream_map stream_map_per
+syn keyword function reduce reduce_comm scan filter partition
+syn keyword function stream_red stream_red_per stream_seq iota
+syn keyword function replicate scatter drop
+syn keyword function rotate split flatten unflatten
+syn keyword function curry uncurry
+syn keyword function id const
+
+syn match constant /'.'/
+
+syn region string start=/"/ skip=/\\"/ end=/"/ keepend excludenl
+
+syn match comment "--.*$"
+
+hi def link FutIdentifier Function
+
+hi def link FutharkBinding Statement
+hi def link number constant
+hi def link FutharkOperator operator
+hi def link FutharkLambdaOperator operator
diff --git a/.config/vim/vimrc b/.config/vim/vimrc
new file mode 100644
index 0000000..d590f53
--- /dev/null
+++ b/.config/vim/vimrc
@@ -0,0 +1,117 @@
+set directory=$XDG_CACHE_HOME/vim,~/,/tmp
+set backupdir=$XDG_CACHE_HOME/vim,~/,/tmp
+set viminfo+=n$XDG_CACHE_HOME/vim/viminfo
+let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc"
+set runtimepath=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIM,$VIMRUNTIME
+runtime! archlinux.vim
+scriptencoding utf-8
+
+" behaviour
+set history=200
+set wildmenu
+set ruler
+set cursorline
+set showmatch
+set hlsearch
+set nocompatible
+set backspace=2
+set incsearch
+set formatoptions+=tcroqn2bmj
+"set formatoptions+=1cjmnoqrw
+"set formatoptions+=2acjnoqrtw
+set relativenumber
+set number
+
+" Enable mouse support
+set mouse=a
+
+" tabs
+set expandtab
+set tabstop=2
+set softtabstop=2
+set shiftwidth=2
+set smartindent
+set textwidth=80
+set wrap
+
+" theme
+syntax enable
+
+" thematics
+set background=dark
+colorscheme jellybeans
+"set listchars=space:·\,eol:¬
+set listchars=
+set list
+
+
+" adding pathogen
+execute pathogen#infect('bundle/{}')
+filetype plugin indent on
+
+" encodings
+set fileencoding=utf-8
+set encoding=utf-8
+set fileformats=unix
+
+set viminfofile=${XDG_DATA_HOME:-$HOME/.local/share}/viminfo
+
+set grepprg=grep\ -nH\ $*
+
+"set statusline+=%#warningmsg#
+"set statusline+=%{SyntasticStatuslineFlag()}
+"set statusline+=%*
+
+let g:syntastic_always_populate_loc_list = 1
+let g:syntastic_auto_loc_list = 1
+let g:syntastic_check_on_open = 1
+let g:syntastic_check_on_wq = 0
+
+" filetypes
+let g:syntastic_disabled_filetypes=['asm', 's', 'latex', 'tex']
+
+let g:tex_flavor='latex'
+let g:vimtex_view_method='zathura'
+let g:vimtex_quickfix_mode=0
+set conceallevel=2
+let g:tex_conceal='abdmg'
+"let g:syntastic_tex_checkers=['lacheck']
+let g:vimtex_compiler_method = 'latexrun'
+let g:vimtex_compiler_latexrun = {
+ \ 'backend' : 'jobs',
+ \ 'background' : 1,
+ \ 'build_dir' : 'latex.out',
+ \ 'options' : [
+ \ '-verbose-cmds',
+ \ '--latex-args="-synctex=1"',
+ \ ],
+ \}
+
+let g:latex_view_general_viewer = 'zathura'
+let g:vimtex_view_method = 'zathura'
+
+function! Synctex()
+ " remove 'silent' for debugging
+ execute "silent !mv -u latex.out/" . bufname('%')[:-5] . ".synctex.gz ."
+ execute "silent !zathura --synctex-forward " . line('.') . ":" . col('.') . ":" . bufname('%') . " " . bufname('%')[:-5] . ".pdf"
+ redraw!
+endfunction
+
+map <F5> :make<CR>
+au BufNewFile,BufRead *.fo setlocal ft=fasto
+au BufNewFile,BufRead /tmp/[a-zA-Z0-9]\+/ setlocal ft=sh
+
+" Remove trailing cancer on write
+autocmd BufWritePre * %s/\s\+$//e
+autocmd BufWritePost *.tex !latexrun --bibtex-cmd="biber" --latex-args="-synctex=1" %
+
+set makeprg=GCC_COLORS=\ make
+
+vnoremap // y/\V<C-R>"<CR>
+
+map! <ESC>[1;5A <C-Up>
+map! <ESC>[1;5B <C-Down>
+map! <ESC>[1;5C <C-Right>
+map! <ESC>[1;5D <C-Left>
+
+autocmd VimEnter * silent !echo -ne "\e[1 q"
diff --git a/.config/vimrc b/.config/vimrc
new file mode 100644
index 0000000..63f8fe1
--- /dev/null
+++ b/.config/vimrc
@@ -0,0 +1,129 @@
+runtime! archlinux.vim
+scriptencoding utf-8
+
+" behaviour
+set history=200
+set wildmenu
+set ruler
+set cursorline
+set showmatch
+set hlsearch
+set nocompatible
+set backspace=2
+set incsearch
+set formatoptions+=tcroqn2bmj
+"set formatoptions+=1cjmnoqrw
+"set formatoptions+=2acjnoqrtw
+set relativenumber
+set number
+
+" Enable mouse support
+set mouse=a
+
+" tabs
+set expandtab
+set tabstop=2
+set softtabstop=2
+set shiftwidth=2
+set smartindent
+set textwidth=80
+set wrap
+
+" theme
+syntax enable
+
+set background=dark
+colorscheme jellybeans
+
+" Need to set runtimepath before calling pathogen
+set runtimepath=~/.vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,~/.vim/after
+
+" adding pathogen
+execute pathogen#infect('bundle/{}')
+filetype plugin indent on
+
+" encodings
+set fileencoding=utf-8
+set encoding=utf-8
+set ffs=unix
+
+set viminfofile=${XDG_DATA_HOME:-$HOME/.local/share}/viminfo
+
+" some syntastics
+"set listchars=space:·\,eol:¬
+set listchars=
+set list
+
+set grepprg=grep\ -nH\ $*
+
+"set statusline+=%#warningmsg#
+"set statusline+=%{SyntasticStatuslineFlag()}
+"set statusline+=%*
+
+let g:syntastic_always_populate_loc_list = 1
+let g:syntastic_auto_loc_list = 1
+let g:syntastic_check_on_open = 1
+let g:syntastic_check_on_wq = 0
+
+" filetypes
+let g:syntastic_disabled_filetypes=['asm', 's', 'latex', 'tex']
+
+let g:tex_flavor='latex'
+let g:vimtex_view_method='zathura'
+let g:vimtex_quickfix_mode=0
+set conceallevel=2
+let g:tex_conceal='abdmg'
+"let g:syntastic_tex_checkers=['lacheck']
+let g:vimtex_compiler_method = 'latexrun'
+let g:vimtex_compiler_latexrun = {
+ \ 'backend' : 'jobs',
+ \ 'background' : 1,
+ \ 'build_dir' : 'latex.out',
+ \ 'options' : [
+ \ '-verbose-cmds',
+ \ '--latex-args="-synctex=1"',
+ \ ],
+ \}
+
+let g:latex_view_general_viewer = 'zathura'
+let g:vimtex_view_method = 'zathura'
+
+function! Synctex()
+ " remove 'silent' for debugging
+ execute "silent !mv -u latex.out/" . bufname('%')[:-5] . ".synctex.gz ."
+ execute "silent !zathura --synctex-forward " . line('.') . ":" . col('.') . ":" . bufname('%') . " " . bufname('%')[:-5] . ".pdf"
+ redraw!
+endfunction
+
+map <F5> :make<CR>
+au BufNewFile,BufRead *.fo setlocal ft=fasto
+au BufNewFile,BufRead /tmp/[a-zA-Z0-9]\+/ setlocal ft=sh
+
+
+match ErrorMsg '\%>80v.\+'
+match ErrorMsg ' \+$'
+match ErrorMsg ' \+$'
+
+" Remove trailing cancer on write
+autocmd BufWritePre * %s/\s\+$//e
+autocmd BufWritePost *.tex !latexrun --bibtex-cmd="biber" --latex-args="-synctex=1" %
+"autocmd BufWritePost *.tex !latexrun --latex-cmd xelatex %
+"autocmd BufWritePost *.tex !latexrun --latex-cmd xelatex --bibtex-cmd biber %
+
+set makeprg=GCC_COLORS=\ make
+
+vnoremap // y/\V<C-R>"<CR>
+
+map <ESC>[1;5A <C-Up>
+map <ESC>[1;5B <C-Down>
+map <ESC>[1;5C <C-Right>
+map <ESC>[1;5D <C-Left>
+map! <ESC>[1;5A <C-Up>
+map! <ESC>[1;5B <C-Down>
+map! <ESC>[1;5C <C-Right>
+map! <ESC>[1;5D <C-Left>
+
+map <ESC>[1;3C <ESC>:tabnext<CR>
+map <ESC>[1;3D <ESC>:tabprevious<CR>
+
+autocmd VimEnter * silent !echo -ne "\e[1 q"
diff --git a/.config/x/defaults b/.config/x/defaults
new file mode 100644
index 0000000..2fa5930
--- /dev/null
+++ b/.config/x/defaults
@@ -0,0 +1,60 @@
+URxvt.font: xft:DejaVuSansMono Nerd Font Mono:pixelsize=14
+URxvt.boldFont: xft:DejaVuSansMono Nerd Font Mono:style=bold
+URxvt.italicFont: xft:DejaVuSansMono Nerd Font Mono:style=oblique
+URxvt.boldItalicfont: xft:DejaVuSansMono Nerd Font Mono:style=bold oblique
+
+URxvt.reverseVideo: false
+URxvt.saveLines: 1024
+URxvt.scrollBar: false
+
+! True transparency
+URxvt.depth: 32
+URxvt.background: [0]#000000
+URxvt.foreground: [100]#ffffff
+! Native (fake) transparency
+!URxvt.shading: 20
+!URxvt.transparent: true
+
+URxvt.keysym.Control-Up: \033[1;5A
+URxvt.keysym.Control-Down: \033[1;5B
+URxvt.keysym.Control-Left: \033[1;5D
+URxvt.keysym.Control-Right: \033[1;5C
+
+st.alpha: 0.80
+
+! IR_Black
+*.foreground: #f1f1f1
+*.background: #000000
+*.cursorColor: #f0f080
+
+! Black
+*.color0: #4f4f4f
+*.color8: #7b7b7b
+
+! Red
+*.color1: #fa6c60
+*.color9: #fcb6b0
+
+! Green
+*.color2: #a8ff60
+*.color10: #cfffab
+
+! Yellow
+*.color3: #fffeb7
+*.color11: #ffffcc
+
+! Blue
+*.color4: #96cafe
+*.color12: #b5dcff
+
+! Magenta
+*.color5: #fa73fd
+*.color13: #fb9cfe
+
+! Cyan
+*.color6: #c6c5fe
+*.color14: #e0e0fe
+
+! White
+*.color7: #efedef
+*.color15: #ffffff
diff --git a/.config/xinitrc b/.config/xinitrc
new file mode 100644
index 0000000..e1c9c8a
--- /dev/null
+++ b/.config/xinitrc
@@ -0,0 +1,7 @@
+systemctl --user import-environment DISPLAY
+feh --no-fehbg --bg-scale ~/pictures/bg2.png
+# xrdb -m $XDEFAULTS
+dunst &
+xcompmgr &
+# exec i3
+exec dwm
diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc
new file mode 100644
index 0000000..7c6146c
--- /dev/null
+++ b/.config/zathura/zathurarc
@@ -0,0 +1,4 @@
+set recolor true
+set recolor-darkcolor \#BBDDEE
+set recolor-lightcolor \#020100
+set selection-clipboard clipboard
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
new file mode 100644
index 0000000..a720792
--- /dev/null
+++ b/.config/zsh/.zshrc
@@ -0,0 +1,233 @@
+# ~/.zshrc
+
+export GPG_TTY=$(tty)
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+if [ "$TERM" = "linux" ]; then
+ PROMPT='%(?..(%?%) )'
+ [ -n "$SSH_CLIENT" ] && PROMPT+="[%n@%M] "
+ PROMPT+='%c %(!.#.$) '
+ return
+fi
+
+# Path to your oh-my-zsh installation.
+export ZSH="${XDG_CONFIG_HOME:-$HOME/.config}/oh-my-zsh"
+
+ZSH_THEME="0undefined"
+
+# Uncomment the following line to use case-sensitive completion.
+CASE_SENSITIVE="true"
+
+# Uncomment the following line to disable bi-weekly auto-update checks.
+DISABLE_AUTO_UPDATE="true"
+
+# Uncomment the following line to automatically update without prompting.
+DISABLE_UPDATE_PROMPT="true"
+
+# Uncomment the following line to change how often to auto-update (in days).
+export UPDATE_ZSH_DAYS=31
+
+# Uncomment the following line if pasting URLs and other text is messed up.
+DISABLE_MAGIC_FUNCTIONS=true
+
+# Uncomment the following line to disable auto-setting terminal title.
+DISABLE_AUTO_TITLE="true"
+
+# Uncomment the following line to enable command auto-correction.
+# ENABLE_CORRECTION="true"
+
+# Uncomment the following line to display red dots whilst waiting for completion.
+#COMPLETION_WAITING_DOTS="true"
+
+# Uncomment the following line if you want to disable marking untracked files
+# under VCS as dirty. This makes repository status check for large repositories
+# much, much faster.
+# DISABLE_UNTRACKED_FILES_DIRTY="true"
+
+# Uncomment the following line if you want to change the command execution time
+# stamp shown in the history command output.
+# You can set one of the optional three formats:
+# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
+# or set a custom format using the strftime function format specifications,
+# see 'man strftime' for details.
+# HIST_STAMPS="mm/dd/yyyy"
+
+# Would you like to use another custom folder than $ZSH/custom?
+# ZSH_CUSTOM=/path/to/new-custom-folder
+
+# Which plugins would you like to load?
+# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
+# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
+# Example format: plugins=(rails git textmate ruby lighthouse)
+# Add wisely, as too many plugins slow down shell startup.
+#plugins=(git)
+
+source $ZSH/oh-my-zsh.sh
+
+# User configuration
+
+export MANWIDTH=${MANWIDTH:-80}
+man() {
+ LESS_TERMCAP_md=$'\e[01;38;5;147m' \
+ LESS_TERMCAP_me=$'\e[0m' \
+ LESS_TERMCAP_se=$'\e[0m' \
+ LESS_TERMCAP_so=$'\e[48;5;235;01;38;5;250m' \
+ LESS_TERMCAP_ue=$'\e[0m' \
+ LESS_TERMCAP_us=$'\e[38;5;104m' \
+ command man "$@"
+}
+
+setopt nonomatch
+setopt interactivecomments
+
+HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/histfile"
+HISTSIZE=32768
+SAVEHIST=32768
+setopt hist_ignore_all_dups
+setopt hist_reduce_blanks
+setopt no_share_history
+setopt no_histverify
+
+autoload -Uz compinit
+compinit -d ~/.cache/zcompdump-$ZSH_VERSION
+
+autoload -Uz promptinit
+promptinit
+
+export KEYTIMEOUT=1
+set -o vi
+
+function zle-keymap-select {
+ if [[ ${KEYMAP} == vicmd ]] || [[ $1 = 'block' ]]; then
+ echo -ne '\e[1 q'
+ elif [[ ${KEYMAP} == main ]] || [[ ${KEYMAP} == viins ]] || [[ ${KEYMAP} = '' ]] || [[ $1 = 'beam' ]]; then
+ echo -ne '\e[5 q'
+ fi
+}
+zle -N zle-keymap-select
+
+# zle-line-init() {
+# # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
+# zle -K viins
+# echo -ne "\e[5 q"
+# }
+#zle -N zle-line-init
+echo -ne '\e[5 q' # Use beam shape cursor on startup.
+# preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
+
+autoload -Uz edit-command-line
+zle -N edit-command-line
+bindkey -M vicmd ' ' edit-command-line
+
+bindkey "^e" end-of-line
+bindkey "^a" beginning-of-line
+bindkey -M vicmd "^e" end-of-line
+bindkey -M vicmd "^a" beginning-of-line
+
+bindkey "${terminfo[khome]}" beginning-of-line
+bindkey "${terminfo[kend]}" end-of-line
+bindkey "^[[3~" delete-char
+bindkey "^[3;5~" delete-char
+bindkey "^[[1;5C" forward-word
+bindkey "^[[1;5D" backward-word
+
+autoload -U up-line-or-beginning-search
+autoload -U down-line-or-beginning-search
+zle -N up-line-or-beginning-search
+zle -N down-line-or-beginning-search
+bindkey "^[A" up-line-or-beginning-search
+bindkey "^[OA" up-line-or-beginning-search
+bindkey "^[B" down-line-or-beginning-search
+bindkey "^[OB" down-line-or-beginning-search
+
+
+## Handy functions
+upload () {
+ curl -F file=@${1} http://0x0.st
+}
+
+activate () {
+ if [[ $1 == "" ]]; then
+ ls --color=no -A ~/.env
+ else
+ source ~/.env/$1/bin/activate
+ fi
+}
+
+goto() {
+ cd ~/gits/personal/Documents/$1
+}
+
+stopwatch() {
+ clear
+ date1=`date +%s`;
+ while true; do
+ echo -ne "\r$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)";
+ sleep 0.1
+ done
+}
+
+fs () {
+ if [[ $1 == "" ]]; then
+ printf ']710;%s' "xft:DejaVuSansMono Nerd Font Mono:pixelsize=14"
+ else
+ printf ']710;%s' "xft:DejaVuSansMono Nerd Font Mono:pixelsize=${1}"
+ fi
+}
+
+calcgrade () {
+ if [ -z $1 ]; then
+ echo "Please submit an argument"
+ fi
+ D=$(find . -maxdepth 3 -name $1\* -type d)
+ if [ -z $D ]; then
+ echo $1 "not found"
+ else
+ ls $D/guidelines.mrk
+ echo $( \
+ grep -oE "([0-9]+(\.[0-9]+)?)/[0-9]+" $D/guidelines.mrk \
+ | sed -Ee 's/^([0-9]+(\.[0-9]+)?)\/.*/\1/g' \
+ | tr '\n' '+' \
+ | sed -Ee 's/^(.*)\+$/\1/g' -e 's/\+/ + /g') \
+ | bc
+ fi
+}
+
+fr () {
+ which futhark > /dev/null
+ if [ ! -z $? ]; then
+ activate futhark
+ fi
+ futhark repl
+}
+
+## Aliases
+alias :q='exit'
+alias cgpu='sshpass -e ssh -l qgt268 ku-gpu'
+alias fsharpi='fsharpi --nologo'
+alias fsharpc='fsharpc --nologo --standalone'
+alias gdb='gdb -q'
+alias glog2="git log --graph --abbrev-commit --decorate --format=format:'%Cgreen%h%C(reset) [%G?] %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%Cred%d%C(reset)' --all"
+alias glog='git log --pretty="%Cgreen%H%Creset [%G?] %cn: %s %Cred%d%Creset"'
+alias ls='ls --color=auto'
+alias mutt='neomutt'
+alias pbcopy='xclip -selection clipboard -i'
+alias pbpaste='xclip -selection clipboard -o'
+alias push='git push && mpg123 ~/Downloads/Mario-coin-sound.mp3'
+alias s='vim $(fzf)'
+alias scan='sudo iwlist wlp3s0 scan > /dev/null'
+alias v='echo -ne "\e[1 q" && vim --servername vim'
+alias less='less -R'
+
+## Do before dropping into shell
+source ~/.secrets/sshpass
+
+BANNERFILE=~/.config/texts/todo.md
+
+if [[ $(tput cols) -gt 140 ]]; then
+ pr -mtW 140 $BANNERFILE ~/.config/texts/setsail
+else
+ cat $BANNERFILE
+fi
diff --git a/.xinitrc b/.xinitrc
new file mode 100644
index 0000000..e1c9c8a
--- /dev/null
+++ b/.xinitrc
@@ -0,0 +1,7 @@
+systemctl --user import-environment DISPLAY
+feh --no-fehbg --bg-scale ~/pictures/bg2.png
+# xrdb -m $XDEFAULTS
+dunst &
+xcompmgr &
+# exec i3
+exec dwm
diff --git a/.zprofile b/.zprofile
new file mode 100644
index 0000000..3e68485
--- /dev/null
+++ b/.zprofile
@@ -0,0 +1,47 @@
+#!/usr/bin/env zsh
+
+# Configuration
+export PATH=$PATH:$HOME/.scripts
+
+export EDITOR="vim"
+export TERMINAL="st"
+export BROWSER="firefox-developer-edition"
+export READER="zathura"
+export PAGER="less"
+
+# XDG~
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_CACHE_HOME="$HOME/.cache"
+
+export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority"
+export XDEFAULTS="$HOME/.config/x/defaults"
+export XRESOURCES="$HOME/.config/x/resources"
+export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/xinitrc"
+
+export IPYTHONDIR="${XDG_CACHE_HOME:-$HOME/.cache}/ipython"
+export LESSHISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/lesshist"
+export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/inputrc"
+export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
+export ZSH_COMPDUMP=$XDG_CACHE_HOME/zcompdump-$ZSH_VERSION
+export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android"
+export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo"
+export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
+export AWS_CONFIG_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/aws/config"
+export AWS_SHARED_CREDENTIALS_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/aws/credentials"
+export GNUPGHOME="${XDG_CONFIG_HOME:-$HOME/.config}/gnupg"
+
+export GEM_PATH="${XDG_CACHE_HOME:-$HOME/.cache}/gem"
+export RUSTUP_HOME="${XDG_CACHE_HOME:-$HOME/.cache}/rustup"
+export CARGO_HOME="${XDG_CACHE_HOME:-$HOME/.cache}/cargo"
+export KUBECONFIG="${XDG_CACHE_HOME:-$HOME/.cache}/kube/config"
+
+export VIMINIT="source ${XDG_CONFIG_HOME:-$HOME/.config}/vimrc"
+
+# Preferences
+export LESS=-R
+export MANWIDTH=${MANWIDTH:-80}
+
+alias irssi="irssi --home=${XDG_DATA_HOME:-$HOME/.config/irssi}"
+
+[ "$(tty)" = "/dev/tty1" ] && ! pidof Xorg >/dev/null 2>&1 && exec startx