aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.Xmodmap6
-rw-r--r--.Xresources142
-rw-r--r--.amSynth.presets964
-rw-r--r--.amSynthrc9
-rw-r--r--.arduino/preferences.txt76
l---------.arduino151
-rw-r--r--.bashburnrc39
-rw-r--r--.baudline/baudline_rc93
-rw-r--r--.config/SuperCollider/sc_ide_conf.yaml79
-rw-r--r--.config/SuperCollider/sclang_conf.yaml5
-rw-r--r--.config/SuperCollider/startupfiles/electronicStudio.scd49
-rw-r--r--.config/SuperCollider/startupfiles/shared.scd5
-rw-r--r--.config/SuperCollider/startupfiles/startupMotu.scd14
-rw-r--r--.config/SuperCollider/startupfiles/startupSystem.scd16
-rw-r--r--.config/SuperCollider/startupfiles/startup_example_customize.scd98
-rw-r--r--.config/SuperCollider/startupfiles/startup_example_simpleJIT.scd54
-rw-r--r--.config/ardour3/.a30
-rw-r--r--.config/ardour3/.nevernag0
-rw-r--r--.config/ardour3/ardour.rc365
-rw-r--r--.config/ardour3/ardour3_ui.conf506
-rw-r--r--.config/ardour3/export/FLAC 24 bit (tagged).format30
-rw-r--r--.config/ardour3/gdk-pixbuf.loaders125
-rw-r--r--.config/ardour3/instant.xml21
-rw-r--r--.config/ardour3/pango.modules35
-rw-r--r--.config/ardour3/pango.rc2
-rw-r--r--.config/ardour3/plugin_statuses58
-rw-r--r--.config/ardour3/templates/2014_Deviser_Synth_And_Microphones/2014_Deviser_Synth_And_Microphones.template678
-rw-r--r--.config/compton.conf114
-rwxr-xr-x.config/conky/bottom47
-rwxr-xr-x.config/conky/right97
-rwxr-xr-x.config/conky/side116
-rwxr-xr-x.config/conky/top47
-rw-r--r--.config/crypted-backups56
-rw-r--r--.config/dpms10
-rw-r--r--.config/fontconfig/fonts.conf5
-rw-r--r--.config/gtk-3.0/bookmarks8
-rw-r--r--.config/gtk-3.0/gtk.css10
-rw-r--r--.config/gtk-3.0/settings.ini6
-rw-r--r--.config/khal/khal.conf95
-rw-r--r--.config/khard/khard.conf33
-rw-r--r--.config/linuxsampler.org/Qsampler.conf63
-rw-r--r--.config/mc/ini141
-rw-r--r--.config/mc/panels.ini0
-rw-r--r--.config/mimeapps.list25
l---------.config/mpd/folders/Artists1
l---------.config/mpd/folders/Various Artists1
-rw-r--r--.config/mpd/mpd-marx.conf31
-rw-r--r--.config/mpd/mpd-s4.conf31
-rw-r--r--.config/mpd/mpd.conf30
-rw-r--r--.config/patchagerc19
-rw-r--r--.config/profile-cleaner.conf9
-rw-r--r--.config/psd/.psd.conf67
-rw-r--r--.config/psd/psd.conf67
-rw-r--r--.config/pulse/client.conf3
-rw-r--r--.config/redshift.conf25
-rw-r--r--.config/synergy-s4.conf27
-rw-r--r--.config/synergy-s5.conf22
-rw-r--r--.config/terminology/config/standard/base.cfgbin0 -> 4290 bytes
-rw-r--r--.config/termite/config72
-rw-r--r--.config/user-dirs.dirs15
-rw-r--r--.ctags26
-rw-r--r--.dircolors218
-rw-r--r--.gitconfig128
-rw-r--r--.gitignore378
-rw-r--r--.gitmodules4
-rw-r--r--.gnupg/dirmngr.conf69
-rw-r--r--.gnupg/gpg-agent.conf8
-rw-r--r--.inputrc1
-rw-r--r--.lfmrc111
-rw-r--r--.linphonerc152
-rw-r--r--.local/share/applications/incognichrome.desktop9
-rw-r--r--.local/share/applications/nautilus.desktop205
-rw-r--r--.local/share/applications/pd.desktop8
-rw-r--r--.local/share/applications/securium.desktop9
-rw-r--r--.local/share/applications/systemadm.desktop8
l---------.local/share/shotwell1
-rw-r--r--.mozilla/firefox/profiles.ini9
-rw-r--r--.msmtprc44
-rw-r--r--.mutt/accounts.rc13
-rw-r--r--.mutt/attachments.rc2
-rw-r--r--.mutt/color.rc84
-rw-r--r--.mutt/dave@c-base.org.rc17
-rw-r--r--.mutt/dave@c-base.org.sig1
-rw-r--r--.mutt/dave@sleepmap.de.rc18
-rw-r--r--.mutt/dave@sleepmap.de.sig4
-rw-r--r--.mutt/david.runge@campus.tu-berlin.de.rc18
-rw-r--r--.mutt/david.runge@campus.tu-berlin.de.sig11
-rw-r--r--.mutt/default.rc8
-rw-r--r--.mutt/gpg.rc14
-rw-r--r--.mutt/khard.rc5
-rw-r--r--.mutt/lac@linuxaudio.org.rc18
-rw-r--r--.mutt/lac@linuxaudio.org.sig2
-rw-r--r--.mutt/macros.rc36
-rw-r--r--.mutt/muttrc32
-rw-r--r--.mutt/security.rc2
-rw-r--r--.mutt/sidebar.rc12
-rw-r--r--.mutt/sorting.rc2
-rw-r--r--.ncmpcpp/bindings534
-rw-r--r--.ncmpcpp/config63
-rw-r--r--.ncmpcpp/error.log0
-rw-r--r--.notmuch-config98
l---------.nvim1
l---------.nvimrc1
-rw-r--r--.octaverc18
-rw-r--r--.offlineimaprc88
-rw-r--r--.processing/preferences.txt105
-rw-r--r--.rtorrent.rc106
-rw-r--r--.screenrc153
-rw-r--r--.scvimrc77
-rw-r--r--.tmux.conf133
-rw-r--r--.vdirsyncer/config75
-rw-r--r--.vim/addons-settings.vim184
-rw-r--r--.vim/addons.vim55
-rw-r--r--.vim/custom-functions.vim37
-rw-r--r--.vim/custom-settings.vim240
-rw-r--r--.vimrc124
-rw-r--r--.vundles.local28
-rwxr-xr-x.xinitrc26
-rw-r--r--.xprofile11
-rw-r--r--.zlogin22
-rw-r--r--.zlogout3
m---------.zprezto0
-rw-r--r--.zpreztorc122
-rw-r--r--.zprofile52
-rw-r--r--.zsh.after/aliases.zsh228
-rw-r--r--.zsh.after/apt37
-rw-r--r--.zsh.after/export.zsh49
-rw-r--r--.zsh.after/frqrec0
-rw-r--r--.zsh.after/functions.zsh414
-rw-r--r--.zsh.after/hostspecific.zsh6
-rw-r--r--.zsh.after/key-bindings.zsh22
-rw-r--r--.zsh.after/prompt.zsh2
-rw-r--r--.zsh.after/sources.zsh6
-rw-r--r--.zsh.after/udisks.zsh245
-rw-r--r--.zsh.after/unixpool125
-rw-r--r--.zsh.before/aliases.zsh10
-rw-r--r--.zsh.before/custom_prompt_path.zsh4
-rw-r--r--.zsh.before/functions.zsh11
-rw-r--r--.zsh.before/git.zsh4
-rw-r--r--.zsh.before/key-bindings.zsh10
-rw-r--r--.zsh.before/last-command.zsh7
-rw-r--r--.zsh.before/noglob.zsh4
-rw-r--r--.zsh.before/path.zsh19
-rw-r--r--.zsh.before/rm.zsh2
-rw-r--r--.zsh.before/vi-mode.zsh3
-rw-r--r--.zsh.prompts/prompt_agnoster_setup141
-rw-r--r--.zsh.prompts/prompt_dvzrv_setup94
-rw-r--r--.zsh.prompts/prompt_kylewest_setup57
-rw-r--r--.zsh.prompts/prompt_skwp_setup74
-rw-r--r--.zsh.prompts/prompt_steeef_simplified_setup98
-rw-r--r--.zshenv12
-rw-r--r--.zshrc16
-rwxr-xr-xbin/adjust_dpms55
-rwxr-xr-xbin/androidbackup.sh143
-rwxr-xr-xbin/atmux122
-rwxr-xr-xbin/autostart23
-rwxr-xr-xbin/backup-settings19
-rwxr-xr-xbin/check-rt11
-rwxr-xr-xbin/check-vanilla11
-rwxr-xr-xbin/checkip4
-rw-r--r--bin/connect_to_jack12
-rwxr-xr-xbin/flac2mp319
-rwxr-xr-xbin/functions.sh176
-rwxr-xr-xbin/gpg2mutt69
-rw-r--r--bin/letter71
-rwxr-xr-xbin/lid-switch-action198
-rwxr-xr-xbin/lightdm-display-setup4
-rwxr-xr-xbin/lowercase23
-rwxr-xr-xbin/mirssi12
-rwxr-xr-xbin/monitor-hotplug7
-rwxr-xr-xbin/notify_irssi_server.pl62
-rwxr-xr-xbin/notify_mpd42
-rwxr-xr-xbin/nouveau2nvidia57
-rwxr-xr-xbin/nvidia2nouveau58
-rwxr-xr-xbin/nvsetup10
-rwxr-xr-xbin/pacman-disowned16
-rwxr-xr-xbin/pacoptpd14
-rwxr-xr-xbin/pass2msmtp3
-rw-r--r--bin/pass2offlineimap5
-rwxr-xr-xbin/pass2vdirsyncer4
-rwxr-xr-xbin/rmcache32
-rwxr-xr-xbin/rollback-profile69
-rwxr-xr-xbin/run_once4
-rwxr-xr-xbin/sclang10
-rwxr-xr-xbin/screensetup17
-rwxr-xr-xbin/secret41
-rwxr-xr-xbin/set_backlight56
-rwxr-xr-xbin/set_volume142
-rw-r--r--bin/stikked115
-rwxr-xr-xbin/stop_jack16
-rwxr-xr-xbin/switch_wfs_os91
-rw-r--r--bin/syncmpdpl209
-rwxr-xr-xbin/tex2pdf33
-rwxr-xr-xbin/texcount.pl1391
-rw-r--r--bin/torrentSort.py220
195 files changed, 14202 insertions, 0 deletions
diff --git a/.Xmodmap b/.Xmodmap
new file mode 100644
index 0000000..4cbe5e7
--- /dev/null
+++ b/.Xmodmap
@@ -0,0 +1,6 @@
+! map escape to caps lock
+!remove Lock = Caps_Lock
+clear lock
+keycode 66 = Escape
+!keysym Caps_Lock = Escape
+
diff --git a/.Xresources b/.Xresources
new file mode 100644
index 0000000..7ea2fa7
--- /dev/null
+++ b/.Xresources
@@ -0,0 +1,142 @@
+!! * uses rxvt-unicode
+!! * themed for solarized
+!! * includes font settings for powerline
+!! * some xscreensaver theming
+
+!! SOLARIZED COLORS ----------------------------------------------------
+!! http://github.com/altercation/solarized
+
+! black dark/light
+*color0 : #073642
+*color8 : #002b36
+
+! red dark/light
+*color1 : #dc322f
+*color9 : #cb4b16
+
+! green dark/light
+*color2 : #859900
+*color10 : #b3cd01
+
+! yellow dark/light
+*color3 : #b58900
+*color11 : #f4c32f
+
+! blue dark/light
+*color4 : #268bd2
+*color12 : #30a6f8
+
+! magenta dark/light
+*color5 : #d33682
+*color13 : #6c71c4
+
+! cyan dark/light
+!*color6 : #2aa198
+*color6 : #00afff
+*color14 : #69b3ad
+
+! white dark/light
+*color7 : #eee8d5
+*color15 : #fdf6e3
+!! ---------------------------------------------------------------------
+
+
+!! Xft -----------------------------------------------------------------
+Xft.antialias : true
+Xft.autohint : true
+Xft.hinting : true
+Xft.hintstyle : hintslight
+Xft.dpi : 96
+Xft.rgba : rgb
+Xft.lcdfilter : lcddefault
+!! ---------------------------------------------------------------------
+
+!! URxvt FONT ----------------------------------------------------------
+!! Monospace
+URxvt*font : xft:Monaco for Monospace:regular:size=9
+URxvt*imFont : xft:Monaco for Monospace:regular:size=9
+URxvt*boldFont : xft:Monaco for Monospace:bold:size=9
+URxvt*italicFont : xft:Monaco for Monospace:italic:size=9
+URxvt*boldItalicFont : xft:Monaco for Monospace:bold:italic:size=9
+
+!! URxvt COLORS---------------------------------------------------------
+URxvt*depth : 32
+URxvt.foreground : #a4b6bd
+URxvt*background : [95]#000000
+URxvt.fading : 15
+URxvt.fadeColor : #121212
+URxvt.scrollBar : false
+URxvt*visualBell : false
+
+!! URxvt HIGHLIGHTING --------------------------------------------------
+URxvt.perl-ext-common : default,matcher,vtwheel
+URxvt.matcher.button : 1
+URxvt.url-launcher : firefox
+URxvt.colorUL : #268bd2
+
+!! BUFFER AND SCROLLING ------------------------------------------------
+URxvt.saveLines : 65536
+URxvt*scrollTtyOutput : false
+URxvt*scrollWithBuffer : true
+URxvt*scrollTtyKeypress : true
+
+!! CURSOR AND POINTER --------------------------------------------------
+URxvt.cursorBlink : false
+URxvt.cursorColor : #268bd2
+URxvt.cursorColor2 : #4e4e4e
+URxvt.cursorUnderline : false
+URxvt.pointerColorBackground : #586e75
+URxvt.pointerColorForeground : #93a1a1
+URxvt.pointerBlank : false
+!! ---------------------------------------------------------------------
+URxvt.borderLess: true
+
+!! ICON -----------------------------------------------------------------
+URxvt.iconFile: /usr/share/icons/HighContrast/scalable/apps/utilities-terminal.svg
+!! ---------------------------------------------------------------------
+
+!! xscreensaver FONT ---------------------------------------------------
+xscreensaver.Dialog.headingFont : -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
+xscreensaver.Dialog.bodyFont : -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
+xscreensaver.Dialog.labelFont : -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
+xscreensaver.Dialog.unameFont : -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
+xscreensaver.Dialog.buttonFont : -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
+xscreensaver.Dialog.dateFont : -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
+xscreensaver.passwd.passwdFont : -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
+
+!! xscreensaver DIALOG BOX ---------------------------------------------
+xscreensaver.Dialog.foreground : #ffffff
+xscreensaver.Dialog.background : #111111
+xscreensaver.Dialog.topShadowColor : #111111
+xscreensaver.Dialog.bottomShadowColor : #111111
+xscreensaver.Dialog.Button.foreground : #666666
+xscreensaver.Dialog.Button.background : #ffffff
+
+!! xscreensaver INPUT BOX ----------------------------------------------
+xscreensaver.Dialog.text.foreground : #666666
+xscreensaver.Dialog.text.background : #ffffff
+xscreensaver.Dialog.internalBorderWidth : 24
+xscreensaver.Dialog.borderWidth : 20
+xscreensaver.Dialog.shadowThickness : 2
+
+!! xscreensaver TIMEOUT BAR --------------------------------------------
+xscreensaver.passwd.thermometer.foreground : #ff0000
+xscreensaver.passwd.thermometer.background : #000000
+xscreensaver.passwd.thermometer.width : 8
+
+!! xscreensaver DATESTAMP FORMAT ---------------------------------------
+xscreensaver.dateFormat : %I:%M%P %a %b %d, %Y
+
+!! xscreensaver LIGHTDM COMPATIBILITY ----------------------------------
+xscreensaver.newLoginCommand : dm-tool switch-to-greeter
+
+!! XTERM KEY CODES
+!URxvt.keysym.Control-Up : [1;5A]
+!URxvt.keysym.Control-Down : [1;5B]
+!URxvt.keysym.Control-Left : [1;5D]
+!URxvt.keysym.Control-Right : [1;5C]
+!URxvt.keysym.Control-Shift-C : perl:clipboard:copy
+!URxvt.keysym.Control-Shift-V : perl:clipboard:paste
+!URxvt.keysym.F1 : F1
+!URxvt.keysym.F2 : F2
+
diff --git a/.amSynth.presets b/.amSynth.presets
new file mode 100644
index 0000000..f852b10
--- /dev/null
+++ b/.amSynth.presets
@@ -0,0 +1,964 @@
+amSynth
+<preset> <name> Derren 1
+<parameter> amp_attack 0.15
+<parameter> amp_decay 0.74009
+<parameter> amp_sustain 0.211222
+<parameter> amp_release 0.111362
+<parameter> osc1_waveform 1
+<parameter> filter_attack 6.95688e-09
+<parameter> filter_decay 1.1006
+<parameter> filter_sustain 0.232886
+<parameter> filter_release 0.33064
+<parameter> filter_resonance 0.917114
+<parameter> filter_env_amount 10.5934
+<parameter> filter_cutoff -0.358078
+<parameter> osc2_detune 0
+<parameter> osc2_waveform 1
+<parameter> master_vol 0.5229
+<parameter> lfo_freq 0.808204
+<parameter> lfo_waveform 0
+<parameter> osc2_range -1
+<parameter> osc_mix 0.20171
+<parameter> freq_mod_amount 0.251984
+<parameter> filter_mod_amount -0.228579
+<parameter> amp_mod_amount -0.416837
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.287752
+<parameter> osc2_pulsewidth 0.59915
+<parameter> reverb_roomsize 0.339957
+<parameter> reverb_damp 0.177191
+<parameter> reverb_wet 0.32997
+<parameter> reverb_width 0.979909
+<parameter> distortion_crunch 2.50448e-09
+<parameter> osc2_sync 1
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Synth Strings 1
+<parameter> amp_attack 0.960411
+<parameter> amp_decay 0.02
+<parameter> amp_sustain 1
+<parameter> amp_release 1
+<parameter> osc1_waveform 2
+<parameter> filter_attack 0.0195569
+<parameter> filter_decay 0.02
+<parameter> filter_sustain 1
+<parameter> filter_release 1.05095
+<parameter> filter_resonance 0.594336
+<parameter> filter_env_amount 0
+<parameter> filter_cutoff 0.851124
+<parameter> osc2_detune 0.011899
+<parameter> osc2_waveform 2
+<parameter> master_vol 0.955268
+<parameter> lfo_freq 2.38653
+<parameter> lfo_waveform 0
+<parameter> osc2_range 0
+<parameter> osc_mix 0.0127277
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -0.86315
+<parameter> amp_mod_amount -0.993575
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.788778
+<parameter> osc2_pulsewidth 0.83
+<parameter> reverb_roomsize 0.675502
+<parameter> reverb_damp 0.00193077
+<parameter> reverb_wet 0.0824253
+<parameter> reverb_width 0.477634
+<parameter> distortion_crunch 2.50448e-09
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Violin 1
+<parameter> amp_attack 0.391711
+<parameter> amp_decay 0.11
+<parameter> amp_sustain 0.85
+<parameter> amp_release 0.15
+<parameter> osc1_waveform 2
+<parameter> filter_attack 0.511366
+<parameter> filter_decay 0.02
+<parameter> filter_sustain 0.707847
+<parameter> filter_release 0.3
+<parameter> filter_resonance 0.530301
+<parameter> filter_env_amount 8.63406
+<parameter> filter_cutoff 0.736762
+<parameter> osc2_detune 6.70552e-07
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 2.25779
+<parameter> lfo_waveform 0
+<parameter> osc2_range 1
+<parameter> osc_mix -0.277557
+<parameter> freq_mod_amount 0.207631
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.954063
+<parameter> osc2_pulsewidth 0.682296
+<parameter> reverb_roomsize 0
+<parameter> reverb_damp 0
+<parameter> reverb_wet 0
+<parameter> reverb_width 0
+<parameter> distortion_crunch 1.49012e-08
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Sweet Bass
+<parameter> amp_attack 0.0591818
+<parameter> amp_decay 0.350065
+<parameter> amp_sustain 0.5
+<parameter> amp_release 0.868007
+<parameter> osc1_waveform 2
+<parameter> filter_attack 0
+<parameter> filter_decay 1.36265
+<parameter> filter_sustain 2.78275e-09
+<parameter> filter_release 1.04671
+<parameter> filter_resonance 0.897859
+<parameter> filter_env_amount 16
+<parameter> filter_cutoff 0.271993
+<parameter> osc2_detune 0
+<parameter> osc2_waveform 1
+<parameter> master_vol 0.603862
+<parameter> lfo_freq 1.76685
+<parameter> lfo_waveform 1
+<parameter> osc2_range -1
+<parameter> osc_mix -0.447776
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount 0.4229
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.451552
+<parameter> osc2_pulsewidth 0.0784359
+<parameter> reverb_roomsize 0.62
+<parameter> reverb_damp 0.571492
+<parameter> reverb_wet 0.5
+<parameter> reverb_width 0.994642
+<parameter> distortion_crunch 0.02
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Formant Synth Lead
+<parameter> amp_attack 0.465953
+<parameter> amp_decay 0.282384
+<parameter> amp_sustain 2.78275e-09
+<parameter> amp_release 0.322351
+<parameter> osc1_waveform 2
+<parameter> filter_attack 0.383031
+<parameter> filter_decay 1.33222
+<parameter> filter_sustain 2.78275e-09
+<parameter> filter_release 1.0589
+<parameter> filter_resonance 0.893929
+<parameter> filter_env_amount 16
+<parameter> filter_cutoff -0.265736
+<parameter> osc2_detune 0.0615489
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 0.864093
+<parameter> lfo_waveform 2
+<parameter> osc2_range 1
+<parameter> osc_mix 0
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -0.46097
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 1
+<parameter> osc2_pulsewidth 1
+<parameter> reverb_roomsize 0.741581
+<parameter> reverb_damp 0.557009
+<parameter> reverb_wet 0.078985
+<parameter> reverb_width 1
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 1
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Caves
+<parameter> amp_attack 1.67792
+<parameter> amp_decay 0.25158
+<parameter> amp_sustain 0.930628
+<parameter> amp_release 2.13689
+<parameter> osc1_waveform 2
+<parameter> filter_attack 1.20148
+<parameter> filter_decay 1.88466
+<parameter> filter_sustain 0.629477
+<parameter> filter_release 0.743643
+<parameter> filter_resonance 0.522167
+<parameter> filter_env_amount 8.74291
+<parameter> filter_cutoff 0.894262
+<parameter> osc2_detune 0.273525
+<parameter> osc2_waveform 4
+<parameter> master_vol 1
+<parameter> lfo_freq 7.41958
+<parameter> lfo_waveform 4
+<parameter> osc2_range 0
+<parameter> osc_mix -0.238359
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount 0.932784
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.63605
+<parameter> osc2_pulsewidth 0.694407
+<parameter> reverb_roomsize 0.943169
+<parameter> reverb_damp 0.767595
+<parameter> reverb_wet 0.566246
+<parameter> reverb_width 0.689255
+<parameter> distortion_crunch 0.619883
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Xylophone
+<parameter> amp_attack 0
+<parameter> amp_decay 0.529803
+<parameter> amp_sustain 2.78275e-09
+<parameter> amp_release 0.52916
+<parameter> osc1_waveform 0
+<parameter> filter_attack 0
+<parameter> filter_decay 0.536456
+<parameter> filter_sustain 2.78275e-09
+<parameter> filter_release 0.53
+<parameter> filter_resonance 2.78275e-09
+<parameter> filter_env_amount 9.23726
+<parameter> filter_cutoff -0.353677
+<parameter> osc2_detune 0
+<parameter> osc2_waveform 0
+<parameter> master_vol 1
+<parameter> lfo_freq 0
+<parameter> lfo_waveform 0
+<parameter> osc2_range 2
+<parameter> osc_mix 1
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.469297
+<parameter> osc2_pulsewidth 0.531541
+<parameter> reverb_roomsize 0.0457566
+<parameter> reverb_damp 0.150639
+<parameter> reverb_wet 0.179853
+<parameter> reverb_width 0.951605
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Electric Organ 1
+<parameter> amp_attack 0.17
+<parameter> amp_decay 0
+<parameter> amp_sustain 1
+<parameter> amp_release 0.17
+<parameter> osc1_waveform 1
+<parameter> filter_attack 0
+<parameter> filter_decay 0
+<parameter> filter_sustain 1
+<parameter> filter_release 0
+<parameter> filter_resonance 0.464052
+<parameter> filter_env_amount 0
+<parameter> filter_cutoff 0.324272
+<parameter> osc2_detune 0.01
+<parameter> osc2_waveform 0
+<parameter> master_vol 0.92
+<parameter> lfo_freq 1.0773
+<parameter> lfo_waveform 2
+<parameter> osc2_range 0
+<parameter> osc_mix 0.0246093
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -0.874988
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 2.78275e-09
+<parameter> osc2_pulsewidth 0
+<parameter> reverb_roomsize 0.660043
+<parameter> reverb_damp 0
+<parameter> reverb_wet 0.0205412
+<parameter> reverb_width 0.991763
+<parameter> distortion_crunch 1.49012e-08
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Church Organ
+<parameter> amp_attack 0.17
+<parameter> amp_decay 0
+<parameter> amp_sustain 1
+<parameter> amp_release 0.17
+<parameter> osc1_waveform 1
+<parameter> filter_attack 0
+<parameter> filter_decay 0
+<parameter> filter_sustain 1
+<parameter> filter_release 0
+<parameter> filter_resonance 0.427329
+<parameter> filter_env_amount 0
+<parameter> filter_cutoff 0.603278
+<parameter> osc2_detune 0.04
+<parameter> osc2_waveform 0
+<parameter> master_vol 0.546404
+<parameter> lfo_freq 1.04254
+<parameter> lfo_waveform 2
+<parameter> osc2_range -1
+<parameter> osc_mix 0.0246093
+<parameter> freq_mod_amount 0.01
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -0.764157
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.785879
+<parameter> osc2_pulsewidth 0
+<parameter> reverb_roomsize 0.785879
+<parameter> reverb_damp 1
+<parameter> reverb_wet 0.115122
+<parameter> reverb_width 0.972108
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Reed Organ
+<parameter> amp_attack 0.17
+<parameter> amp_decay 0
+<parameter> amp_sustain 1
+<parameter> amp_release 0.17
+<parameter> osc1_waveform 1
+<parameter> filter_attack 0
+<parameter> filter_decay 0
+<parameter> filter_sustain 1
+<parameter> filter_release 0
+<parameter> filter_resonance 0.763715
+<parameter> filter_env_amount 0
+<parameter> filter_cutoff 0.706986
+<parameter> osc2_detune 0.04
+<parameter> osc2_waveform 0
+<parameter> master_vol 0.546404
+<parameter> lfo_freq 1.04254
+<parameter> lfo_waveform 2
+<parameter> osc2_range -1
+<parameter> osc_mix 0.0246093
+<parameter> freq_mod_amount 0.01
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -0.764157
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.785879
+<parameter> osc2_pulsewidth 0
+<parameter> reverb_roomsize 0.785879
+<parameter> reverb_damp 1
+<parameter> reverb_wet 0.115122
+<parameter> reverb_width 0.972108
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Sexy Boy
+<parameter> amp_attack 0.01
+<parameter> amp_decay 1.92115
+<parameter> amp_sustain 2.78275e-09
+<parameter> amp_release 0.39645
+<parameter> osc1_waveform 2
+<parameter> filter_attack 6.95688e-09
+<parameter> filter_decay 1.94992
+<parameter> filter_sustain 2.78275e-09
+<parameter> filter_release 0.964041
+<parameter> filter_resonance 0.878329
+<parameter> filter_env_amount 16
+<parameter> filter_cutoff -0.329533
+<parameter> osc2_detune 0
+<parameter> osc2_waveform 1
+<parameter> master_vol 0.54167
+<parameter> lfo_freq 1.7625
+<parameter> lfo_waveform 1
+<parameter> osc2_range -1
+<parameter> osc_mix -0.447776
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.451552
+<parameter> osc2_pulsewidth 0.0784359
+<parameter> reverb_roomsize 0.628866
+<parameter> reverb_damp 0.35
+<parameter> reverb_wet 0.343417
+<parameter> reverb_width 1
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Flangey Bass 1
+<parameter> amp_attack 0.148853
+<parameter> amp_decay 0.918287
+<parameter> amp_sustain 0.610371
+<parameter> amp_release 0.313828
+<parameter> osc1_waveform 1
+<parameter> filter_attack 0.536656
+<parameter> filter_decay 0.811711
+<parameter> filter_sustain 2.78275e-09
+<parameter> filter_release 0.51
+<parameter> filter_resonance 0.814662
+<parameter> filter_env_amount 16
+<parameter> filter_cutoff 0.420799
+<parameter> osc2_detune 0.0500005
+<parameter> osc2_waveform 1
+<parameter> master_vol 1
+<parameter> lfo_freq 2.08707e-08
+<parameter> lfo_waveform 0
+<parameter> osc2_range 0
+<parameter> osc_mix 0.109264
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0
+<parameter> osc2_pulsewidth 0
+<parameter> reverb_roomsize 0.857009
+<parameter> reverb_damp 0.919699
+<parameter> reverb_wet 0.11453
+<parameter> reverb_width 0.980541
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> My Friend
+<parameter> amp_attack 0.17
+<parameter> amp_decay 0
+<parameter> amp_sustain 1
+<parameter> amp_release 0.412571
+<parameter> osc1_waveform 1
+<parameter> filter_attack 0
+<parameter> filter_decay 0
+<parameter> filter_sustain 1
+<parameter> filter_release 0
+<parameter> filter_resonance 0.544135
+<parameter> filter_env_amount 0
+<parameter> filter_cutoff 0.440235
+<parameter> osc2_detune -0.00763828
+<parameter> osc2_waveform 2
+<parameter> master_vol 0.504732
+<parameter> lfo_freq 1.0773
+<parameter> lfo_waveform 2
+<parameter> osc2_range 0
+<parameter> osc_mix 0.752224
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -0.874988
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.93233
+<parameter> osc2_pulsewidth 2.78275e-09
+<parameter> reverb_roomsize 0.660043
+<parameter> reverb_damp 0
+<parameter> reverb_wet 0.0166401
+<parameter> reverb_width 0.991763
+<parameter> distortion_crunch 2.50448e-09
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Lazy Moon Lead
+<parameter> amp_attack 0
+<parameter> amp_decay 0.64
+<parameter> amp_sustain 0.944545
+<parameter> amp_release 0.58
+<parameter> osc1_waveform 2
+<parameter> filter_attack 0.19
+<parameter> filter_decay 0.721678
+<parameter> filter_sustain 2.78275e-09
+<parameter> filter_release 0.493298
+<parameter> filter_resonance 0.61918
+<parameter> filter_env_amount 11.6103
+<parameter> filter_cutoff 0.386277
+<parameter> osc2_detune 0
+<parameter> osc2_waveform 2
+<parameter> master_vol 0.421929
+<parameter> lfo_freq 2.08707e-08
+<parameter> lfo_waveform 2
+<parameter> osc2_range 0
+<parameter> osc_mix 0.0784552
+<parameter> freq_mod_amount 3.50605e-09
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.95
+<parameter> osc2_pulsewidth 0.913866
+<parameter> reverb_roomsize 0.511921
+<parameter> reverb_damp 0
+<parameter> reverb_wet 2.78275e-09
+<parameter> reverb_width 0
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> BubbleBath
+<parameter> amp_attack 0.594498
+<parameter> amp_decay 0.377137
+<parameter> amp_sustain 2.78275e-09
+<parameter> amp_release 0.423647
+<parameter> osc1_waveform 2
+<parameter> filter_attack 0.621376
+<parameter> filter_decay 6.95688e-09
+<parameter> filter_sustain 1
+<parameter> filter_release 0.425709
+<parameter> filter_resonance 0.935028
+<parameter> filter_env_amount 16
+<parameter> filter_cutoff -0.2
+<parameter> osc2_detune 0.01
+<parameter> osc2_waveform 1
+<parameter> master_vol 0.470001
+<parameter> lfo_freq 0
+<parameter> lfo_waveform 0
+<parameter> osc2_range 0
+<parameter> osc_mix -0.103494
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 1
+<parameter> osc2_pulsewidth 0.947062
+<parameter> reverb_roomsize 0.618459
+<parameter> reverb_damp 0
+<parameter> reverb_wet 0.214121
+<parameter> reverb_width 1
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Cosmonic
+<parameter> amp_attack 1.18408
+<parameter> amp_decay 0.840999
+<parameter> amp_sustain 0.139107
+<parameter> amp_release 1.05476
+<parameter> osc1_waveform 4
+<parameter> filter_attack 1.24032
+<parameter> filter_decay 0.767937
+<parameter> filter_sustain 0.0471062
+<parameter> filter_release 0.883595
+<parameter> filter_resonance 0.636697
+<parameter> filter_env_amount 3.66455
+<parameter> filter_cutoff 0.639928
+<parameter> osc2_detune -0.513336
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 4.61906
+<parameter> lfo_waveform 0
+<parameter> osc2_range 2
+<parameter> osc_mix 0.770227
+<parameter> freq_mod_amount 1.07907
+<parameter> filter_mod_amount 0.996136
+<parameter> amp_mod_amount -0.967442
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.442048
+<parameter> osc2_pulsewidth 0.729531
+<parameter> reverb_roomsize 0.106133
+<parameter> reverb_damp 0.532089
+<parameter> reverb_wet 0.436212
+<parameter> reverb_width 0.00140755
+<parameter> distortion_crunch 0.387434
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Cosmonic 2
+<parameter> amp_attack 1.18408
+<parameter> amp_decay 0.840999
+<parameter> amp_sustain 0.139107
+<parameter> amp_release 1.05476
+<parameter> osc1_waveform 4
+<parameter> filter_attack 1.24032
+<parameter> filter_decay 0.767937
+<parameter> filter_sustain 0.0471062
+<parameter> filter_release 0.883595
+<parameter> filter_resonance 0.604765
+<parameter> filter_env_amount 6.5832
+<parameter> filter_cutoff 0.639928
+<parameter> osc2_detune 0.9
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 5.84977
+<parameter> lfo_waveform 0
+<parameter> osc2_range 2
+<parameter> osc_mix 0.6
+<parameter> freq_mod_amount 1.13501
+<parameter> filter_mod_amount 0.996136
+<parameter> amp_mod_amount 0.918175
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.4352
+<parameter> osc2_pulsewidth 0.628866
+<parameter> reverb_roomsize 0.106133
+<parameter> reverb_damp 0.532089
+<parameter> reverb_wet 0.754765
+<parameter> reverb_width 0.554632
+<parameter> distortion_crunch 0.366566
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Deeck
+<parameter> amp_attack 0.252126
+<parameter> amp_decay 0.934375
+<parameter> amp_sustain 0.467114
+<parameter> amp_release 0
+<parameter> osc1_waveform 0
+<parameter> filter_attack 0.616969
+<parameter> filter_decay 1.30008
+<parameter> filter_sustain 0.574163
+<parameter> filter_release 0.25626
+<parameter> filter_resonance 0.877329
+<parameter> filter_env_amount 11.6666
+<parameter> filter_cutoff -0.310832
+<parameter> osc2_detune -0.584729
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 0.474773
+<parameter> lfo_waveform 0
+<parameter> osc2_range 1
+<parameter> osc_mix 0
+<parameter> freq_mod_amount 0.121945
+<parameter> filter_mod_amount 0.106303
+<parameter> amp_mod_amount -0.0200853
+<parameter> osc_mix_mode 1
+<parameter> osc1_pulsewidth 0.181575
+<parameter> osc2_pulsewidth 0.863419
+<parameter> reverb_roomsize 0.850228
+<parameter> reverb_damp 0.783434
+<parameter> reverb_wet 0.244986
+<parameter> reverb_width 0.343841
+<parameter> distortion_crunch 0.153213
+<parameter> osc2_sync 1
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Encounter
+<parameter> amp_attack 0.158258
+<parameter> amp_decay 0.693322
+<parameter> amp_sustain 0.186849
+<parameter> amp_release 0.918287
+<parameter> osc1_waveform 1
+<parameter> filter_attack 1.20859
+<parameter> filter_decay 1.14779
+<parameter> filter_sustain 0.442991
+<parameter> filter_release 1.30938
+<parameter> filter_resonance 0.145799
+<parameter> filter_env_amount 9.4168
+<parameter> filter_cutoff 0.237552
+<parameter> osc2_detune 0.0131663
+<parameter> osc2_waveform 0
+<parameter> master_vol 1
+<parameter> lfo_freq 2.27409
+<parameter> lfo_waveform 2
+<parameter> osc2_range 0
+<parameter> osc_mix 0
+<parameter> freq_mod_amount 0.0896232
+<parameter> filter_mod_amount 0.13704
+<parameter> amp_mod_amount -0.5525
+<parameter> osc_mix_mode 1
+<parameter> osc1_pulsewidth 0.4729
+<parameter> osc2_pulsewidth 0.408157
+<parameter> reverb_roomsize 0.50707
+<parameter> reverb_damp 0.530301
+<parameter> reverb_wet 0.470846
+<parameter> reverb_width 0.492365
+<parameter> distortion_crunch 2.78275e-09
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Glassic
+<parameter> amp_attack 0.161656
+<parameter> amp_decay 0
+<parameter> amp_sustain 1
+<parameter> amp_release 0
+<parameter> osc1_waveform 0
+<parameter> filter_attack 0.946797
+<parameter> filter_decay 0.7916
+<parameter> filter_sustain 0.58855
+<parameter> filter_release 1.01752
+<parameter> filter_resonance 0.306685
+<parameter> filter_env_amount 12.1724
+<parameter> filter_cutoff 0.795467
+<parameter> osc2_detune 0
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 0
+<parameter> lfo_waveform 0
+<parameter> osc2_range 2
+<parameter> osc_mix 0.102814
+<parameter> freq_mod_amount 0
+<parameter> filter_mod_amount -1
+<parameter> amp_mod_amount -1
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.59915
+<parameter> osc2_pulsewidth 0.341702
+<parameter> reverb_roomsize 0
+<parameter> reverb_damp 0
+<parameter> reverb_wet 0
+<parameter> reverb_width 0
+<parameter> distortion_crunch 0
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Periodic Junk
+<parameter> amp_attack 1.10748
+<parameter> amp_decay 1.3855
+<parameter> amp_sustain 0.549145
+<parameter> amp_release 0.70646
+<parameter> osc1_waveform 2
+<parameter> filter_attack 1.22195
+<parameter> filter_decay 0.77421
+<parameter> filter_sustain 0.280759
+<parameter> filter_release 0.758031
+<parameter> filter_resonance 0.836285
+<parameter> filter_env_amount 1.90376
+<parameter> filter_cutoff 0.0692091
+<parameter> osc2_detune 0.3
+<parameter> osc2_waveform 0
+<parameter> master_vol 1
+<parameter> lfo_freq 2.03427
+<parameter> lfo_waveform 0
+<parameter> osc2_range -1
+<parameter> osc_mix -0.0200853
+<parameter> freq_mod_amount 0.167045
+<parameter> filter_mod_amount -0.506425
+<parameter> amp_mod_amount 0.506425
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.427329
+<parameter> osc2_pulsewidth 0.328866
+<parameter> reverb_roomsize 0.58855
+<parameter> reverb_damp 0.267416
+<parameter> reverb_wet 0.451766
+<parameter> reverb_width 0.608731
+<parameter> distortion_crunch 0.108641
+<parameter> osc2_sync 1
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Soft Simple
+<parameter> amp_attack 1.15929
+<parameter> amp_decay 1.38035
+<parameter> amp_sustain 0.563645
+<parameter> amp_release 1.58834
+<parameter> osc1_waveform 1
+<parameter> filter_attack 1.20859
+<parameter> filter_decay 1.14779
+<parameter> filter_sustain 0.442991
+<parameter> filter_release 1.30938
+<parameter> filter_resonance 0.140851
+<parameter> filter_env_amount 9.05594
+<parameter> filter_cutoff 0.261013
+<parameter> osc2_detune 0.068699
+<parameter> osc2_waveform 1
+<parameter> master_vol 1
+<parameter> lfo_freq 3.8295
+<parameter> lfo_waveform 2
+<parameter> osc2_range 0
+<parameter> osc_mix 0
+<parameter> freq_mod_amount 0.120685
+<parameter> filter_mod_amount -0.65618
+<parameter> amp_mod_amount 0
+<parameter> osc_mix_mode 1
+<parameter> osc1_pulsewidth 0.519687
+<parameter> osc2_pulsewidth 0.408157
+<parameter> reverb_roomsize 0.50707
+<parameter> reverb_damp 0.530301
+<parameter> reverb_wet 0.470846
+<parameter> reverb_width 0.492365
+<parameter> distortion_crunch 0.129875
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Vibratio
+<parameter> amp_attack 0.158258
+<parameter> amp_decay 0.693322
+<parameter> amp_sustain 0.186849
+<parameter> amp_release 0.918287
+<parameter> osc1_waveform 1
+<parameter> filter_attack 1.20859
+<parameter> filter_decay 1.14779
+<parameter> filter_sustain 0.442991
+<parameter> filter_release 1.30938
+<parameter> filter_resonance 0.91664
+<parameter> filter_env_amount 15.3795
+<parameter> filter_cutoff 0.237552
+<parameter> osc2_detune -0.0173503
+<parameter> osc2_waveform 0
+<parameter> master_vol 1
+<parameter> lfo_freq 0.640491
+<parameter> lfo_waveform 2
+<parameter> osc2_range 0
+<parameter> osc_mix 0.44025
+<parameter> freq_mod_amount 0.0719041
+<parameter> filter_mod_amount 0.13704
+<parameter> amp_mod_amount -0.1229
+<parameter> osc_mix_mode 1
+<parameter> osc1_pulsewidth 0.4729
+<parameter> osc2_pulsewidth 0.509088
+<parameter> reverb_roomsize 0.50707
+<parameter> reverb_damp 0.530301
+<parameter> reverb_wet 0.470846
+<parameter> reverb_width 0.492365
+<parameter> distortion_crunch 2.78275e-09
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Wave
+<parameter> amp_attack 0.752137
+<parameter> amp_decay 0.898853
+<parameter> amp_sustain 0.354657
+<parameter> amp_release 1.27075
+<parameter> osc1_waveform 3
+<parameter> filter_attack 0.875
+<parameter> filter_decay 0.831713
+<parameter> filter_sustain 0.5
+<parameter> filter_release 1.81195
+<parameter> filter_resonance 0.431791
+<parameter> filter_env_amount 0.150695
+<parameter> filter_cutoff 0.581686
+<parameter> osc2_detune -0.133221
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 0.40993
+<parameter> lfo_waveform 0
+<parameter> osc2_range 2
+<parameter> osc_mix 0.358308
+<parameter> freq_mod_amount 0.273799
+<parameter> filter_mod_amount -0.15975
+<parameter> amp_mod_amount -0.320085
+<parameter> osc_mix_mode 1
+<parameter> osc1_pulsewidth 0.486381
+<parameter> osc2_pulsewidth 0.300855
+<parameter> reverb_roomsize 0.779973
+<parameter> reverb_damp 0.553151
+<parameter> reverb_wet 0.0280135
+<parameter> reverb_width 0.430614
+<parameter> distortion_crunch 0.0534721
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Artic
+<parameter> amp_attack 0.576081
+<parameter> amp_decay 1.19447
+<parameter> amp_sustain 0.316166
+<parameter> amp_release 2.06007
+<parameter> osc1_waveform 0
+<parameter> filter_attack 1.2606
+<parameter> filter_decay 2.49172
+<parameter> filter_sustain 0.966529
+<parameter> filter_release 0.804126
+<parameter> filter_resonance 0.157868
+<parameter> filter_env_amount 10.5769
+<parameter> filter_cutoff -0.393938
+<parameter> osc2_detune -0.171913
+<parameter> osc2_waveform 2
+<parameter> master_vol 1
+<parameter> lfo_freq 1.3676
+<parameter> lfo_waveform 2
+<parameter> osc2_range 1
+<parameter> osc_mix 0.88311
+<parameter> freq_mod_amount 0.226119
+<parameter> filter_mod_amount -0.127432
+<parameter> amp_mod_amount 0.293271
+<parameter> osc_mix_mode 1
+<parameter> osc1_pulsewidth 0.565404
+<parameter> osc2_pulsewidth 0.39667
+<parameter> reverb_roomsize 0.995892
+<parameter> reverb_damp 0.966247
+<parameter> reverb_wet 0.388953
+<parameter> reverb_width 0.19668
+<parameter> distortion_crunch 0.0186385
+<parameter> osc2_sync 1
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+<preset> <name> Dirty Pulsating Bass
+<parameter> amp_attack 0.177835
+<parameter> amp_decay 0
+<parameter> amp_sustain 1
+<parameter> amp_release 0.313499
+<parameter> osc1_waveform 1
+<parameter> filter_attack 0.9584
+<parameter> filter_decay 0
+<parameter> filter_sustain 1
+<parameter> filter_release 0.383031
+<parameter> filter_resonance 0.790223
+<parameter> filter_env_amount -0.60913
+<parameter> filter_cutoff 0.7246
+<parameter> osc2_detune -0.985579
+<parameter> osc2_waveform 1
+<parameter> master_vol 0.551537
+<parameter> lfo_freq 2.94987
+<parameter> lfo_waveform 0
+<parameter> osc2_range -1
+<parameter> osc_mix 0.342268
+<parameter> freq_mod_amount 3.50605e-09
+<parameter> filter_mod_amount -0.014684
+<parameter> amp_mod_amount 0.303265
+<parameter> osc_mix_mode 0
+<parameter> osc1_pulsewidth 0.673177
+<parameter> osc2_pulsewidth 2.78275e-09
+<parameter> reverb_roomsize 0.0544407
+<parameter> reverb_damp 0.975315
+<parameter> reverb_wet 2.78275e-09
+<parameter> reverb_width 2.78275e-09
+<parameter> distortion_crunch 0.310438
+<parameter> osc2_sync 0
+<parameter> portamento_time 0
+<parameter> keyboard_mode 0
+<parameter> osc2_pitch 0
+<parameter> filter_type 0
+<parameter> filter_slope 1
+EOF
diff --git a/.amSynthrc b/.amSynthrc
new file mode 100644
index 0000000..decccad
--- /dev/null
+++ b/.amSynthrc
@@ -0,0 +1,9 @@
+midi_driver auto
+oss_midi_device /dev/midi
+midi_channel 0
+audio_driver auto
+oss_audio_device /dev/dsp
+alsa_audio_device default
+sample_rate 44100
+polyphony 16
+pitch_bend_range 2
diff --git a/.arduino/preferences.txt b/.arduino/preferences.txt
new file mode 100644
index 0000000..6724ae7
--- /dev/null
+++ b/.arduino/preferences.txt
@@ -0,0 +1,76 @@
+board=uno
+browser=mozilla
+build.warn_data_percentage=75
+console=true
+console.auto_clear=true
+console.error.file=stderr.txt
+console.length=500
+console.lines=4
+console.output.file=stdout.txt
+editor.antialias=false
+editor.caret.blink=true
+editor.divider.size=0
+editor.external=false
+editor.font=Monospaced,plain,12
+editor.indent=true
+editor.invalid=false
+editor.keys.alternative_cut_copy_paste=true
+editor.keys.home_and_end_travel_far=false
+editor.keys.shift_backspace_is_delete=true
+editor.languages.current=
+editor.linenumbers=false
+editor.save_on_verify=true
+editor.tabs.expand=true
+editor.tabs.size=2
+editor.window.height.default=600
+editor.window.height.min=290
+editor.window.width.default=500
+editor.window.width.min=400
+export.applet.separate_jar_files=false
+export.application.fullscreen=false
+export.application.platform=true
+export.application.stop=true
+export.delete_target_folder=true
+last.ide.1.0.6.daterun=1411912958
+last.ide.1.0.6.hardwarepath=/usr/share/arduino/hardware
+last.ide.1.6.0.daterun=1424022507
+last.ide.1.6.0.hardwarepath=/usr/share/arduino/hardware
+last.screen.height=1200
+last.screen.width=1920
+last.sketch.count=0
+last.sketch0.path=
+launcher=xdg-open
+platform.auto_file_type_associations=true
+preproc.color_datatype=true
+preproc.enhanced_casting=true
+preproc.imports.list=java.applet.*,java.awt.Dimension,java.awt.Frame,java.awt.event.MouseEvent,java.awt.event.KeyEvent,java.awt.event.FocusEvent,java.awt.Image,java.io.*,java.net.*,java.text.*,java.util.*,java.util.zip.*,java.util.regex.*
+preproc.output_parse_tree=false
+preproc.save_build_files=false
+preproc.substitute_floats=true
+preproc.substitute_unicode=true
+preproc.web_colors=true
+programmer=arduino:avrispmkii
+run.display=1
+run.options=
+run.options.memory=false
+run.options.memory.initial=64
+run.options.memory.maximum=256
+run.present.bgcolor=#666666
+run.present.exclusive=false
+run.present.stop.color=#cccccc
+run.window.bgcolor=#DFDFDF
+serial.databits=8
+serial.debug_rate=9600
+serial.parity=N
+serial.port=COM1
+serial.stopbits=1
+sketchbook.path=/home/dave/git/sketchbooks/arduino-sketchbook
+software=ARDUINO
+target=arduino
+target_package=arduino
+target_platform=avr
+update.check=true
+update.id=-5111801774645063504
+update.last=1424022508963
+upload.using=bootloader
+upload.verify=true
diff --git a/.arduino15 b/.arduino15
new file mode 120000
index 0000000..0fbb8ea
--- /dev/null
+++ b/.arduino15
@@ -0,0 +1 @@
+.arduino \ No newline at end of file
diff --git a/.bashburnrc b/.bashburnrc
new file mode 100644
index 0000000..4a3ea24
--- /dev/null
+++ b/.bashburnrc
@@ -0,0 +1,39 @@
+VERSION: 3.1.0
+BBCDWRITER: <Change me>
+BBCDROM: <Change me>
+BBCDMNT: <Change me>
+BBSPEED: -1
+BBBLANKING: fast
+BBNUMDEV: 1
+BBBURNDIR: /tmp/burn
+BBLABEL: BashBurn CD/DVD
+BBDESCRIPTION: Burnt with BashBurn
+BBAUTHOR: David Runge
+BBNORMALIZE: no
+BBDRIVEROPT:
+BBFIFODIR: /tmp
+BBDELTEMPBURN: no
+BBOVERBURN: no
+BBBITRATE: 192
+BBLANG: English
+BBISCONF: 0
+BBDTAO: -tao
+BBPADDING: -pad
+BBCONFFILE: /home/dave/.bashburnrc
+BB_CDBURNCMD: cdrecord
+BB_DVDBURNCMD: growisofs
+BB_DVDBURNCMDOPTS: -r -f -v -J -joliet-long
+BB_ISOCMD: mkisofs
+BB_DVDBLANK: dvd+rw-format
+BB_CDIMAGECMD: cdrdao
+BB_CDAUDIORIP: cdparanoia
+BB_READ_OPTS: -r -R -J -l --allow-leading-dots
+BB_READCD: mkisofs
+BB_MP3ENC: lame
+BB_MP3DEC: mpg123
+BB_OGGENC: oggenc
+BB_OGGDEC: oggdec
+BB_FLACCMD: flac
+BB_EJECT: eject
+BB_NORMCMD: normalize
+BB_NRG2ISO: nrg2iso
diff --git a/.baudline/baudline_rc b/.baudline/baudline_rc
new file mode 100644
index 0000000..81eab48
--- /dev/null
+++ b/.baudline/baudline_rc
@@ -0,0 +1,93 @@
+pause
+memory 42
+fftsize 2048
+slidesize 384
+samplerate 44100.000000
+inchannels 1
+outchannels 2
+spectrum_w_divisions 108
+Hz_reduction 1
+average.geometry 1920x410-1-1
+average.zoom 1x1+0+0
+histogram.geometry 512x256-1-1
+histogram.zoom 7x1+0+0
+spectro.geometry 1024x1031+0+24
+spectro.zoom 1x1+0+0
+waveform.geometry 1920x180-1-1
+waveform.zoom 1x1+302784+0
+inputdevices.geometry +0+0
+playdeck.lpf 768
+playdeck.hpf 256
+file.open.lines 15
+file.open.option_value 0
+file.save.lines 15
+file.average.lines 15
+file.equalization.lines 15
+average.timer 0
+average.last_bank 11
+average.duration 60
+coloraperture.upper 0
+coloraperture.lower -136
+driftintegrator.beamslices 0
+driftintegrator.driftrate 0
+driftintegrator.increment 1000
+driftintegrator.optimumoverlap 1
+driftintegrator.limiter 1000
+driftintegrator.paste_algorithm 0
+driftintegrator.auto_drift_quality 1
+equalization.type 0
+equalization.alpha 100
+equalization.level 0
+histogram.decay 0
+measurements.bin_start 0
+measurements.bin_end 32768
+windowing.type 5
+windowing.beta 600
+color.mono 4
+color.left 1
+color.right 3
+color.r 0
+color.g 1
+color.b 2
+color.0.0.0 0
+color.0.0.1 0
+color.0.0.2 0
+color.0.1.0 512
+color.0.1.1 512
+color.0.1.2 512
+color.0.ops 0
+color.0.map 0
+color.0.palette 9
+color.1.0.0 80
+color.1.0.1 0
+color.1.0.2 -40
+color.1.1.0 512
+color.1.1.1 340
+color.1.1.2 512
+color.1.ops 0
+color.1.map 0
+color.1.palette 0
+color.2.0.0 75
+color.2.0.1 96
+color.2.0.2 42
+color.2.1.0 366
+color.2.1.1 255
+color.2.1.2 499
+color.2.ops 8
+color.2.map 5
+color.2.palette 5
+tone.f.type 1
+tone.f.main_frequency 72000
+tone.f.lower_frequency 20000
+tone.f.upper_frequency 90000
+tone.m.type 0
+tone.m.f.type 1
+tone.m.f.frequency 372
+tone.m.amplitude_depth 90
+tone.m.pulse_duration 100
+tone.m.sweep_duration 1000
+tone.m.positive_phase 1
+tone.m.up_direction 1
+tone.m.exponential_sweep 0
+tone.dual_channel_mode 2
+tone.digital_gain_dB -20
diff --git a/.config/SuperCollider/sc_ide_conf.yaml b/.config/SuperCollider/sc_ide_conf.yaml
new file mode 100644
index 0000000..b15ee2b
--- /dev/null
+++ b/.config/SuperCollider/sc_ide_conf.yaml
@@ -0,0 +1,79 @@
+IDE:
+ editor:
+ blinkDuration: 600
+ colors:
+ evaluatedCode: !textFormat
+ color: "#000000"
+ background: "#f8a200"
+ lineNumbers: !textFormat
+ {}
+ matchingBrackets: !textFormat
+ color: "#ff0000"
+ bold: true
+ mismatchedBrackets: !textFormat
+ color: "#ffffff"
+ background: "#960000"
+ searchResult: !textFormat
+ color: "#7a7a7a"
+ background: "#36475a"
+ selection: !textFormat
+ {}
+ text: !textFormat
+ {}
+ font:
+ antialias: 2
+ family: DejaVu Sans Mono
+ size: 10
+ highlighting:
+ built-in: !textFormat
+ color: "#3333bf"
+ char: !textFormat
+ color: "#007300"
+ class: !textFormat
+ color: "#0000d2"
+ comment: !textFormat
+ color: "#bf0000"
+ env-var: !textFormat
+ color: "#8c4614"
+ keyword: !textFormat
+ color: "#0000e6"
+ bold: true
+ number: !textFormat
+ color: "#980099"
+ primitive: !textFormat
+ color: "#3333bf"
+ string: !textFormat
+ color: "#5f5f5f"
+ symbol: !textFormat
+ color: "#007300"
+ indentWidth: 4
+ lineWrap: true
+ spaceIndent: false
+ stepForwardEvaluation: false
+ interpreter:
+ autoStart: true
+ runtimeDir: ""
+ mainWindow:
+ detached: !QVariantMap
+ documents-dock: ""
+ help-dock: ""
+ post-dock: ""
+ geometry: AdnQywABAAAAAAAAAAAAAAAABP8AAAMIAAAAAAAAAC0AAAN/AAADTAAAAAACAA==
+ state: AAAA/wAAAAD9AAAAAgAAAAAAAAAAAAAAAPwCAAAAAfsAAAAcAGQAbwBjAHUAbQBlAG4AdABzAC0AZABvAGMAawAAAAAA/////wAAAGMA////AAAAAQAAAlsAAAK//AIAAAAC+wAAABIAaABlAGwAcAAtAGQAbwBjAGsBAAAAFQAAAhIAAABMAP////sAAAASAHAAbwBzAHQALQBkAG8AYwBrAQAAAigAAACsAAAATAD///8AAAKkAAACvwAAAAEAAAACAAAAAQAAAAL8AAAAAA==
+ postWindow:
+ lineWrap: false
+ scrollback: 1000
+ recentDocuments: !QVariantList
+ - /home/dave/.config/SuperCollider/startup.scd
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/scoreTick.scd
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/scoreTest.scd
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/HabitSynth.sc
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/HabitScheduler.sc
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/habits
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/habit.scd
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/Habit.sc
+ - /home/dave/Dropbox/tu-berlin/courses/SE Time and space perceptions in sound installations/habits/HabitTimer.sc
+ shortcuts:
+ editor-document-next: Alt+K
+ editor-document-previous: Alt+J
+ startWithSession: last \ No newline at end of file
diff --git a/.config/SuperCollider/sclang_conf.yaml b/.config/SuperCollider/sclang_conf.yaml
new file mode 100644
index 0000000..dcf7a25
--- /dev/null
+++ b/.config/SuperCollider/sclang_conf.yaml
@@ -0,0 +1,5 @@
+includePaths:
+ []
+excludePaths:
+ []
+postInlineWarnings: false \ No newline at end of file
diff --git a/.config/SuperCollider/startupfiles/electronicStudio.scd b/.config/SuperCollider/startupfiles/electronicStudio.scd
new file mode 100644
index 0000000..b37b732
--- /dev/null
+++ b/.config/SuperCollider/startupfiles/electronicStudio.scd
@@ -0,0 +1,49 @@
+//Server.local.options.numOutputBusChannels = 12; // change number of input and output channels
+Server.local.options.numOutputBusChannels = 8; // change number of input and output channels
+Server.local.options.numInputBusChannels = 0;//8;
+//Server.local.options.blockSize = 128; //256; // increase block size (default is 64)
+Server.local.options.sampleRate = 41000; //96000; // increase sampling rate (if your hardware supports it)
+Server.local.options.memSize = 6291456;//2097152; // 1048576;
+Server.local.options.maxNodes = 65536;
+//Server.local.options.maxSynthDefs = 16384;
+
+// hook up jack ports to audio channels
+//"SC_JACK_DEFAULT_INPUTS".setenv(
+//"rme_fireface:adat-01-in,
+// rme_fireface:adat-02-in,
+// rme_fireface:adat-03-in,
+// rme_fireface:adat-04-in,
+// rme_fireface:adat-05-in,
+// rme_fireface:adat-06-in,
+// rme_fireface:adat-07-in,
+// rme_fireface:adat-08-in,
+// rme_fireface:adat-09-in,
+// rme_fireface:adat-10-in,
+// rme_fireface:adat-11-in,
+// rme_fireface:adat-12-in,
+// rme_fireface:adat-13-in,
+// rme_fireface:adat-14-in,
+// rme_fireface:adat-15-in,
+// rme_fireface:adat-16-in"
+//);
+//"SC_JACK_DEFAULT_OUTPUTS".setenv(
+//"system"
+//"firewire_pcm:0000a350026756bfa_pbk_analog-1_out"
+//"rme_fireface:adat-01-out"
+//"rme_fireface:adat-01-out,
+// rme_fireface:adat-02-out,
+// rme_fireface:adat-03-out,
+// rme_fireface:adat-04-out,
+// rme_fireface:adat-05-out,
+// rme_fireface:adat-06-out,
+// rme_fireface:adat-07-out,
+// rme_fireface:adat-08-out,
+// rme_fireface:adat-09-out,
+// rme_fireface:adat-10-out,
+// rme_fireface:adat-11-out,
+// rme_fireface:adat-12-out,
+// rme_fireface:adat-13-out,
+// rme_fireface:adat-14-out,
+// rme_fireface:adat-15-out,
+// rme_fireface:adat-16-out"
+//);
diff --git a/.config/SuperCollider/startupfiles/shared.scd b/.config/SuperCollider/startupfiles/shared.scd
new file mode 100644
index 0000000..6f6cfc3
--- /dev/null
+++ b/.config/SuperCollider/startupfiles/shared.scd
@@ -0,0 +1,5 @@
+// change the standard archive path to a custom one:
+"Applying shared system settings.".postln;
+MP3.lamepath = "/usr/bin/lame";
+MP3.oggdecpath = "/usr/bin/oggdec";
+Archive.archiveDir = "~/Dropbox/software/SuperCollider".standardizePath;
diff --git a/.config/SuperCollider/startupfiles/startupMotu.scd b/.config/SuperCollider/startupfiles/startupMotu.scd
new file mode 100644
index 0000000..c3626f7
--- /dev/null
+++ b/.config/SuperCollider/startupfiles/startupMotu.scd
@@ -0,0 +1,14 @@
+Server.local.options.numOutputBusChannels = 8; // change number of input and output channels
+Server.local.options.numInputBusChannels = 0;//8;
+//Server.local.options.device = "MOTU Traveler";
+//Server.local.options.device = "firewire_pcm";
+//Server.local.options.device = nil; // use the system default soundcard
+Server.local.options.blockSize = 128; //256; // increase block size (default is 64)
+Server.local.options.sampleRate = 48000; //96000; // increase sampling rate (if your hardware supports it)
+Server.local.options.memSize = 6291456;//2097152; // 1048576;
+//Server.local.options.maxNodes = 65536;
+//Server.local.options.maxSynthDefs = 16384;
+
+// hook up jack ports to audio channels
+"SC_JACK_DEFAULT_INPUTS".setenv("firewire_pcm:dev0_cap_Analog1_in,firewire_pcm:dev0_cap_Analog2_in,firewire_pcm:dev0_cap_Analog3_in,firewire_pcm:dev0_cap_Analog4_in,firewire_pcm:dev0_cap_Analog5_in,firewire_pcm:dev0_cap_Analog6_in,firewire_pcm:dev0_cap_Analog7_in,firewire_pcm:dev0_cap_Analog8_in");
+"SC_JACK_DEFAULT_OUTPUTS".setenv("firewire_pcm:dev0_pbk_Analog1_out,firewire_pcm:dev0_pbk_Analog2_out,firewire_pcm:dev0_pbk_Analog3_out,firewire_pcm:dev0_pbk_Analog4_out,firewire_pcm:dev0_pbk_Analog5_out,firewire_pcm:dev0_pbk_Analog6_out,firewire_pcm:dev0_pbk_Analog7_out,firewire_pcm:dev0_pbk_Analog8_out");
diff --git a/.config/SuperCollider/startupfiles/startupSystem.scd b/.config/SuperCollider/startupfiles/startupSystem.scd
new file mode 100644
index 0000000..51c4009
--- /dev/null
+++ b/.config/SuperCollider/startupfiles/startupSystem.scd
@@ -0,0 +1,16 @@
+load("/home/dave/.config/SuperCollider/startupfiles/shared.scd");
+"Starting with internal system settings.".postln;
+Server.local.options.sampleRate = 48000.0;
+Server.local.options.blockSize = 128;
+//Server.local.options.numOutputBusChannels = 4;
+Server.local.options.numOutputBusChannels = 2;
+Server.local.options.numInputBusChannels = 2;
+Server.local.options.maxNodes = 65536;
+Server.local.options.memSize = 2097152; // 1048576
+Server.local.options.maxSynthDefs = 16384;
+
+// hook up jack ports to audio channels
+//"SC_JACK_DEFAULT_INPUTS".setenv("system:capture_1,system:capture_2");
+"SC_JACK_DEFAULT_INPUTS".setenv("system");
+//"SC_JACK_DEFAULT_OUTPUTS".setenv("system:playback_1,system:playback_2,system:playback_3,system:playback_4");
+"SC_JACK_DEFAULT_OUTPUTS".setenv("system");
diff --git a/.config/SuperCollider/startupfiles/startup_example_customize.scd b/.config/SuperCollider/startupfiles/startup_example_customize.scd
new file mode 100644
index 0000000..6bd342e
--- /dev/null
+++ b/.config/SuperCollider/startupfiles/startup_example_customize.scd
@@ -0,0 +1,98 @@
+"startup example - customising Menus.".postln;
+
+ // choose which server to use,
+ // e.g. for teaching, take internal, so scope works
+Server.default = s = Server.internal;
+{ try { Server.local.window.close } }.defer(0.5);
+
+s.options
+ .numAudioBusChannels_(1024) // lots of busses for JITLib
+ .zeroConf_(false) // don't wait for zeroconf when booting server
+// .device_() // maybe set a specific device ?
+// .numInputBusChannels_() // with a specific number of ins
+// .numOutputBusChannels() // ... and outs - default is 8.
+ .memSize_(8192 * 32) // memSize is in kB, so 8 * 32 = 256 MB for soundfiles, buffers
+
+ ;
+
+
+ // JIT preparation
+q = q ? (); // make a global dictionary for everything
+p = ProxySpace.push(s); // make a proxyspace and push it.
+q.numChans = 8; // number of channels of audio setup
+
+ //text editor tweaks & Library Menu
+Platform.case(\osx, {
+ // put the post window where you prefer
+ Document.listener.bounds_(Rect(Window.screenBounds.width - 400, 2, 400, 300)); Document.listener.background_(Color.blue(0.2, 0.9)); // and color it. // .alwaysOnTop_(true);
+ Document.listener.stringColor_(Color(1, 0.62, 0));
+ Document.postColor_(Document.listener.stringColor);
+
+
+ SkipJack.verbose = false; // reduce info posting
+
+
+ // put things in the Library menu:
+ // Custom Menu Items - OSX only - configure here
+ CocoaMenuItem.add(["server meter"],{ Server.default.meter });
+ CocoaMenuItem.add(["server window"],{ Server.default.window });
+ CocoaMenuItem.add(["scope Ins"],{ q.scope = s.scope(q.numChans, index: s.options.numOutputBusChannels, zoom: 9) });
+ CocoaMenuItem.add(["scope Outs"],{ q.scope = s.scope(q.numChans, index: 0, zoom: 9) });
+ CocoaMenuItem.add(["FreqScope"],{ q.fscope = FreqScope.new });
+
+ // an 8 chan test sound
+ CocoaMenuItem.add(["TestSound8"],{
+ p[\zztest] = { BPF.ar(Dust.ar(5 ! q.numChans, 50), { exprand(200, 2010) } ! q.numChans, 0.05)
+ * GrayNoise.ar(0.1, 1) };
+ p[\zztest].playN(vol: 0.25);
+ });
+
+ CocoaMenuItem.add(["places", "recordings"],{ unixCmd("open" + quote(thisProcess.platform.recordingsDir)) });
+ CocoaMenuItem.add(["places", "~/scwork"],{ unixCmd("open ~/scwork") });
+ CocoaMenuItem.add(["places", "supportDirs"],{
+ unixCmd("open " ++ Platform.userAppSupportDir.asCompileString);
+ unixCmd("open " ++ Platform.systemAppSupportDir.asCompileString);
+ });
+ CocoaMenuItem.add(["places", "extensionDirs"],{
+ unixCmd("open " ++ Platform.userExtensionDir.asCompileString);
+ unixCmd("open " ++ Platform.systemExtensionDir.asCompileString);
+ });
+
+ CocoaMenuItem.add(["quarks", "Quarks.find"], { Window("find in Quarks folder dialog ...").front });
+ CocoaMenuItem.add(["quarks", "Quarks.listInstalled"], {
+ var str = "/**** All currently installed quarks: ****/\n";
+ Quarks.installed.do { |quark|
+ str = str + ("\t" ++ quark.name.asCompileString ++ ".include;\n");
+ };
+ Document("All currently installed quarks", str);
+ });
+ CocoaMenuItem.add(["quarks", "Quarks.gui"], { Quarks.gui; });
+ CocoaMenuItem.add(["quarks", "Quarks.update"], { Quarks.checkoutAll; });
+});
+
+ // now really start the server, then load setup in doWhenBooted
+Task {
+ 0.5.wait;
+ s.quit; // sometimes the server must be quit first,
+ 1.wait; // and waiting between steps can be helpful.
+ // tell me the new server configuration when booting:
+ s.boot; // now boot.
+ s.sync; // wait for doWhenBooted before continuing
+
+ 1.wait;
+ // do whatever else belongs to setup: e.g. load some buffers,
+// q.bufs = "~/scwork/XYZ/sounds/*".pathMatch.do { |path| Buffer.read(s, path) };
+// s.sync; // wit till buffers are there
+
+ // load some code files, wait between loads
+// 1.wait;
+// "~/scwork/XYZ/patches/*.rtf".pathMatch.collect { |path|
+// path.load; 0.5.wait;
+// };
+
+ // s.scope(q.numChans, zoom: 9);
+
+ "startup example with custom Menus done.".postln;
+
+}.play(AppClock);
+
diff --git a/.config/SuperCollider/startupfiles/startup_example_simpleJIT.scd b/.config/SuperCollider/startupfiles/startup_example_simpleJIT.scd
new file mode 100644
index 0000000..92664e0
--- /dev/null
+++ b/.config/SuperCollider/startupfiles/startup_example_simpleJIT.scd
@@ -0,0 +1,54 @@
+
+"simple JIT startup example.".postln;
+
+ // choose which server to use,
+ // e.g. for teaching, take internal, so scope works
+Server.default = s = Server.internal;
+{ try { Server.local.window.close } }.defer(0.5);
+
+s.options
+ .numAudioBusChannels_(1024)
+ .zeroConf_(false) // don't wait for zeroconf when booting server
+ .memSize_(8192 * 32) // memSize is in kB, so 8 * 32 = 256 MB for soundfiles, buffers
+
+// // keep several combinations of audio devices + numChannels
+// .device_("MicLineOut") // an aggregate device
+// .hardwareBufferSize_(512) // 512 is default
+// .numInputBusChannels_(8) // 8 is default
+// .numOutputBusChannels_(8) // 8 is default
+
+ // comment out unused devices.
+// .device_("Fireface 400")
+// .hardwareBufferSize_(128)
+// .numInputBusChannels_(18)
+// .numOutputBusChannels_(18)
+;
+
+
+q = q ? (); // make a global dictionary for everything
+
+p = Ndef.dictFor(s); // make a proxyspace for Ndefs on the default server
+p.push(s); // and push it - so Ndef(\asd) === ~asd now.
+
+s.quit; // in case the server is still running, quit it.
+
+ // decide what should happen after server has booted:
+s.doWhenBooted({
+ 1.wait;
+ "server is booted - do further setup here...".postln;
+ // make some JIT guis:
+ try { q.pxmix.win.close }; q.pxmix = ProxyMixer(p, 16);
+ try { q.tdg.win.close }; q.tdg = TdefAllGui(16); q.tdg.moveTo(210, 600);
+ try { q.pdg.win.close }; q.pdg = PdefAllGui(16); q.pdg.moveTo(420, 600);
+
+ 1.wait;
+
+ Env.perc.test; // and play a test sound if you like
+ "simple JIT setup done.".postln;
+});
+
+Task({
+ 1.wait; // wait till quit has happened - make longer if needed.
+ s.boot; // boot again
+}).play(AppClock);
+
diff --git a/.config/ardour3/.a3 b/.config/ardour3/.a3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/ardour3/.a3
diff --git a/.config/ardour3/.nevernag b/.config/ardour3/.nevernag
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/ardour3/.nevernag
diff --git a/.config/ardour3/ardour.rc b/.config/ardour3/ardour.rc
new file mode 100644
index 0000000..a5737e6
--- /dev/null
+++ b/.config/ardour3/ardour.rc
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Ardour>
+ <Config>
+ <Option name="auto-connect-standard-busses" value="1"/>
+ <Option name="output-auto-connect" value="AutoConnectPhysical"/>
+ <Option name="input-auto-connect" value=""/>
+ <Option name="trace-midi-input" value="0"/>
+ <Option name="trace-midi-output" value="0"/>
+ <Option name="send-mtc" value="0"/>
+ <Option name="send-mmc" value="0"/>
+ <Option name="send-midi-clock" value="0"/>
+ <Option name="mmc-control" value="0"/>
+ <Option name="midi-feedback" value="0"/>
+ <Option name="mmc-receive-device-id" value="127"/>
+ <Option name="mmc-send-device-id" value="0"/>
+ <Option name="initial-program-change" value="-1"/>
+ <Option name="diplay-first-midi-bank-as-zero" value="0"/>
+ <Option name="mtc-qf-speed-tolerance" value="5"/>
+ <Option name="timecode-sync-frame-rate" value="1"/>
+ <Option name="timecode-source-is-synced" value="1"/>
+ <Option name="timecode-source-2997" value="0"/>
+ <Option name="sync-source" value="JACK"/>
+ <Option name="ltc-source-port" value="system:capture_1"/>
+ <Option name="send-ltc" value="0"/>
+ <Option name="ltc-send-continuously" value="1"/>
+ <Option name="ltc-output-port" value=""/>
+ <Option name="ltc-output-volume" value="0.125892"/>
+ <Option name="feedback-interval-ms" value="100"/>
+ <Option name="use-tranzport" value="1"/>
+ <Option name="remote-model" value="UserOrdered"/>
+ <Option name="minimum-disk-io-bytes" value="262144"/>
+ <Option name="midi-readahead" value="1"/>
+ <Option name="capture-buffer-seconds" value="5"/>
+ <Option name="playback-buffer-seconds" value="5"/>
+ <Option name="midi-track-buffer-seconds" value="1"/>
+ <Option name="disk-choice-space-threshold" value="57600000"/>
+ <Option name="auto-analyse-audio" value="0"/>
+ <Option name="osc-port" value="3819"/>
+ <Option name="use-osc" value="0"/>
+ <Option name="edit-mode" value="Slide"/>
+ <Option name="link-region-and-track-selection" value="0"/>
+ <Option name="link-editor-and-mixer-selection" value="0"/>
+ <Option name="keyboard-layout-name" value="ansi"/>
+ <Option name="automation-follows-regions" value="1"/>
+ <Option name="region-boundaries-from-selected-tracks" value="1"/>
+ <Option name="region-boundaries-from-onscreen_tracks" value="1"/>
+ <Option name="autoscroll-editor" value="1"/>
+ <Option name="mute-affects-pre-fader" value="1"/>
+ <Option name="mute-affects-post-fader" value="1"/>
+ <Option name="mute-affects-control-outs" value="1"/>
+ <Option name="mute-affects-main-outs" value="1"/>
+ <Option name="monitoring-model" value="ExternalMonitoring"/>
+ <Option name="listen-position" value="PreFaderListen"/>
+ <Option name="pfl-position" value="PFLFromAfterProcessors"/>
+ <Option name="afl-position" value="AFLFromAfterProcessors"/>
+ <Option name="use-monitor-bus" value="1"/>
+ <Option name="solo-control-is-listen-control" value="0"/>
+ <Option name="exclusive-solo" value="0"/>
+ <Option name="latched-record-enable" value="0"/>
+ <Option name="all-safe" value="0"/>
+ <Option name="show-solo-mutes" value="1"/>
+ <Option name="solo-mute-override" value="0"/>
+ <Option name="tape-machine-mode" value="0"/>
+ <Option name="solo-mute-gain" value="0"/>
+ <Option name="monitor-bus-preferred-bundle" value=""/>
+ <Option name="quieten-at-speed" value="0"/>
+ <Option name="link-send-and-route-panner" value="1"/>
+ <Option name="midi-audition-synth-uri" value="http://calf.sourceforge.net/plugins/Fluidsynth"/>
+ <Option name="clicking" value="0"/>
+ <Option name="click-sound" value=""/>
+ <Option name="click-emphasis-sound" value=""/>
+ <Option name="click-gain" value="1.38036"/>
+ <Option name="plugins-stop-with-transport" value="0"/>
+ <Option name="stop-recording-on-xrun" value="0"/>
+ <Option name="create-xrun-marker" value="1"/>
+ <Option name="stop-at-session-end" value="1"/>
+ <Option name="seamless-loop" value="0"/>
+ <Option name="preroll" value="0"/>
+ <Option name="postroll" value="0"/>
+ <Option name="rf-speed" value="2"/>
+ <Option name="shuttle-speed-factor" value="1"/>
+ <Option name="shuttle-speed-threshold" value="5"/>
+ <Option name="shuttle-behaviour" value="Wheel"/>
+ <Option name="shuttle-units" value="Percentage"/>
+ <Option name="primary-clock-delta-edit-cursor" value="0"/>
+ <Option name="secondary-clock-delta-edit-cursor" value="0"/>
+ <Option name="show-track-meters" value="1"/>
+ <Option name="locate-while-waiting-for-sync" value="0"/>
+ <Option name="disable-disarm-during-roll" value="0"/>
+ <Option name="always-play-range" value="0"/>
+ <Option name="super-rapid-clock-update" value="0"/>
+ <Option name="meter-hold" value="100"/>
+ <Option name="meter-falloff" value="32"/>
+ <Option name="meter-vu-standard" value="MeteringVUstandard"/>
+ <Option name="meter-line-up-level" value="MeteringLineUp18"/>
+ <Option name="meter-line-up-din" value="MeteringLineUp15"/>
+ <Option name="meter-peak" value="0"/>
+ <Option name="meter-style-led" value="1"/>
+ <Option name="show-editor-meter" value="1"/>
+ <Option name="auditioner-output-left" value="ardour:monitor/audio_in 1"/>
+ <Option name="auditioner-output-right" value="ardour:monitor/audio_in 2"/>
+ <Option name="replicate-missing-region-channels" value="0"/>
+ <Option name="hiding-groups-deactivates-groups" value="1"/>
+ <Option name="verify-remove-last-capture" value="1"/>
+ <Option name="no-new-session-dialog" value="1"/>
+ <Option name="use-windows-vst" value="1"/>
+ <Option name="use-lxvst" value="1"/>
+ <Option name="save-history" value="1"/>
+ <Option name="save-history-depth" value="20"/>
+ <Option name="history-depth" value="20"/>
+ <Option name="use-overlap-equivalency" value="0"/>
+ <Option name="periodic-safety-backups" value="1"/>
+ <Option name="periodic-safety-backup-interval" value="120"/>
+ <Option name="automation-interval-msecs" value="30"/>
+ <Option name="only-copy-imported-files" value="1"/>
+ <Option name="keep-tearoffs" value="0"/>
+ <Option name="new-plugins-active" value="1"/>
+ <Option name="keyboard-layout" value="ansi"/>
+ <Option name="default-bindings" value="ardour"/>
+ <Option name="default-narrow_ms" value="0"/>
+ <Option name="name-new-markers" value="0"/>
+ <Option name="rubberbanding-snaps-to-grid" value="0"/>
+ <Option name="font-scale" value="102400"/>
+ <Option name="default-session-parent-dir" value="/media/Data/Audio"/>
+ <Option name="show-waveforms" value="1"/>
+ <Option name="show-waveforms-while-recording" value="1"/>
+ <Option name="waveform-scale" value="Linear"/>
+ <Option name="waveform-shape" value="Traditional"/>
+ <Option name="allow-special-bus-removal" value="0"/>
+ <Option name="processor-usage" value="0"/>
+ <Option name="color-regions-using-track-color" value="0"/>
+ <Option name="max-gain" value="2"/>
+ <Option name="update-editor-during-summary-drag" value="1"/>
+ <Option name="never-display-periodic-midi" value="1"/>
+ <Option name="sound-midi-notes" value="1"/>
+ <Option name="use-plugin-own-gui" value="1"/>
+ <Option name="max-recent-sessions" value="10"/>
+ <Option name="automation-thinning-factor" value="20"/>
+ <Option name="freesound-download-dir" value="/home/dave/Freesound/snd"/>
+ <Option name="denormal-protection" value="0"/>
+ <Option name="denormal-model" value="DenormalFTZDAZ"/>
+ <Option name="show-zoom-tools" value="1"/>
+ <Option name="widget-prelight" value="1"/>
+ <Option name="use-tooltips" value="1"/>
+ <Option name="mixer-strip-visibility" value="PhaseInvert,SoloSafe,SoloIsolated,MeterPoint"/>
+ <Option name="allow-non-quarter-pulse" value="0"/>
+ <Option name="show-region-gain" value="0"/>
+ <Option name="osx-pingback-url" value="http://community.ardour.org/pingback/osx/"/>
+ <Option name="linux-pingback-url" value="http://community.ardour.org/pingback/linux/"/>
+ <Option name="tutorial-manual-url" value="http://ardour.org/flossmanual"/>
+ <Option name="reference-manual-url" value="http://manual.ardour.org/"/>
+ <Option name="updates-url" value="http://ardour.org/whatsnew.html"/>
+ <Option name="donate-url" value="http://ardour.org/donate"/>
+ <Option name="video-advanced-setup" value="0"/>
+ <Option name="video-server-url" value="http://localhost:1554"/>
+ <Option name="video-server-docroot" value="/"/>
+ <Option name="show-video-export-info" value="1"/>
+ <Option name="show-video-server-dialog" value="1"/>
+ </Config>
+ <Metadata/>
+ <Extra>
+ <AudioSetup>
+ <periods val="2"/>
+ <ports val="128"/>
+ <inlatency val="0"/>
+ <outlatency val="0"/>
+ <realtime val="1"/>
+ <nomemorylock val="0"/>
+ <unlockmemory val="0"/>
+ <softmode val="0"/>
+ <force16bit val="0"/>
+ <hwmonitor val="0"/>
+ <hwmeter val="0"/>
+ <verbose val="0"/>
+ <samplerate val="48000Hz"/>
+ <periodsize val="1024"/>
+ <serverpath val="/usr/bin/jackd"/>
+ <driver val="FFADO"/>
+ <interface val=""/>
+ <timeout val=""/>
+ <dither val="None"/>
+ <audiomode val="Playback/recording on 1 device"/>
+ <inputdevice val=""/>
+ <outputdevice val=""/>
+ <mididriver val="None"/>
+ </AudioSetup>
+ <Keyboard edit-button="3" edit-modifier="4" delete-button="3" delete-modifier="1" snap-modifier="32" insert-note-button="1" insert-note-modifier="4"/>
+ <TransportControllables roll="2" stop="3" goto-start="4" goto-end="5" auto-loop="6" play-selection="7" rec="8" shuttle="20"/>
+ <UI status-bar="Disk,DSP,Buffers,Audio,Format">
+ <Window name="theme-manager" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="key-editor" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="rc-options-editor" visible="no" x-off="189" y-off="224" x-size="806" y-size="635"/>
+ <Window name="session-options-editor" visible="no" x-off="0" y-off="235" x-size="697" y-size="366"/>
+ <Window name="speaker-config" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="about" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="add-routes" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="add-video" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="inspector" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="audio-midi-setup" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="bundle-manager" visible="no" x-off="422" y-off="0" x-size="480" y-size="240"/>
+ <Window name="locations" visible="no" x-off="0" y-off="25" x-size="857" y-size="487"/>
+ <Window name="big-clock" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="audio-connection-manager" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="midi-connection-manager" visible="no" x-off="304" y-off="427" x-size="940" y-size="811"/>
+ <Window name="R-27-46" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-27-49" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-27-50" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8372" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8365" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8388" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8506" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8484" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8669" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8368" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8369" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-8346-8377" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-187-206" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-187-209" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-187-210" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-252" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-378" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-255" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-256" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-284" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-398" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-287" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-288" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-316" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-472" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-418" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-319" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-320" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-539" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-532" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-535" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-536" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1438-1464" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1438-1457" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1438-1460" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1438-1461" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1438-1469" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1479-1505" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1479-1498" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1479-1569" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1479-1608" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1479-1501" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1479-1502" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1479-1541" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8372" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8365" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8388" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8506" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8484" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8669" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8368" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8369" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8346-8377" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8565-8591" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8565-8584" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8565-8607" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8565-8587" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8565-8588" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8565-8596" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1241-1260" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1241-1374" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1241-4478" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1241-1263" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1241-1264" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1241-1305" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1273-1292" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1273-1406" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1273-4497" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1273-1295" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1273-1296" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-1273-1312" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2808-2827" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2808-2830" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2808-2831" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2808-2843" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2883-2902" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2883-2905" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2883-2906" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2883-2918" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2956-2975" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2956-4622" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2956-8649" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2956-2978" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2956-2979" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-2956-2988" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5023-5042" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5023-5324" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5023-8630" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5023-5045" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5023-5046" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5023-5055" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-3024-3043" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-3024-3046" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-3024-3047" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-3024-3059" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5480-5499" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5480-5502" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5480-5503" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5480-5515" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5554-5573" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5554-5576" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5554-5577" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5554-5589" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5628-5647" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5628-5650" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5628-5651" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5628-5663" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5776-5795" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5776-5798" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5776-5799" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-5776-5811" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8199-8218" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8199-8721" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8199-8527" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8199-8546" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8199-8221" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8199-8222" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8199-8234" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8274-8293" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8274-8296" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8274-8297" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-8274-8309" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-27-46" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-27-49" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-27-50" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Tearoffs>
+ <transport tornoff="no" width="1147" height="84" xpos="1847" ypos="27"/>
+ <monitor-section tornoff="no" width="275" height="689" xpos="1648" ypos="3"/>
+ <mouse-mode tornoff="no"/>
+ </Tearoffs>
+ </UI>
+ <AudioMIDISetup>
+ <EngineStates>
+ <State backend="JACK" driver="ALSA" device="HDA NVidia" sample-rate="44100" buffer-size="256" input-latency="0" output-latency="0" input-channels="0" output-channels="0" active="no" midi-option="None"/>
+ <State backend="JACK" driver="ALSA" device="" sample-rate="48000" buffer-size="1024" input-latency="0" output-latency="0" input-channels="0" output-channels="0" active="no" midi-option="None"/>
+ <State backend="JACK" driver="FFADO" device="Default" sample-rate="48000" buffer-size="128" input-latency="0" output-latency="0" input-channels="0" output-channels="0" active="no" midi-option="(legacy) ALSA raw devices"/>
+ <State backend="JACK" driver="FFADO" device="" sample-rate="44100" buffer-size="256" input-latency="0" output-latency="0" input-channels="0" output-channels="0" active="yes" midi-option="(legacy) ALSA raw devices"/>
+ </EngineStates>
+ </AudioMIDISetup>
+ </Extra>
+ <ControlProtocols>
+ <Protocol name="Mackie" bank="0" ipmidi-base="21928" device-profile="" device-name="Mackie Control Universal Pro" active="no">
+ <Surfaces>
+ <surface-0>
+ <Port>
+ <Input>
+ <Port name="mackie control in" direction="input"/>
+ </Input>
+ <Output>
+ <Port name="mackie control out" direction="output"/>
+ </Output>
+ </Port>
+ </surface-0>
+ </Surfaces>
+ </Protocol>
+ <Protocol name="Open Sound Control (OSC)" feedback="0" active="yes"/>
+ <Protocol name="Generic MIDI" feedback="1" feedback-interval="10000" threshold="10" binding="Korg nanoKONTROL2 With Master" active="yes">
+ <Controls/>
+ </Protocol>
+ </ControlProtocols>
+</Ardour>
diff --git a/.config/ardour3/ardour3_ui.conf b/.config/ardour3/ardour3_ui.conf
new file mode 100644
index 0000000..c309b9c
--- /dev/null
+++ b/.config/ardour3/ardour3_ui.conf
@@ -0,0 +1,506 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Ardour>
+ <UI>
+ <Option name="ui-rc-file" value="ardour3_ui_dark.rc"/>
+ <Option name="flat-buttons" value="00000001"/>
+ <Option name="gradient-waveforms" value="00000000"/>
+ <Option name="all-floating-windows-are-dialogs" value="00000000"/>
+ </UI>
+ <Canvas>
+ <Option name="active crossfade" value="3967af79"/>
+ <Option name="audio bus base" value="73829968"/>
+ <Option name="audio master bus base" value="00000000"/>
+ <Option name="audio track base" value="9daac468"/>
+ <Option name="automation line" value="44bc59ff"/>
+ <Option name="automation track fill" value="a0a0ce68"/>
+ <Option name="automation track outline" value="282828ff"/>
+ <Option name="cd marker bar" value="9496a3ff"/>
+ <Option name="crossfade editor base" value="282d49ff"/>
+ <Option name="crossfade editor line" value="000000ff"/>
+ <Option name="crossfade editor line shading" value="00a0d154"/>
+ <Option name="crossfade editor point fill" value="00ff00ff"/>
+ <Option name="crossfade editor point outline" value="0000ffff"/>
+ <Option name="crossfade editor wave" value="ffffff28"/>
+ <Option name="selected crossfade editor wave fill" value="00000000"/>
+ <Option name="crossfade line" value="000000ff"/>
+ <Option name="edit point" value="0000ffff"/>
+ <Option name="entered automation line" value="dd6363ff"/>
+ <Option name="control point fill" value="ffffff66"/>
+ <Option name="control point outline" value="ff0000ee"/>
+ <Option name="control point selected" value="55ccccff"/>
+ <Option name="entered gain line" value="dd6363ff"/>
+ <Option name="entered marker" value="dd6363ff"/>
+ <Option name="frame handle" value="7c00ff96"/>
+ <Option name="gain line" value="00bc20ff"/>
+ <Option name="gain line inactive" value="9fbca4c5"/>
+ <Option name="ghost track base" value="44007c7f"/>
+ <Option name="ghost track midi outline" value="00000000"/>
+ <Option name="ghost track wave" value="02fd004c"/>
+ <Option name="ghost track wave fill" value="00000000"/>
+ <Option name="ghost track wave clip" value="ff000000"/>
+ <Option name="ghost track zero line" value="e500e566"/>
+ <Option name="image track" value="ddddd8ff"/>
+ <Option name="inactive crossfade" value="e8ed3d77"/>
+ <Option name="location cd marker" value="1ee8c4ff"/>
+ <Option name="location loop" value="35964fff"/>
+ <Option name="location marker" value="c4f411ff"/>
+ <Option name="location punch" value="7c3a3aff"/>
+ <Option name="location range" value="497a59ff"/>
+ <Option name="marker bar" value="99a1adff"/>
+ <Option name="marker bar separator" value="555555ff"/>
+ <Option name="marker drag line" value="004f00f9"/>
+ <Option name="marker label" value="000000ff"/>
+ <Option name="marker track" value="ddddd8ff"/>
+ <Option name="measure line bar" value="ffffff9c"/>
+ <Option name="measure line beat" value="a29e9e76"/>
+ <Option name="meter bar" value="626470ff"/>
+ <Option name="meterbridge peaklabel" value="cc4422ff"/>
+ <Option name="meter color BBC" value="ffa500ff"/>
+ <Option name="meter fill: 0" value="008800ff"/>
+ <Option name="meter fill: 1" value="008800ff"/>
+ <Option name="meter fill: 2" value="00ff00ff"/>
+ <Option name="meter fill: 3" value="00ff00ff"/>
+ <Option name="meter fill: 4" value="fff000ff"/>
+ <Option name="meter fill: 5" value="fff000ff"/>
+ <Option name="meter fill: 6" value="ff8000ff"/>
+ <Option name="meter fill: 7" value="ff8000ff"/>
+ <Option name="meter fill: 8" value="ff0000ff"/>
+ <Option name="meter fill: 9" value="ff0000ff"/>
+ <Option name="midi meter fill: 0" value="effaa1ff"/>
+ <Option name="midi meter fill: 1" value="f2c97dff"/>
+ <Option name="midi meter fill: 2" value="f2c97dff"/>
+ <Option name="midi meter fill: 3" value="f48f52ff"/>
+ <Option name="midi meter fill: 4" value="f48f52ff"/>
+ <Option name="midi meter fill: 5" value="f83913ff"/>
+ <Option name="midi meter fill: 6" value="f83913ff"/>
+ <Option name="midi meter fill: 7" value="8fc78eff"/>
+ <Option name="midi meter fill: 8" value="8fc78eff"/>
+ <Option name="midi meter fill: 9" value="00f45600"/>
+ <Option name="meter background: bottom" value="333333ff"/>
+ <Option name="meter background: top" value="444444ff"/>
+ <Option name="meterbridge peakindicator: fill start" value="444444ff"/>
+ <Option name="meterbridge peakindicator: fill end" value="333333ff"/>
+ <Option name="meterbridge peakindicator on: fill start" value="ff0000ff"/>
+ <Option name="meterbridge peakindicator on: fill end" value="880000ff"/>
+ <Option name="meterbridge label: fill start" value="444444ff"/>
+ <Option name="meterbridge label: fill end" value="333333ff"/>
+ <Option name="meterbridge label: text" value="c7c7d8ff"/>
+ <Option name="meter marker" value="f2425bff"/>
+ <Option name="midi bus base" value="00000000"/>
+ <Option name="midi frame base" value="393d3766"/>
+ <Option name="midi note inactive channel" value="00000000"/>
+ <Option name="midi note color min" value="3f542aff"/>
+ <Option name="midi note color mid" value="7ea854ff"/>
+ <Option name="midi note color max" value="bfff80ff"/>
+ <Option name="selected midi note color min" value="1e1e33ff"/>
+ <Option name="selected midi note color mid" value="51518aff"/>
+ <Option name="selected midi note color max" value="8383deff"/>
+ <Option name="midi note selected" value="b2b2ffff"/>
+ <Option name="midi note velocity text" value="f4f214bc"/>
+ <Option name="midi patch change fill" value="0000ffa0"/>
+ <Option name="midi patch change outline" value="a7a7d4ff"/>
+ <Option name="midi patch change inactive channel fill" value="00000000"/>
+ <Option name="midi patch change inactive channel outline" value="222222ff"/>
+ <Option name="midi sysex fill" value="f1e139a0"/>
+ <Option name="midi sysex outline" value="a7a7d4ff"/>
+ <Option name="midi select rect fill" value="8888ff88"/>
+ <Option name="midi select rect outline" value="5555ffff"/>
+ <Option name="midi track base" value="b3cca35f"/>
+ <Option name="name highlight fill" value="0000ffff"/>
+ <Option name="name highlight outline" value="7c00ff96"/>
+ <Option name="piano roll black outline" value="f4f4f476"/>
+ <Option name="piano roll black" value="6c6e6a6b"/>
+ <Option name="piano roll white" value="979b9565"/>
+ <Option name="play head" value="ff0000ff"/>
+ <Option name="processor automation line" value="7aa3f9ff"/>
+ <Option name="punch line" value="a80000ff"/>
+ <Option name="range drag bar rect" value="969696c6"/>
+ <Option name="range drag rect" value="82c696c6"/>
+ <Option name="range marker bar" value="7d7f8cff"/>
+ <Option name="recording rect" value="cc2828ff"/>
+ <Option name="recorded waveform fill" value="ffffffff"/>
+ <Option name="recorded waveform outline" value="0f0f1fff"/>
+ <Option name="rubber band rect" value="c6c6c659"/>
+ <Option name="selected crossfade editor line" value="00dbdbff"/>
+ <Option name="selected crossfade editor wave" value="f9ea14a0"/>
+ <Option name="selected region base" value="51518a97"/>
+ <Option name="selected waveform fill" value="51518ac8"/>
+ <Option name="selected waveform outline" value="0f0f0fcc"/>
+ <Option name="selection rect" value="e8f4d377"/>
+ <Option name="selection" value="636363b2"/>
+ <Option name="shuttle" value="6bb620ff"/>
+ <Option name="silence" value="9efffd7a"/>
+ <Option name="silence text" value="0e066cff"/>
+ <Option name="mono panner outline" value="33445eff"/>
+ <Option name="mono panner fill" value="7a9bccc9"/>
+ <Option name="mono panner text" value="000000ff"/>
+ <Option name="mono panner bg" value="2e2929ff"/>
+ <Option name="mono panner position fill" value="7a89b3ff"/>
+ <Option name="mono panner position outline" value="33445eff"/>
+ <Option name="stereo panner outline" value="33445eff"/>
+ <Option name="stereo panner fill" value="7a9accc9"/>
+ <Option name="stereo panner text" value="000000ff"/>
+ <Option name="stereo panner bg" value="2e2929ff"/>
+ <Option name="stereo panner rule" value="455c7fff"/>
+ <Option name="stereo panner mono outline" value="a05600ff"/>
+ <Option name="stereo panner mono fill" value="e99668ca"/>
+ <Option name="stereo panner mono text" value="000000ff"/>
+ <Option name="stereo panner mono bg" value="2e2929ff"/>
+ <Option name="stereo panner inverted outline" value="bf0a00ff"/>
+ <Option name="stereo panner inverted fill" value="e4a19cc9"/>
+ <Option name="stereo panner inverted text" value="000000ff"/>
+ <Option name="stereo panner inverted bg" value="2e2929ff"/>
+ <Option name="tempo bar" value="70727fff"/>
+ <Option name="tempo marker" value="f2425bff"/>
+ <Option name="time axis frame" value="000000ff"/>
+ <Option name="selected time axis frame" value="000000ff"/>
+ <Option name="time stretch fill" value="e2b5b596"/>
+ <Option name="time stretch outline" value="63636396"/>
+ <Option name="transport drag rect" value="969696c6"/>
+ <Option name="transport loop rect" value="1e7728f9"/>
+ <Option name="transport marker bar" value="8c8e98ff"/>
+ <Option name="transport punch rect" value="6d2828e5"/>
+ <Option name="trim handle locked" value="ea0f0f28"/>
+ <Option name="trim handle" value="1900ff44"/>
+ <Option name="verbose canvas cursor" value="fffd2ebc"/>
+ <Option name="vestigial frame" value="0000000f"/>
+ <Option name="video timeline bar" value="303030ff"/>
+ <Option name="region base" value="99a7b5a0"/>
+ <Option name="region area covered by another region" value="505050b0"/>
+ <Option name="waveform outline" value="0f0f0fc8"/>
+ <Option name="clipped waveform" value="ff0000e5"/>
+ <Option name="waveform fill" value="3d4753dc"/>
+ <Option name="zero line" value="b5b5b525"/>
+ <Option name="zoom rect" value="c6d1b26d"/>
+ <Option name="monitor knob" value="329edfff"/>
+ <Option name="border color" value="00000000"/>
+ <Option name="processor prefader: fill start" value="873c3cff"/>
+ <Option name="processor prefader: fill end" value="542525ff"/>
+ <Option name="processor prefader: fill start active" value="873c3cff"/>
+ <Option name="processor prefader: fill end active" value="542525ff"/>
+ <Option name="processor prefader: led" value="26550eff"/>
+ <Option name="processor prefader: led active" value="78cb4eff"/>
+ <Option name="processor prefader: text" value="aaaaa3ff"/>
+ <Option name="processor prefader: text active" value="eeeeecff"/>
+ <Option name="processor fader: fill start" value="5d90b0ff"/>
+ <Option name="processor fader: fill end" value="154c6eff"/>
+ <Option name="processor fader: fill start active" value="5d90b0ff"/>
+ <Option name="processor fader: fill end active" value="154d6fff"/>
+ <Option name="processor fader: led" value="26550eff"/>
+ <Option name="processor fader: led active" value="78cb4eff"/>
+ <Option name="processor fader: text" value="aaaaa3ff"/>
+ <Option name="processor fader: text active" value="eeeeecff"/>
+ <Option name="processor postfader: fill start" value="415947ff"/>
+ <Option name="processor postfader: fill end" value="202d23ff"/>
+ <Option name="processor postfader: fill start active" value="415947ff"/>
+ <Option name="processor postfader: fill end active" value="202d23ff"/>
+ <Option name="processor postfader: led" value="26550eff"/>
+ <Option name="processor postfader: led active" value="78cb4eff"/>
+ <Option name="processor postfader: text" value="aaaaa3ff"/>
+ <Option name="processor postfader: text active" value="eeeeecff"/>
+ <Option name="processor control button: fill start" value="000000ff"/>
+ <Option name="processor control button: fill end" value="000000ff"/>
+ <Option name="processor control button: fill start active" value="000000ff"/>
+ <Option name="processor control button: fill end active" value="000000ff"/>
+ <Option name="processor control button: led" value="000000ff"/>
+ <Option name="processor control button: led active" value="ff0000ff"/>
+ <Option name="processor control button: text" value="ffffffff"/>
+ <Option name="processor control button: text active" value="ffffffff"/>
+ <Option name="monitor button: fill start" value="5d5856ff"/>
+ <Option name="monitor button: fill end" value="564d48ff"/>
+ <Option name="monitor button: fill start active" value="46a344ff"/>
+ <Option name="monitor button: fill end active" value="3c723bff"/>
+ <Option name="monitor button: led" value="660000ff"/>
+ <Option name="monitor button: led active" value="ff0000ff"/>
+ <Option name="monitor button: text" value="aaaaa3ff"/>
+ <Option name="monitor button: text active" value="1a1a1aff"/>
+ <Option name="solo isolate: fill start" value="5d5856ff"/>
+ <Option name="solo isolate: fill end" value="564d48ff"/>
+ <Option name="solo isolate: fill start active" value="5d5856ff"/>
+ <Option name="solo isolate: fill end active" value="564d48ff"/>
+ <Option name="solo isolate: led" value="660000ff"/>
+ <Option name="solo isolate: led active" value="ff0000ff"/>
+ <Option name="solo isolate: text" value="c7c7d8ff"/>
+ <Option name="solo isolate: text active" value="c8c8d9ff"/>
+ <Option name="solo safe: fill start" value="5d5856ff"/>
+ <Option name="solo safe: fill end" value="564d48ff"/>
+ <Option name="solo safe: fill start active" value="5d5856ff"/>
+ <Option name="solo safe: fill end active" value="564d48ff"/>
+ <Option name="solo safe: led" value="660000ff"/>
+ <Option name="solo safe: led active" value="ff0000ff"/>
+ <Option name="solo safe: text" value="c7c7d8ff"/>
+ <Option name="solo safe: text active" value="c8c8d9ff"/>
+ <Option name="monitor section cut: fill start" value="5d5856ff"/>
+ <Option name="monitor section cut: fill end" value="564d48ff"/>
+ <Option name="monitor section cut: fill start active" value="f7bb0aff"/>
+ <Option name="monitor section cut: fill end active" value="ed8f00ff"/>
+ <Option name="monitor section cut: led" value="473812ff"/>
+ <Option name="monitor section cut: led active" value="78cb4eff"/>
+ <Option name="monitor section cut: text" value="c7c7d8ff"/>
+ <Option name="monitor section cut: text active" value="000000ff"/>
+ <Option name="monitor section dim: fill start" value="5d5856ff"/>
+ <Option name="monitor section dim: fill end" value="564d48ff"/>
+ <Option name="monitor section dim: fill start active" value="04af02ff"/>
+ <Option name="monitor section dim: fill end active" value="008a00ff"/>
+ <Option name="monitor section dim: led" value="473812ff"/>
+ <Option name="monitor section dim: led active" value="78cb4eff"/>
+ <Option name="monitor section dim: text" value="c8c8d9ff"/>
+ <Option name="monitor section dim: text active" value="c8c8d9ff"/>
+ <Option name="monitor section solo: fill start" value="5d5856ff"/>
+ <Option name="monitor section solo: fill end" value="564d48ff"/>
+ <Option name="monitor section solo: fill start active" value="f4f395ff"/>
+ <Option name="monitor section solo: fill end active" value="fffe1dff"/>
+ <Option name="monitor section solo: led" value="473812ff"/>
+ <Option name="monitor section solo: led active" value="ffa500ff"/>
+ <Option name="monitor section solo: text" value="00000000"/>
+ <Option name="monitor section solo: text active" value="00000000"/>
+ <Option name="monitor section invert: fill start" value="5d5856ff"/>
+ <Option name="monitor section invert: fill end" value="564d48ff"/>
+ <Option name="monitor section invert: fill start active" value="03af01ff"/>
+ <Option name="monitor section invert: fill end active" value="008a00ff"/>
+ <Option name="monitor section invert: led" value="473812ff"/>
+ <Option name="monitor section invert: led active" value="78cb4eff"/>
+ <Option name="monitor section invert: text" value="00000000"/>
+ <Option name="monitor section invert: text active" value="00000000"/>
+ <Option name="monitor section mono: fill start" value="5d5856ff"/>
+ <Option name="monitor section mono: fill end" value="564d48ff"/>
+ <Option name="monitor section mono: fill start active" value="04af02ff"/>
+ <Option name="monitor section mono: fill end active" value="008a00ff"/>
+ <Option name="monitor section mono: led" value="473812ff"/>
+ <Option name="monitor section mono: led active" value="78cb4eff"/>
+ <Option name="monitor section mono: text" value="c7c7d8ff"/>
+ <Option name="monitor section mono: text active" value="c8c8d9ff"/>
+ <Option name="monitor section solo model: fill start" value="5d5856ff"/>
+ <Option name="monitor section solo model: fill end" value="564d48ff"/>
+ <Option name="monitor section solo model: fill start active" value="5d5856ff"/>
+ <Option name="monitor section solo model: fill end active" value="564d48ff"/>
+ <Option name="monitor section solo model: led" value="4f3300ff"/>
+ <Option name="monitor section solo model: led active" value="ffa500ff"/>
+ <Option name="monitor section solo model: text" value="c7c7d8ff"/>
+ <Option name="monitor section solo model: text active" value="c8c8d9ff"/>
+ <Option name="monitor solo override: fill start" value="5d5856ff"/>
+ <Option name="monitor solo override: fill end" value="564d48ff"/>
+ <Option name="monitor solo override: fill start active" value="5d5856ff"/>
+ <Option name="monitor solo override: fill end active" value="564d48ff"/>
+ <Option name="monitor solo override: led" value="4f3300ff"/>
+ <Option name="monitor solo override: led active" value="ffa500ff"/>
+ <Option name="monitor solo override: text" value="c7c7d8ff"/>
+ <Option name="monitor solo override: text active" value="c8c8d9ff"/>
+ <Option name="monitor solo exclusive: fill start" value="5d5856ff"/>
+ <Option name="monitor solo exclusive: fill end" value="564d48ff"/>
+ <Option name="monitor solo exclusive: fill start active" value="5d5856ff"/>
+ <Option name="monitor solo exclusive: fill end active" value="564c47ff"/>
+ <Option name="monitor solo exclusive: led" value="4f3300ff"/>
+ <Option name="monitor solo exclusive: led active" value="ffa500ff"/>
+ <Option name="monitor solo exclusive: text" value="c7c7d8ff"/>
+ <Option name="monitor solo exclusive: text active" value="c8c8d9ff"/>
+ <Option name="rude solo: fill start" value="684d4dff"/>
+ <Option name="rude solo: fill end" value="513c3cff"/>
+ <Option name="rude solo: fill start active" value="ff1f1fff"/>
+ <Option name="rude solo: fill end active" value="e21b1bff"/>
+ <Option name="rude solo: led" value="00000000"/>
+ <Option name="rude solo: led active" value="00000000"/>
+ <Option name="rude solo: text" value="969696ff"/>
+ <Option name="rude solo: text active" value="e5e5e5ff"/>
+ <Option name="rude isolate: fill start" value="21414fff"/>
+ <Option name="rude isolate: fill end" value="192930ff"/>
+ <Option name="rude isolate: fill start active" value="e5f7ffff"/>
+ <Option name="rude isolate: fill end active" value="b6e5fdff"/>
+ <Option name="rude isolate: led" value="00000000"/>
+ <Option name="rude isolate: led active" value="000000ff"/>
+ <Option name="rude isolate: text" value="979797ff"/>
+ <Option name="rude isolate: text active" value="000000ff"/>
+ <Option name="rude audition: fill start" value="684d4dff"/>
+ <Option name="rude audition: fill end" value="513c3cff"/>
+ <Option name="rude audition: fill start active" value="ff1f1fff"/>
+ <Option name="rude audition: fill end active" value="e21b1bff"/>
+ <Option name="rude audition: led" value="00000000"/>
+ <Option name="rude audition: led active" value="00000000"/>
+ <Option name="rude audition: text" value="979797ff"/>
+ <Option name="rude audition: text active" value="ffffffff"/>
+ <Option name="feedback alert: fill start" value="684d4dff"/>
+ <Option name="feedback alert: fill end" value="513c3cff"/>
+ <Option name="feedback alert: fill start active" value="ff1f1fff"/>
+ <Option name="feedback alert: fill end active" value="e21b1bff"/>
+ <Option name="feedback alert: led" value="00000000"/>
+ <Option name="feedback alert: led active" value="00000000"/>
+ <Option name="feedback alert: text" value="969696ff"/>
+ <Option name="feedback alert: text active" value="e5e5e5ff"/>
+ <Option name="invert button: fill start" value="565659ff"/>
+ <Option name="invert button: fill end" value="484853ff"/>
+ <Option name="invert button: fill start active" value="222260ff"/>
+ <Option name="invert button: fill end active" value="4242d0ff"/>
+ <Option name="invert button: led" value="473812ff"/>
+ <Option name="invert button: led active" value="78cb4eff"/>
+ <Option name="invert button: text" value="bfbfbfff"/>
+ <Option name="invert button: text active" value="bfbfbfff"/>
+ <Option name="mute button: fill start" value="bf9a24ff"/>
+ <Option name="mute button: fill end" value="846137ff"/>
+ <Option name="mute button: fill start active" value="ffc300ff"/>
+ <Option name="mute button: fill end active" value="ea8400ff"/>
+ <Option name="mute button: led" value="00000000"/>
+ <Option name="mute button: led active" value="00000000"/>
+ <Option name="mute button: text" value="bfbfbfff"/>
+ <Option name="mute button: text active" value="191919ff"/>
+ <Option name="solo button: fill start" value="a09865ff"/>
+ <Option name="solo button: fill end" value="4c5b2aff"/>
+ <Option name="solo button: fill start active" value="fffd9bff"/>
+ <Option name="solo button: fill end active" value="ffff00ff"/>
+ <Option name="solo button: led" value="00000000"/>
+ <Option name="solo button: led active" value="00000000"/>
+ <Option name="solo button: text" value="bfbfbfff"/>
+ <Option name="solo button: text active" value="191919ff"/>
+ <Option name="record enable button: fill start" value="603f3fff"/>
+ <Option name="record enable button: fill end" value="3d2828ff"/>
+ <Option name="record enable button: fill start active" value="fb0c0cff"/>
+ <Option name="record enable button: fill end active" value="b50f0fff"/>
+ <Option name="record enable button: led" value="00000000"/>
+ <Option name="record enable button: led active" value="00000000"/>
+ <Option name="record enable button: text" value="a5a5a5ff"/>
+ <Option name="record enable button: text active" value="d8d8d8ff"/>
+ <Option name="send alert button: fill start" value="4e5647ff"/>
+ <Option name="send alert button: fill end" value="43493cff"/>
+ <Option name="send alert button: fill start active" value="91f928ff"/>
+ <Option name="send alert button: fill end active" value="85e524ff"/>
+ <Option name="send alert button: led" value="00000000"/>
+ <Option name="send alert button: led active" value="00000000"/>
+ <Option name="send alert button: text" value="ccccccff"/>
+ <Option name="send alert button: text active" value="000000ff"/>
+ <Option name="transport button: fill start" value="656867ff"/>
+ <Option name="transport button: fill end" value="333333ff"/>
+ <Option name="transport button: fill start active" value="a1ff43ff"/>
+ <Option name="transport button: fill end active" value="00a300ff"/>
+ <Option name="transport button: led" value="00000000"/>
+ <Option name="transport button: led active" value="00000000"/>
+ <Option name="transport button: text" value="00000000"/>
+ <Option name="transport button: text active" value="00000000"/>
+ <Option name="transport recenable button: fill start" value="5f3f3fff"/>
+ <Option name="transport recenable button: fill end" value="3d2828ff"/>
+ <Option name="transport recenable button: fill start active" value="f80b0bff"/>
+ <Option name="transport recenable button: fill end active" value="b50e0eff"/>
+ <Option name="transport recenable button: led" value="00000000"/>
+ <Option name="transport recenable button: led active" value="00000000"/>
+ <Option name="transport recenable button: text" value="00000000"/>
+ <Option name="transport recenable button: text active" value="00000000"/>
+ <Option name="transport option button: fill start" value="636470ff"/>
+ <Option name="transport option button: fill end" value="4a4b51ff"/>
+ <Option name="transport option button: fill start active" value="636470ff"/>
+ <Option name="transport option button: fill end active" value="4a4b51ff"/>
+ <Option name="transport option button: led" value="4f3300ff"/>
+ <Option name="transport option button: led active" value="ffa500ff"/>
+ <Option name="transport option button: text" value="c7c7d8ff"/>
+ <Option name="transport option button: text active" value="c8c8d9ff"/>
+ <Option name="transport active option button: fill start" value="606b60ff"/>
+ <Option name="transport active option button: fill end" value="555d54ff"/>
+ <Option name="transport active option button: fill start active" value="a1ff43ff"/>
+ <Option name="transport active option button: fill end active" value="00a300ff"/>
+ <Option name="transport active option button: led" value="4f3300ff"/>
+ <Option name="transport active option button: led active" value="ffa500ff"/>
+ <Option name="transport active option button: text" value="c7c7d8ff"/>
+ <Option name="transport active option button: text active" value="000000ff"/>
+ <Option name="plugin bypass button: fill start" value="5d5856ff"/>
+ <Option name="plugin bypass button: fill end" value="564d48ff"/>
+ <Option name="plugin bypass button: fill start active" value="5d5856ff"/>
+ <Option name="plugin bypass button: fill end active" value="564d48ff"/>
+ <Option name="plugin bypass button: led" value="660000ff"/>
+ <Option name="plugin bypass button: led active" value="ff0000ff"/>
+ <Option name="plugin bypass button: text" value="c7c7d8ff"/>
+ <Option name="plugin bypass button: text active" value="c8c8d9ff"/>
+ <Option name="punch button: fill start" value="603f3fff"/>
+ <Option name="punch button: fill end" value="3d2828ff"/>
+ <Option name="punch button: fill start active" value="fb0c0cff"/>
+ <Option name="punch button: fill end active" value="b50f0fff"/>
+ <Option name="punch button: led" value="00000000"/>
+ <Option name="punch button: led active" value="00000000"/>
+ <Option name="punch button: text" value="a5a5a5ff"/>
+ <Option name="punch button: text active" value="d8d8d8ff"/>
+ <Option name="mouse mode button: fill start" value="6e8755ff"/>
+ <Option name="mouse mode button: fill end" value="274e00ff"/>
+ <Option name="mouse mode button: fill start active" value="c5ff95ff"/>
+ <Option name="mouse mode button: fill end active" value="14ae08ff"/>
+ <Option name="mouse mode button: led" value="4f3300ff"/>
+ <Option name="mouse mode button: led active" value="ffa500ff"/>
+ <Option name="mouse mode button: text" value="c7c7d8ff"/>
+ <Option name="mouse mode button: text active" value="000000ff"/>
+ <Option name="zoom button: fill start" value="626370ff"/>
+ <Option name="zoom button: fill end" value="4a4b51ff"/>
+ <Option name="zoom button: fill start active" value="4d4d4dff"/>
+ <Option name="zoom button: fill end active" value="121212ff"/>
+ <Option name="zoom button: led" value="4f3300ff"/>
+ <Option name="zoom button: led active" value="ffa500ff"/>
+ <Option name="zoom button: text" value="c7c7d8ff"/>
+ <Option name="zoom button: text active" value="c8c8d9ff"/>
+ <Option name="route button: fill start" value="56565dff"/>
+ <Option name="route button: fill end" value="484856ff"/>
+ <Option name="route button: fill start active" value="4d4d4dff"/>
+ <Option name="route button: fill end active" value="121212ff"/>
+ <Option name="route button: led" value="4f3300ff"/>
+ <Option name="route button: led active" value="ffa500ff"/>
+ <Option name="route button: text" value="c7c7d8ff"/>
+ <Option name="route button: text active" value="c8c8d9ff"/>
+ <Option name="mixer strip button: fill start" value="56565dff"/>
+ <Option name="mixer strip button: fill end" value="484856ff"/>
+ <Option name="mixer strip button: fill start active" value="ffd993ff"/>
+ <Option name="mixer strip button: fill end active" value="ffa500ff"/>
+ <Option name="mixer strip button: led" value="4f3300ff"/>
+ <Option name="mixer strip button: led active" value="ffa500ff"/>
+ <Option name="mixer strip button: text" value="c7c7d7ff"/>
+ <Option name="mixer strip button: text active" value="000000ff"/>
+ <Option name="mixer strip name button: fill start" value="56565dff"/>
+ <Option name="mixer strip name button: fill end" value="484856ff"/>
+ <Option name="mixer strip name button: fill start active" value="4d4d4dff"/>
+ <Option name="mixer strip name button: fill end active" value="121212ff"/>
+ <Option name="mixer strip name button: led" value="4f3300ff"/>
+ <Option name="mixer strip name button: led active" value="ffa500ff"/>
+ <Option name="mixer strip name button: text" value="c7c7d8ff"/>
+ <Option name="mixer strip name button: text active" value="c8c8d9ff"/>
+ <Option name="midi input button: fill start" value="656867ff"/>
+ <Option name="midi input button: fill end" value="333333ff"/>
+ <Option name="midi input button: fill start active" value="a1ff43ff"/>
+ <Option name="midi input button: fill end active" value="00a300ff"/>
+ <Option name="midi input button: led" value="00000000"/>
+ <Option name="midi input button: led active" value="00000000"/>
+ <Option name="midi input button: text" value="00000000"/>
+ <Option name="midi input button: text active" value="00000000"/>
+ <Option name="transport clock: background" value="000000ff"/>
+ <Option name="transport clock: text" value="6bb620ff"/>
+ <Option name="transport clock: edited text" value="ffa500ff"/>
+ <Option name="transport clock: cursor" value="ffa500ff"/>
+ <Option name="secondary clock: background" value="000000ff"/>
+ <Option name="secondary clock: text" value="6bb620ff"/>
+ <Option name="secondary clock: edited text" value="ffa500ff"/>
+ <Option name="secondary clock: cursor" value="ffa500ff"/>
+ <Option name="transport delta clock: background" value="000000ff"/>
+ <Option name="transport delta clock: text" value="0009f3ff"/>
+ <Option name="transport delta clock: edited text" value="ff0000ff"/>
+ <Option name="transport delta clock: cursor" value="f11000ff"/>
+ <Option name="secondary delta clock: background" value="000000ff"/>
+ <Option name="secondary delta clock: text" value="0009f3ff"/>
+ <Option name="secondary delta clock: edited text" value="ff0000ff"/>
+ <Option name="secondary delta clock: cursor" value="f11000ff"/>
+ <Option name="big clock: background" value="020202ff"/>
+ <Option name="big clock: text" value="f0f0f0ff"/>
+ <Option name="big clock: edited text" value="ffa500ff"/>
+ <Option name="big clock: cursor" value="ffa500ff"/>
+ <Option name="big clock active: background" value="020202ff"/>
+ <Option name="big clock active: text" value="f11000ff"/>
+ <Option name="big clock active: edited text" value="ffa500ff"/>
+ <Option name="big clock active: cursor" value="ffa500ff"/>
+ <Option name="punch clock: background" value="000000ff"/>
+ <Option name="punch clock: text" value="6bb620ff"/>
+ <Option name="punch clock: edited text" value="ff0000ff"/>
+ <Option name="punch clock: cursor" value="f11000ff"/>
+ <Option name="selection clock: background" value="000000ff"/>
+ <Option name="selection clock: text" value="6bb620ff"/>
+ <Option name="selection clock: edited text" value="ff0000ff"/>
+ <Option name="selection clock: cursor" value="f11000ff"/>
+ <Option name="nudge clock: background" value="000000ff"/>
+ <Option name="nudge clock: text" value="6bb620ff"/>
+ <Option name="nudge clock: edited text" value="ffa500ff"/>
+ <Option name="nudge clock: cursor" value="ffa500ff"/>
+ <Option name="clock: background" value="000000ff"/>
+ <Option name="clock: text" value="6bb620ff"/>
+ <Option name="clock: edited text" value="ffa500ff"/>
+ <Option name="clock: cursor" value="ffa500ff"/>
+ </Canvas>
+</Ardour>
diff --git a/.config/ardour3/export/FLAC 24 bit (tagged).format b/.config/ardour3/export/FLAC 24 bit (tagged).format
new file mode 100644
index 0000000..d45ca8c
--- /dev/null
+++ b/.config/ardour3/export/FLAC 24 bit (tagged).format
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ExportFormatSpecification name="FLAC 24 bit (tagged)" id="0627662f-f190-468d-9bb8-db0cca42eac5" with-cue="false" with-toc="false">
+ <Encoding id="F_FLAC" type="T_Sndfile" extension="flac" name="FLAC" has-sample-format="true" channel-limit="8"/>
+ <SampleRate rate="1"/>
+ <SRCQuality quality="SRC_SincBest"/>
+ <EncodingOptions>
+ <Option name="sample-format" value="SF_16"/>
+ <Option name="dithering" value="D_Shaped"/>
+ <Option name="tag-metadata" value="false"/>
+ <Option name="tag-support" value="true"/>
+ <Option name="broadcast-info" value="false"/>
+ </EncodingOptions>
+ <Processing>
+ <Normalize enabled="true" target="-0"/>
+ <Silence>
+ <Start>
+ <Trim enabled="false"/>
+ <Add enabled="false">
+ <Duration format="Timecode" hours="0" minutes="0" seconds="0" frames="0"/>
+ </Add>
+ </Start>
+ <End>
+ <Trim enabled="false"/>
+ <Add enabled="false">
+ <Duration format="Timecode" hours="0" minutes="0" seconds="0" frames="0"/>
+ </Add>
+ </End>
+ </Silence>
+ </Processing>
+</ExportFormatSpecification>
diff --git a/.config/ardour3/gdk-pixbuf.loaders b/.config/ardour3/gdk-pixbuf.loaders
new file mode 100644
index 0000000..cb25d92
--- /dev/null
+++ b/.config/ardour3/gdk-pixbuf.loaders
@@ -0,0 +1,125 @@
+# GdkPixbuf Image Loader Modules file
+# Automatically generated file, do not edit
+# Created by gdk-pixbuf-query-loaders from gdk-pixbuf-2.25.0
+#
+# LoaderDir = /opt/ardour/lib/loaders
+#
+"/opt/ardour/lib/loaders/libpixbufloader-xbm.so"
+"xbm" 4 "gdk-pixbuf" "The XBM image format" "LGPL"
+"image/x-xbitmap" ""
+"xbm" ""
+"#define " "" 100
+"/*" "" 50
+
+"/opt/ardour/lib/loaders/libpixbufloader-icns.so"
+"icns" 4 "gdk-pixbuf" "The ICNS image format" "GPL"
+"image/x-icns" ""
+"icns" ""
+"icns" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-ani.so"
+"ani" 4 "gdk-pixbuf" "The ANI image format" "LGPL"
+"application/x-navi-animation" ""
+"ani" ""
+"RIFF ACON" " xxxx " 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-gif.so"
+"gif" 4 "gdk-pixbuf" "The GIF image format" "LGPL"
+"image/gif" ""
+"gif" ""
+"GIF8" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-ras.so"
+"ras" 4 "gdk-pixbuf" "The Sun raster image format" "LGPL"
+"image/x-cmu-raster" "image/x-sun-raster" ""
+"ras" ""
+"Y\246j\225" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-bmp.so"
+"bmp" 5 "gdk-pixbuf" "The BMP image format" "LGPL"
+"image/bmp" "image/x-bmp" "image/x-MS-bmp" ""
+"bmp" ""
+"BM" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-pcx.so"
+"pcx" 4 "gdk-pixbuf" "The PCX image format" "LGPL"
+"image/x-pcx" ""
+"pcx" ""
+"\n \001" "" 100
+"\n\002\001" "" 100
+"\n\003\001" "" 100
+"\n\004\001" "" 100
+"\n\005\001" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-qtif.so"
+"qtif" 4 "gdk-pixbuf" "The QTIF image format" "LGPL"
+"image/x-quicktime" "image/qtif" ""
+"qtif" "qif" ""
+"abcdidsc" "xxxx " 100
+"abcdidat" "xxxx " 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-png.so"
+"png" 5 "gdk-pixbuf" "The PNG image format" "LGPL"
+"image/png" ""
+"png" ""
+"\211PNG\r\n\032\n" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-tiff.so"
+"tiff" 1 "gdk-pixbuf" "The TIFF image format" "LGPL"
+"image/tiff" ""
+"tiff" "tif" ""
+"MM *" " z " 100
+"II* " " z" 100
+"II* \020 CR\002 " " z zzz z" 0
+
+"/opt/ardour/lib/loaders/libpixbufloader-xpm.so"
+"xpm" 4 "gdk-pixbuf" "The XPM image format" "LGPL"
+"image/x-xpixmap" ""
+"xpm" ""
+"/* XPM */" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-ico.so"
+"ico" 5 "gdk-pixbuf" "The ICO image format" "LGPL"
+"image/x-icon" "image/x-ico" "image/x-win-bitmap" ""
+"ico" "cur" ""
+" \001 " "zz znz" 100
+" \002 " "zz znz" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-wbmp.so"
+"wbmp" 4 "gdk-pixbuf" "The WBMP image format" "LGPL"
+"image/vnd.wap.wbmp" ""
+"wbmp" ""
+" " "zz" 1
+" `" "z " 1
+" @" "z " 1
+" " "z " 1
+
+"/opt/ardour/lib/loaders/libpixbufloader-jpeg.so"
+"jpeg" 5 "gdk-pixbuf" "The JPEG image format" "LGPL"
+"image/jpeg" ""
+"jpeg" "jpe" "jpg" ""
+"\377\330" "" 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-tga.so"
+"tga" 4 "gdk-pixbuf" "The Targa image format" "LGPL"
+"image/x-tga" ""
+"tga" "targa" ""
+" \001\001" "x " 100
+" \001\t" "x " 100
+" \002" "xz " 99
+" \003" "xz " 100
+" \n" "xz " 100
+" \v" "xz " 100
+
+"/opt/ardour/lib/loaders/libpixbufloader-pnm.so"
+"pnm" 4 "gdk-pixbuf" "The PNM/PBM/PGM/PPM image format family" "LGPL"
+"image/x-portable-anymap" "image/x-portable-bitmap" "image/x-portable-graymap" "image/x-portable-pixmap" ""
+"pnm" "pbm" "pgm" "ppm" ""
+"P1" "" 100
+"P2" "" 100
+"P3" "" 100
+"P4" "" 100
+"P5" "" 100
+"P6" "" 100
+
+
diff --git a/.config/ardour3/instant.xml b/.config/ardour3/instant.xml
new file mode 100644
index 0000000..f3c01db
--- /dev/null
+++ b/.config/ardour3/instant.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<instant>
+ <LocationUI clock-mode="Frames"/>
+ <ExportRevision revision="1"/>
+ <Editor id="18" mixer-width="Wide" zoom-focus="ZoomFocusLeft" zoom="542886.010900" snap-to="SnapToBeat" snap-mode="SnapMagnetic" internal-snap-to="SnapToBeat" internal-snap-mode="SnapOff" pre-internal-snap-to="SnapToBeat" pre-internal-snap-mode="SnapMagnetic" edit-point="EditAtMouse" playhead="67457472" left-frame="0" y-origin="0.000000" show-measures="yes" maximised="no" follow-playhead="yes" stationary-playhead="no" region-list-sort-type="ByEndInFile" mouse-mode="MouseObject" internal-edit="no" join-object-range="no" show-editor-mixer="yes" show-editor-list="no" editor-list-page="0" show-marker-lines="no" nudge-clock-value="240000">
+ <geometry x-size="1398" y-size="1175" x-pos="518" y-pos="21" edit-horizontal-pane-pos="1109" notebook-shrunk="0" edit-vertical-pane-pos="972"/>
+ <Buttons>
+ <Press/>
+ <Release/>
+ </Buttons>
+ <Selection>
+ <RouteView id="8346"/>
+ <Marker id="555" start="yes"/>
+ </Selection>
+ <RegionList sort-type="ByEndInFile" sort-ascending="yes" show-all="no" show-automatic-regions="yes"/>
+ </Editor>
+ <Mixer narrow-strips="no" show-mixer="no" maximised="no"/>
+ <Meterbridge show-meterbridge="yes">
+ <geometry x-size="514" y-size="1161" x-pos="0" y-pos="21"/>
+ </Meterbridge>
+</instant>
diff --git a/.config/ardour3/pango.modules b/.config/ardour3/pango.modules
new file mode 100644
index 0000000..f335b9e
--- /dev/null
+++ b/.config/ardour3/pango.modules
@@ -0,0 +1,35 @@
+# Pango Modules file
+# Automatically generated file, do not edit
+#
+# ModulesPath = /opt/ardour/lib/modules
+#
+/opt/ardour/lib/modules/pango-tibetan-fc.so TibetanScriptEngineFc PangoEngineShape PangoRenderFc tibetan:*
+/opt/ardour/lib/modules/pango-basic-x.so BasicScriptEngineX PangoEngineShape PangoRenderX common:
+/opt/ardour/lib/modules/pango-arabic-lang.so ArabicScriptEngineLang PangoEngineLang PangoRenderNone arabic:*
+/opt/ardour/lib/modules/pango-khmer-fc.so KhmerScriptEngineFc PangoEngineShape PangoRenderFc khmer:*
+/opt/ardour/lib/modules/pango-hangul-fc.so HangulScriptEngineFc PangoEngineShape PangoRenderFc hangul:*
+/opt/ardour/lib/modules/pango-arabic-fc.so ArabicScriptEngineFc PangoEngineShape PangoRenderFc arabic:* nko:*
+/opt/ardour/lib/modules/pango-basic-fc.so BasicScriptEngineFc PangoEngineShape PangoRenderFc latin:* cyrillic:* greek:* armenian:* georgian:* runic:* ogham:* bopomofo:* cherokee:* coptic:* deseret:* ethiopic:* gothic:* han:* hiragana:* katakana:* old-italic:* canadian-aboriginal:* yi:* braille:* cypriot:* limbu:* osmanya:* shavian:* linear-b:* ugaritic:* glagolitic:* cuneiform:* phoenician:* common:
+/opt/ardour/lib/modules/pango-indic-fc.so devaScriptEngineFc PangoEngineShape PangoRenderFc devanagari:*
+/opt/ardour/lib/modules/pango-indic-fc.so bengScriptEngineFc PangoEngineShape PangoRenderFc bengali:*
+/opt/ardour/lib/modules/pango-indic-fc.so guruScriptEngineFc PangoEngineShape PangoRenderFc gurmukhi:*
+/opt/ardour/lib/modules/pango-indic-fc.so gujrScriptEngineFc PangoEngineShape PangoRenderFc gujarati:*
+/opt/ardour/lib/modules/pango-indic-fc.so oryaScriptEngineFc PangoEngineShape PangoRenderFc oriya:*
+/opt/ardour/lib/modules/pango-indic-fc.so tamlScriptEngineFc PangoEngineShape PangoRenderFc tamil:*
+/opt/ardour/lib/modules/pango-indic-fc.so teluScriptEngineFc PangoEngineShape PangoRenderFc telugu:*
+/opt/ardour/lib/modules/pango-indic-fc.so kndaScriptEngineFc PangoEngineShape PangoRenderFc kannada:*
+/opt/ardour/lib/modules/pango-indic-fc.so mlymScriptEngineFc PangoEngineShape PangoRenderFc malayalam:*
+/opt/ardour/lib/modules/pango-indic-fc.so sinhScriptEngineFc PangoEngineShape PangoRenderFc sinhala:*
+/opt/ardour/lib/modules/pango-hebrew-fc.so HebrewScriptEngineFc PangoEngineShape PangoRenderFc hebrew:*
+/opt/ardour/lib/modules/pango-thai-fc.so ThaiScriptEngineFc PangoEngineShape PangoRenderFc thai:* lao:*
+/opt/ardour/lib/modules/pango-syriac-fc.so SyriacScriptEngineFc PangoEngineShape PangoRenderFc syriac:*
+/opt/ardour/lib/modules/pango-indic-lang.so devaIndicScriptEngineLang PangoEngineLang PangoRenderNone devanagari:*
+/opt/ardour/lib/modules/pango-indic-lang.so bengIndicScriptEngineLang PangoEngineLang PangoRenderNone bengali:*
+/opt/ardour/lib/modules/pango-indic-lang.so guruIndicScriptEngineLang PangoEngineLang PangoRenderNone gurmukhi:*
+/opt/ardour/lib/modules/pango-indic-lang.so gujrIndicScriptEngineLang PangoEngineLang PangoRenderNone gujarati:*
+/opt/ardour/lib/modules/pango-indic-lang.so oryaIndicScriptEngineLang PangoEngineLang PangoRenderNone oriya:*
+/opt/ardour/lib/modules/pango-indic-lang.so tamlIndicScriptEngineLang PangoEngineLang PangoRenderNone tamil:*
+/opt/ardour/lib/modules/pango-indic-lang.so teluIndicScriptEngineLang PangoEngineLang PangoRenderNone telugu:*
+/opt/ardour/lib/modules/pango-indic-lang.so kndaIndicScriptEngineLang PangoEngineLang PangoRenderNone kannada:*
+/opt/ardour/lib/modules/pango-indic-lang.so mlymIndicScriptEngineLang PangoEngineLang PangoRenderNone malayalam:*
+/opt/ardour/lib/modules/pango-indic-lang.so sinhIndicScriptEngineLang PangoEngineLang PangoRenderNone sinhala:*
diff --git a/.config/ardour3/pango.rc b/.config/ardour3/pango.rc
new file mode 100644
index 0000000..0ae8270
--- /dev/null
+++ b/.config/ardour3/pango.rc
@@ -0,0 +1,2 @@
+[Pango]
+ModuleFiles=/home/dave/.config/ardour3/pango.modules
diff --git a/.config/ardour3/plugin_statuses b/.config/ardour3/plugin_statuses
new file mode 100644
index 0000000..2bd3f51
--- /dev/null
+++ b/.config/ardour3/plugin_statuses
@@ -0,0 +1,58 @@
+LXVST Favorite 1515476290
+LXVST Favorite 1515405652
+LXVST Favorite 1515015474
+LXVST Favorite 1515012944
+LXVST Favorite 1514615601
+LXVST Favorite 1514492210
+LXVST Favorite 1514360882
+LXVST Favorite 1514360144
+LV2 Favorite urn:juce:TalReverb
+LV2 Favorite https://github.com/asb2m10/dexed
+LV2 Favorite http://yoshimi.sourceforge.net/lv2_plugin
+LV2 Favorite http://www.drowaudio.co.uk/audio/audio_plugins/tremolo
+LV2 Favorite http://plugin.org.uk/swh-plugins/split
+LV2 Favorite http://nedko.arnaudov.name/ssg/1
+LV2 Favorite http://linuxsampler.org/plugins/linuxsampler
+LV2 Favorite http://kunz.corrupt.ch/products/tal-noisemaker
+LV2 Favorite http://guitarix.sourceforge.net/plugins/gx_tremolo#_tremolo
+LV2 Favorite http://guitarix.sourceforge.net/plugins/gx_switched_tremolo_#_switched_tremolo_
+LV2 Favorite http://guitarix.sourceforge.net/plugins/gx_room_simulator_#_room_simulator_
+LV2 Favorite http://elephly.net/lv2/mdaPiano
+LV2 Favorite http://calf.sourceforge.net/plugins/Wavetable
+LV2 Favorite http://calf.sourceforge.net/plugins/VintageDelay
+LV2 Favorite http://calf.sourceforge.net/plugins/StereoTools
+LV2 Favorite http://calf.sourceforge.net/plugins/Sidechaingate
+LV2 Favorite http://calf.sourceforge.net/plugins/Sidechaincompressor
+LV2 Favorite http://calf.sourceforge.net/plugins/Saturator
+LV2 Favorite http://calf.sourceforge.net/plugins/RotarySpeaker
+LV2 Favorite http://calf.sourceforge.net/plugins/Reverb
+LV2 Favorite http://calf.sourceforge.net/plugins/Pulsator
+LV2 Favorite http://calf.sourceforge.net/plugins/Phaser
+LV2 Favorite http://calf.sourceforge.net/plugins/Organ
+LV2 Favorite http://calf.sourceforge.net/plugins/Multibandlimiter
+LV2 Favorite http://calf.sourceforge.net/plugins/Multibandgate
+LV2 Favorite http://calf.sourceforge.net/plugins/Multibandcompressor
+LV2 Favorite http://calf.sourceforge.net/plugins/MultiChorus
+LV2 Favorite http://calf.sourceforge.net/plugins/Monosynth
+LV2 Favorite http://calf.sourceforge.net/plugins/MonoInput
+LV2 Favorite http://calf.sourceforge.net/plugins/Limiter
+LV2 Favorite http://calf.sourceforge.net/plugins/Gate
+LV2 Favorite http://calf.sourceforge.net/plugins/Fluidsynth
+LV2 Favorite http://calf.sourceforge.net/plugins/Flanger
+LV2 Favorite http://calf.sourceforge.net/plugins/Filterclavier
+LV2 Favorite http://calf.sourceforge.net/plugins/Filter
+LV2 Favorite http://calf.sourceforge.net/plugins/Exciter
+LV2 Favorite http://calf.sourceforge.net/plugins/Equalizer8Band
+LV2 Favorite http://calf.sourceforge.net/plugins/Equalizer5Band
+LV2 Favorite http://calf.sourceforge.net/plugins/Equalizer12Band
+LV2 Favorite http://calf.sourceforge.net/plugins/Deesser
+LV2 Favorite http://calf.sourceforge.net/plugins/Compressor
+LV2 Favorite http://calf.sourceforge.net/plugins/BassEnhancer
+LV2 Favorite http://calf.sourceforge.net/plugins/Analyzer
+LADSPA Favorite 1515476290
+LADSPA Favorite 1515015474
+LADSPA Favorite 1515012944
+LADSPA Favorite 1514615601
+LADSPA Favorite 1514492210
+LADSPA Favorite 1514360882
+LADSPA Favorite 1514360144
diff --git a/.config/ardour3/templates/2014_Deviser_Synth_And_Microphones/2014_Deviser_Synth_And_Microphones.template b/.config/ardour3/templates/2014_Deviser_Synth_And_Microphones/2014_Deviser_Synth_And_Microphones.template
new file mode 100644
index 0000000..fa7bd07
--- /dev/null
+++ b/.config/ardour3/templates/2014_Deviser_Synth_And_Microphones/2014_Deviser_Synth_And_Microphones.template
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Session version="3001" id-counter="554" event-counter="0">
+ <MIDIPorts>
+ <Port name="MIDI Clock in" direction="input"/>
+ <Port name="MIDI Clock out" direction="output"/>
+ <Port name="MIDI control in" direction="input"/>
+ <Port name="MIDI control out" direction="output"/>
+ <Port name="MMC in" direction="input"/>
+ <Port name="MMC out" direction="output"/>
+ <Port name="MTC in" direction="input"/>
+ <Port name="MTC out" direction="output"/>
+ </MIDIPorts>
+ <Config>
+ <Option name="xfade-choice" value="ConstantPowerMinus3dB"/>
+ <Option name="destructive-xfade-msecs" value="2"/>
+ <Option name="use-region-fades" value="1"/>
+ <Option name="show-region-fades" value="1"/>
+ <Option name="native-file-data-format" value="FormatFloat"/>
+ <Option name="native-file-header-format" value="WAVE"/>
+ <Option name="auto-play" value="0"/>
+ <Option name="auto-return" value="0"/>
+ <Option name="auto-input" value="1"/>
+ <Option name="punch-in" value="0"/>
+ <Option name="punch-out" value="0"/>
+ <Option name="subframes-per-frame" value="100"/>
+ <Option name="timecode-format" value="timecode_30"/>
+ <Option name="raid-path" value=""/>
+ <Option name="audio-search-path" value=""/>
+ <Option name="midi-search-path" value=""/>
+ <Option name="jack-time-master" value="1"/>
+ <Option name="use-video-sync" value="0"/>
+ <Option name="video-pullup" value="0"/>
+ <Option name="show-summary" value="1"/>
+ <Option name="show-group-tabs" value="1"/>
+ <Option name="external-sync" value="0"/>
+ <Option name="insert-merge-policy" value="InsertMergeRelax"/>
+ <Option name="timecode-offset" value="0"/>
+ <Option name="timecode-offset-negative" value="1"/>
+ <Option name="slave-timecode-offset" value=" 00:00:00:00"/>
+ <Option name="timecode-generator-offset" value=" 00:00:00:00"/>
+ <Option name="glue-new-markers-to-bars-and-beats" value="0"/>
+ <Option name="midi-copy-is-fork" value="0"/>
+ <Option name="glue-new-regions-to-bars-and-beats" value="0"/>
+ <Option name="use-video-file-fps" value="0"/>
+ <Option name="videotimeline-pullup" value="1"/>
+ <Option name="show-busses-on-meterbridge" value="0"/>
+ <Option name="show-master-on-meterbridge" value="1"/>
+ <Option name="show-midi-on-meterbridge" value="1"/>
+ <Option name="show-rec-on-meterbridge" value="1"/>
+ <Option name="show-mute-on-meterbridge" value="0"/>
+ <Option name="show-solo-on-meterbridge" value="0"/>
+ <Option name="show-monitor-on-meterbridge" value="0"/>
+ <Option name="show-name-on-meterbridge" value="1"/>
+ <Option name="meterbridge-label-height" value="0"/>
+ </Config>
+ <Metadata/>
+ <Sources/>
+ <Regions/>
+ <Locations>
+ <Location id="555" name="session" start="0" end="0" flags="IsSessionRange" locked="no" position-lock-style="AudioTime"/>
+ </Locations>
+ <Bundles/>
+ <Routes>
+ <Route id="52" name="monitor" default-type="audio" flags="MonitorOut" active="yes" phase-invert="00" denormal-protection="no" meter-point="MeterPostFader" meter-type="MeterPeak" order-key="1" self-solo="no" soloed-by-upstream="0" soloed-by-downstream="0" solo-isolated="no" solo-safe="no">
+ <IO name="monitor" id="58" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="monitor/audio_in 1">
+ <Connection other="master/audio_out 1"/>
+ <Connection other="auditioner/audio_out 1"/>
+ </Port>
+ <Port type="audio" name="monitor/audio_in 2">
+ <Connection other="master/audio_out 2"/>
+ <Connection other="auditioner/audio_out 2"/>
+ </Port>
+ </IO>
+ <IO name="monitor" id="59" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="monitor/audio_out 1">
+ <Connection other="firewire_pcm:000a3500ada83262_pbk_analog-1_out"/>
+ </Port>
+ <Port type="audio" name="monitor/audio_out 2">
+ <Connection other="firewire_pcm:000a3500ada83262_pbk_analog-2_out"/>
+ </Port>
+ </IO>
+ <Controllable name="solo" id="54" flags="Toggle" value="0.000000000000"/>
+ <Controllable name="mute" id="56" flags="Toggle" value="0.000000000000"/>
+ <MuteMaster mute-point="PreFader,PostFader,Listen,Main" muted="no"/>
+ <RemoteControl id="0"/>
+ <Processor id="65" name="return 1" active="yes" user-latency="0" own-input="yes" own-output="yes" type="intreturn" bitslot="0"/>
+ <Processor id="70" name="MonitorOut" active="yes" user-latency="0" type="monitor" dim-level="0.251188635826" solo-boost-level="1" cut-all="no" dim-all="no" mono="no" channels="2">
+ <Channel id="0" cut="no" invert="no" dim="no" solo="no"/>
+ <Channel id="1" cut="no" invert="no" dim="no" solo="no"/>
+ </Processor>
+ <Processor id="60" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="62" flags="GainLike" value="1.000000000000"/>
+ </Processor>
+ <Processor id="63" name="meter-monitor" active="yes" user-latency="0" type="meter"/>
+ <Processor id="64" name="monitor" active="yes" user-latency="0" own-input="yes" own-output="no" output="monitor" type="main-outs" role="Main"/>
+ </Route>
+ <Route id="27" name="master" default-type="audio" flags="MasterOut" active="yes" phase-invert="00" denormal-protection="no" meter-point="MeterPostFader" meter-type="MeterK20" order-key="0" self-solo="no" soloed-by-upstream="0" soloed-by-downstream="0" solo-isolated="no" solo-safe="no">
+ <IO name="master" id="44" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="master/audio_in 1">
+ <Connection other="Microphones/audio_out 1"/>
+ </Port>
+ <Port type="audio" name="master/audio_in 2">
+ <Connection other="Microphones/audio_out 2"/>
+ </Port>
+ </IO>
+ <IO name="master" id="45" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="master/audio_out 1">
+ <Connection other="monitor/audio_in 1"/>
+ </Port>
+ <Port type="audio" name="master/audio_out 2">
+ <Connection other="monitor/audio_in 2"/>
+ </Port>
+ </IO>
+ <Controllable name="solo" id="29" flags="Toggle" value="0.000000000000"/>
+ <Controllable name="mute" id="31" flags="Toggle" value="0.000000000000"/>
+ <MuteMaster mute-point="PreFader,PostFader,Listen,Main" muted="no"/>
+ <RemoteControl id="0"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="35" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="39" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="37" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="41" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="43" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ <Processor id="46" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="48" flags="GainLike" value="1.000000000000"/>
+ </Processor>
+ <Processor id="49" name="meter-master" active="yes" user-latency="0" type="meter"/>
+ <Processor id="50" name="master" active="yes" user-latency="0" own-input="yes" own-output="no" output="master" type="main-outs" role="Main">
+ <PannerShell bypassed="no" user-panner="" linked-to-route="yes"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="35" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="39" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="37" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="41" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="43" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ </Processor>
+ </Route>
+ <Route id="187" name="Synth" default-type="audio" active="yes" phase-invert="00" denormal-protection="no" meter-point="MeterInput" meter-type="MeterPeak" order-key="1" self-solo="no" soloed-by-upstream="0" soloed-by-downstream="0" solo-isolated="no" solo-safe="no" monitoring="" saved-meter-point="MeterPostFader" mode="Normal">
+ <IO name="Synth" id="204" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="Synth/audio_in 1">
+ <Connection other="firewire_pcm:000a3500ada83262_cap_analog-1_in"/>
+ </Port>
+ <Port type="audio" name="Synth/audio_in 2">
+ <Connection other="firewire_pcm:000a3500ada83262_cap_analog-2_in"/>
+ </Port>
+ </IO>
+ <IO name="Synth" id="205" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="Synth/audio_out 1"/>
+ <Port type="audio" name="Synth/audio_out 2"/>
+ </IO>
+ <Controllable name="solo" id="189" flags="Toggle" value="0.000000000000"/>
+ <Controllable name="mute" id="191" flags="Toggle" value="0.000000000000"/>
+ <MuteMaster mute-point="PreFader,PostFader,Listen,Main" muted="no"/>
+ <RemoteControl id="1"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="195" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="199" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="197" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="201" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="203" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ <Processor id="209" name="meter-Synth" active="yes" user-latency="0" type="meter"/>
+ <Processor id="206" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="208" flags="GainLike" value="1.000000000000"/>
+ </Processor>
+ <Processor id="210" name="Synth" active="yes" user-latency="0" own-input="yes" own-output="no" output="Synth" type="main-outs" role="Main">
+ <PannerShell bypassed="no" user-panner="" linked-to-route="yes"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="195" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="199" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="197" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="201" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="203" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ </Processor>
+ <Controllable name="recenable" id="212" flags="Toggle" value="1.000000000000"/>
+ <Diskstream flags="Recordable" playlist="Synth.1" name="Synth" id="214" speed="1.000000" capture-alignment="Automatic" channels="2"/>
+ </Route>
+ <Route id="233" name="Mic Bowl" default-type="audio" active="yes" phase-invert="0" denormal-protection="no" meter-point="MeterInput" meter-type="MeterPeak" route-group="Microphones" order-key="2" self-solo="no" soloed-by-upstream="0" soloed-by-downstream="0" solo-isolated="no" solo-safe="no" monitoring="MonitorInput" saved-meter-point="MeterPostFader" mode="Normal">
+ <IO name="Mic Bowl" id="250" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="Mic Bowl/audio_in 1">
+ <Connection other="firewire_pcm:000a3500ada83262_cap_analog-3_in"/>
+ </Port>
+ </IO>
+ <IO name="Mic Bowl" id="251" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="Mic Bowl/audio_out 1">
+ <Connection other="Microphones/audio_in 1"/>
+ </Port>
+ <Port type="audio" name="Mic Bowl/audio_out 2">
+ <Connection other="Microphones/audio_in 2"/>
+ </Port>
+ </IO>
+ <Controllable name="solo" id="235" flags="Toggle" value="0.000000000000"/>
+ <Controllable name="mute" id="237" flags="Toggle" value="0.000000000000"/>
+ <MuteMaster mute-point="PreFader,PostFader,Listen,Main" muted="no"/>
+ <RemoteControl id="2"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="241" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="245" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="243" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="247" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="249" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ <Processor id="255" name="meter-Mic 1" active="yes" user-latency="0" type="meter"/>
+ <Processor id="252" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="254" flags="GainLike" value="1.000000000000"/>
+ </Processor>
+ <Processor id="360" name="Mono to Stereo splitter" active="yes" user-latency="0" type="lv2" unique-id="http://plugin.org.uk/swh-plugins/split" count="1">
+ <lv2 last-preset-uri="" last-preset-label="" parameter-changed-since-last-preset="no"/>
+ </Processor>
+ <Processor id="378" name="Calf Reverb" active="yes" user-latency="0" type="lv2" unique-id="http://calf.sourceforge.net/plugins/Reverb" count="1">
+ <lv2 last-preset-uri="" last-preset-label="" parameter-changed-since-last-preset="yes">
+ <Port symbol="decay_time" value="+14.190271"/>
+ <Port symbol="hf_damp" value="+7744.083008"/>
+ <Port symbol="room_size" value="+3.000000"/>
+ <Port symbol="diffusion" value="+0.740000"/>
+ <Port symbol="amount" value="+0.250000"/>
+ <Port symbol="dry" value="+0.234881"/>
+ <Port symbol="predelay" value="+9.500000"/>
+ <Port symbol="bass_cut" value="+300.000000"/>
+ <Port symbol="treble_cut" value="+5000.000000"/>
+ </lv2>
+ <Controllable name="Decay time" id="380" flags="" value="14.190271377563" parameter="7"/>
+ <Controllable name="High Frq Damp" id="382" flags="" value="7744.083007812500" parameter="8"/>
+ <Controllable name="Room size" id="384" flags="" value="3.000000000000" parameter="9"/>
+ <Controllable name="Diffusion" id="386" flags="" value="0.740000009537" parameter="10"/>
+ <Controllable name="Wet Amount" id="388" flags="" value="0.250000000000" parameter="11"/>
+ <Controllable name="Dry Amount" id="390" flags="" value="0.234880685806" parameter="12"/>
+ <Controllable name="Pre Delay" id="392" flags="" value="9.500000000000" parameter="13"/>
+ <Controllable name="Bass Cut" id="394" flags="" value="300.000000000000" parameter="14"/>
+ <Controllable name="Treble Cut" id="396" flags="" value="5000.000000000000" parameter="15"/>
+ </Processor>
+ <Processor id="256" name="Mic Bowl" active="yes" user-latency="0" own-input="yes" own-output="no" output="Mic Bowl" type="main-outs" role="Main">
+ <PannerShell bypassed="no" user-panner="" linked-to-route="yes"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="241" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="245" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="243" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="247" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="249" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ </Processor>
+ <Controllable name="recenable" id="258" flags="Toggle" value="1.000000000000"/>
+ <Diskstream flags="Recordable" playlist="Mic Bowl" name="Mic Bowl" id="260" speed="1.000000" capture-alignment="Automatic" channels="1"/>
+ </Route>
+ <Route id="265" name="Mic Gong" default-type="audio" active="yes" phase-invert="0" denormal-protection="no" meter-point="MeterInput" meter-type="MeterPeak" route-group="Microphones" order-key="3" self-solo="no" soloed-by-upstream="0" soloed-by-downstream="0" solo-isolated="no" solo-safe="no" monitoring="" saved-meter-point="MeterPostFader" mode="Normal">
+ <IO name="Mic Gong" id="282" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="Mic Gong/audio_in 1">
+ <Connection other="firewire_pcm:000a3500ada83262_cap_analog-4_in"/>
+ </Port>
+ </IO>
+ <IO name="Mic Gong" id="283" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="Mic Gong/audio_out 1">
+ <Connection other="Microphones/audio_in 1"/>
+ </Port>
+ <Port type="audio" name="Mic Gong/audio_out 2">
+ <Connection other="Microphones/audio_in 2"/>
+ </Port>
+ </IO>
+ <Controllable name="solo" id="267" flags="Toggle" value="0.000000000000"/>
+ <Controllable name="mute" id="269" flags="Toggle" value="0.000000000000"/>
+ <MuteMaster mute-point="PreFader,PostFader,Listen,Main" muted="no"/>
+ <RemoteControl id="2"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="273" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="277" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="275" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="279" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="281" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ <Processor id="287" name="meter-Mic 2" active="yes" user-latency="0" type="meter"/>
+ <Processor id="284" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="286" flags="GainLike" value="0.964963614941"/>
+ </Processor>
+ <Processor id="360" name="Mono to Stereo splitter" active="yes" user-latency="0" type="lv2" unique-id="http://plugin.org.uk/swh-plugins/split" count="1">
+ <lv2 last-preset-uri="" last-preset-label="" parameter-changed-since-last-preset="no"/>
+ </Processor>
+ <Processor id="398" name="Calf Reverb" active="yes" user-latency="0" type="lv2" unique-id="http://calf.sourceforge.net/plugins/Reverb" count="1">
+ <lv2 last-preset-uri="" last-preset-label="" parameter-changed-since-last-preset="yes">
+ <Port symbol="decay_time" value="+10.618622"/>
+ <Port symbol="hf_damp" value="+10446.480469"/>
+ <Port symbol="room_size" value="+4.000000"/>
+ <Port symbol="diffusion" value="+0.720000"/>
+ <Port symbol="amount" value="+0.426317"/>
+ <Port symbol="dry" value="+0.201660"/>
+ <Port symbol="predelay" value="+4.000000"/>
+ <Port symbol="bass_cut" value="+114.056816"/>
+ <Port symbol="treble_cut" value="+1025.722778"/>
+ </lv2>
+ <Controllable name="Decay time" id="400" flags="" value="10.618621826172" parameter="7"/>
+ <Controllable name="High Frq Damp" id="402" flags="" value="10446.480468750000" parameter="8"/>
+ <Controllable name="Room size" id="404" flags="" value="4.000000000000" parameter="9"/>
+ <Controllable name="Diffusion" id="406" flags="" value="0.720000028610" parameter="10"/>
+ <Controllable name="Wet Amount" id="408" flags="" value="0.426317453384" parameter="11"/>
+ <Controllable name="Dry Amount" id="410" flags="" value="0.201660439372" parameter="12"/>
+ <Controllable name="Pre Delay" id="412" flags="" value="4.000000000000" parameter="13"/>
+ <Controllable name="Bass Cut" id="414" flags="" value="114.056816101074" parameter="14"/>
+ <Controllable name="Treble Cut" id="416" flags="" value="1025.722778320312" parameter="15"/>
+ </Processor>
+ <Processor id="288" name="Mic Gong" active="yes" user-latency="0" own-input="yes" own-output="no" output="Mic Gong" type="main-outs" role="Main">
+ <PannerShell bypassed="no" user-panner="" linked-to-route="yes"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="273" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="277" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="275" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="279" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="281" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ </Processor>
+ <Controllable name="recenable" id="290" flags="Toggle" value="1.000000000000"/>
+ <Diskstream flags="Recordable" playlist="Mic Gong" name="Mic Gong" id="292" speed="1.000000" capture-alignment="Automatic" channels="1"/>
+ </Route>
+ <Route id="297" name="Mic Coil" default-type="audio" active="yes" phase-invert="0" denormal-protection="no" meter-point="MeterInput" meter-type="MeterPeak" route-group="Microphones" order-key="4" self-solo="no" soloed-by-upstream="0" soloed-by-downstream="0" solo-isolated="no" solo-safe="no" monitoring="" saved-meter-point="MeterPostFader" mode="Normal">
+ <IO name="Mic Coil" id="314" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="Mic Coil/audio_in 1">
+ <Connection other="firewire_pcm:000a3500ada83262_cap_analog-5_in"/>
+ </Port>
+ </IO>
+ <IO name="Mic Coil" id="315" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="Mic Coil/audio_out 1">
+ <Connection other="Microphones/audio_in 1"/>
+ </Port>
+ <Port type="audio" name="Mic Coil/audio_out 2">
+ <Connection other="Microphones/audio_in 2"/>
+ </Port>
+ </IO>
+ <Controllable name="solo" id="299" flags="Toggle" value="0.000000000000"/>
+ <Controllable name="mute" id="301" flags="Toggle" value="0.000000000000"/>
+ <MuteMaster mute-point="PreFader,PostFader,Listen,Main" muted="no"/>
+ <RemoteControl id="2"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="305" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="309" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="307" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="311" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="313" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ <Processor id="319" name="meter-Mic 3" active="yes" user-latency="0" type="meter"/>
+ <Processor id="316" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="318" flags="GainLike" value="1.000000000000"/>
+ </Processor>
+ <Processor id="472" name="Calf Mono Input" active="yes" user-latency="0" type="lv2" unique-id="http://calf.sourceforge.net/plugins/MonoInput" count="1">
+ <lv2 last-preset-uri="" last-preset-label="" parameter-changed-since-last-preset="no">
+ <Port symbol="bypass" value="+0.000000"/>
+ <Port symbol="level_in" value="+1.000000"/>
+ <Port symbol="level_out" value="+1.000000"/>
+ <Port symbol="balance_out" value="+0.000000"/>
+ <Port symbol="softclip" value="+0.000000"/>
+ <Port symbol="mutel" value="+0.000000"/>
+ <Port symbol="muter" value="+0.000000"/>
+ <Port symbol="phasel" value="+0.000000"/>
+ <Port symbol="phaser" value="+0.000000"/>
+ <Port symbol="delay" value="+0.000000"/>
+ <Port symbol="stereo_base" value="+0.000000"/>
+ <Port symbol="stereo_phase" value="+0.000000"/>
+ <Port symbol="sc_level" value="+1.000000"/>
+ </lv2>
+ <Controllable name="Bypass" id="474" flags="Toggle" value="0.000000000000" parameter="3"/>
+ <Controllable name="Input" id="476" flags="" value="1.000000000000" parameter="4"/>
+ <Controllable name="Output" id="478" flags="" value="1.000000000000" parameter="5"/>
+ <Controllable name="Balance" id="480" flags="" value="0.000000000000" parameter="12"/>
+ <Controllable name="Softclip" id="482" flags="Toggle" value="0.000000000000" parameter="13"/>
+ <Controllable name="Mute L" id="484" flags="Toggle" value="0.000000000000" parameter="14"/>
+ <Controllable name="Mute R" id="486" flags="Toggle" value="0.000000000000" parameter="15"/>
+ <Controllable name="Phase L" id="488" flags="Toggle" value="0.000000000000" parameter="16"/>
+ <Controllable name="Phase R" id="490" flags="Toggle" value="0.000000000000" parameter="17"/>
+ <Controllable name="Delay" id="492" flags="" value="0.000000000000" parameter="18"/>
+ <Controllable name="Stereo Base" id="494" flags="" value="0.000000000000" parameter="19"/>
+ <Controllable name="Stereo Phase" id="496" flags="" value="0.000000000000" parameter="20"/>
+ <Controllable name="S/C Level" id="498" flags="" value="1.000000000000" parameter="21"/>
+ </Processor>
+ <Processor id="418" name="Calf MultiChorus" active="yes" user-latency="0" type="lv2" unique-id="http://calf.sourceforge.net/plugins/MultiChorus" count="1">
+ <lv2 last-preset-uri="" last-preset-label="" parameter-changed-since-last-preset="no">
+ <Port symbol="min_delay" value="+5.000000"/>
+ <Port symbol="mod_depth" value="+6.000000"/>
+ <Port symbol="mod_rate" value="+0.500000"/>
+ <Port symbol="stereo" value="+180.000000"/>
+ <Port symbol="voices" value="+4.000000"/>
+ <Port symbol="vphase" value="+64.000000"/>
+ <Port symbol="amount" value="+2.000000"/>
+ <Port symbol="dry" value="+1.000000"/>
+ <Port symbol="freq" value="+100.000000"/>
+ <Port symbol="freq2" value="+5000.000000"/>
+ <Port symbol="q" value="+0.125000"/>
+ <Port symbol="overlap" value="+1.000000"/>
+ </lv2>
+ <Controllable name="Min delay" id="420" flags="" value="5.000000000000" parameter="4"/>
+ <Controllable name="Mod depth" id="422" flags="" value="6.000000000000" parameter="5"/>
+ <Controllable name="Modulation rate" id="424" flags="" value="0.500000000000" parameter="6"/>
+ <Controllable name="Stereo phase" id="426" flags="" value="180.000000000000" parameter="7"/>
+ <Controllable name="Voices" id="428" flags="" value="4.000000000000" parameter="8"/>
+ <Controllable name="Inter-voice phase" id="430" flags="" value="64.000000000000" parameter="9"/>
+ <Controllable name="Amount" id="432" flags="" value="2.000000000000" parameter="10"/>
+ <Controllable name="Dry Amount" id="434" flags="" value="1.000000000000" parameter="11"/>
+ <Controllable name="Center Frq 1" id="436" flags="" value="100.000000000000" parameter="12"/>
+ <Controllable name="Center Frq 2" id="438" flags="" value="5000.000000000000" parameter="13"/>
+ <Controllable name="Q" id="440" flags="" value="0.125000000000" parameter="14"/>
+ <Controllable name="Overlap" id="442" flags="" value="1.000000000000" parameter="15"/>
+ </Processor>
+ <Processor id="320" name="Mic Coil" active="yes" user-latency="0" own-input="yes" own-output="no" output="Mic Coil" type="main-outs" role="Main">
+ <PannerShell bypassed="no" user-panner="" linked-to-route="yes"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="305" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="309" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="307" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="311" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="313" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ </Processor>
+ <Controllable name="recenable" id="322" flags="Toggle" value="1.000000000000"/>
+ <Diskstream flags="Recordable" playlist="Mic Coil" name="Mic Coil" id="324" speed="1.000000" capture-alignment="Automatic" channels="1"/>
+ </Route>
+ <Route id="513" name="Microphones" default-type="audio" active="yes" phase-invert="00" denormal-protection="no" meter-point="MeterPostFader" meter-type="MeterPeak" order-key="5" self-solo="no" soloed-by-upstream="0" soloed-by-downstream="0" solo-isolated="no" solo-safe="no">
+ <IO name="Microphones" id="530" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="Microphones/audio_in 1">
+ <Connection other="Mic Bowl/audio_out 1"/>
+ <Connection other="Mic Gong/audio_out 1"/>
+ <Connection other="Mic Coil/audio_out 1"/>
+ </Port>
+ <Port type="audio" name="Microphones/audio_in 2">
+ <Connection other="Mic Bowl/audio_out 2"/>
+ <Connection other="Mic Gong/audio_out 2"/>
+ <Connection other="Mic Coil/audio_out 2"/>
+ </Port>
+ </IO>
+ <IO name="Microphones" id="531" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="Microphones/audio_out 1">
+ <Connection other="master/audio_in 1"/>
+ </Port>
+ <Port type="audio" name="Microphones/audio_out 2">
+ <Connection other="master/audio_in 2"/>
+ </Port>
+ </IO>
+ <Controllable name="solo" id="515" flags="Toggle" value="0.000000000000"/>
+ <Controllable name="mute" id="517" flags="Toggle" value="0.000000000000"/>
+ <MuteMaster mute-point="PreFader,PostFader,Listen,Main" muted="no"/>
+ <RemoteControl id="5"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="521" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="525" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="523" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="527" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="529" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ <Processor id="539" name="return 2" active="yes" user-latency="0" own-input="yes" own-output="yes" type="intreturn" bitslot="1"/>
+ <Processor id="532" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="534" flags="GainLike" value="1.000000000000"/>
+ </Processor>
+ <Processor id="535" name="meter-Bus 1" active="yes" user-latency="0" type="meter"/>
+ <Processor id="536" name="Microphones" active="yes" user-latency="0" own-input="yes" own-output="no" output="Microphones" type="main-outs" role="Main">
+ <PannerShell bypassed="no" user-panner="" linked-to-route="yes"/>
+ <Pannable>
+ <Controllable name="pan-azimuth" id="521" flags="" value="0.500000000000"/>
+ <Controllable name="pan-width" id="525" flags="" value="1.000000000000"/>
+ <Controllable name="pan-elevation" id="523" flags="" value="0.000000000000"/>
+ <Controllable name="pan-frontback" id="527" flags="" value="0.000000000000"/>
+ <Controllable name="pan-lfe" id="529" flags="" value="0.000000000000"/>
+ <Automation/>
+ </Pannable>
+ </Processor>
+ </Route>
+ </Routes>
+ <Playlists>
+ <Playlist id="293" name="Mic Gong" type="audio" orig-track-id="265" frozen="no"/>
+ <Playlist id="215" name="Synth.1" type="audio" orig-track-id="187" frozen="no"/>
+ <Playlist id="325" name="Mic Coil" type="audio" orig-track-id="297" frozen="no"/>
+ <Playlist id="261" name="Mic Bowl" type="audio" orig-track-id="233" frozen="no"/>
+ </Playlists>
+ <UnusedPlaylists/>
+ <RouteGroups>
+ <RouteGroup id="232" name="Microphones" hidden="0" relative="0" active="0" gain="0" mute="0" solo="0" recenable="0" select="0" route-active="1" color="1" monitoring="1" routes="233 265 297 "/>
+ </RouteGroups>
+ <Click>
+ <IO name="Click" id="23" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="Click/audio_out 1">
+ <Connection other="firewire_pcm:000a3500ada83262_pbk_analog-1_out"/>
+ </Port>
+ <Port type="audio" name="Click/audio_out 2">
+ <Connection other="firewire_pcm:000a3500ada83262_pbk_analog-2_out"/>
+ </Port>
+ </IO>
+ <Processor id="24" name="Amp" active="yes" user-latency="0" type="amp">
+ <Controllable name="gaincontrol" id="26" flags="GainLike" value="1.380360007286"/>
+ </Processor>
+ </Click>
+ <LTC-In>
+ <IO name="LTC In" id="21" direction="Input" default-type="audio" user-latency="0">
+ <Port type="audio" name="LTC-in">
+ <Connection other="firewire_pcm:000a3500ada83262_cap_analog-1_in"/>
+ </Port>
+ </IO>
+ </LTC-In>
+ <LTC-Out>
+ <IO name="LTC Out" id="22" direction="Output" default-type="audio" user-latency="0">
+ <Port type="audio" name="LTC-out"/>
+ </IO>
+ </LTC-Out>
+ <Speakers>
+ <Speaker azimuth="240" elevation="0" distance="1"/>
+ <Speaker azimuth="120" elevation="0" distance="1"/>
+ </Speakers>
+ <TempoMap>
+ <Tempo start="1|1|0" beats-per-minute="120.000000" note-type="4.000000" movable="no"/>
+ <Meter start="1|1|0" note-type="4.000000" divisions-per-bar="4.000000" movable="no"/>
+ </TempoMap>
+ <ControlProtocols>
+ <Protocol name="Mackie" bank="0" ipmidi-base="21928" device-profile="" device-name="Mackie Control Universal Pro" active="no">
+ <Surfaces>
+ <surface-0>
+ <Port>
+ <Input>
+ <Port name="mackie control in" direction="input"/>
+ </Input>
+ <Output>
+ <Port name="mackie control out" direction="output"/>
+ </Output>
+ </Port>
+ </surface-0>
+ </Surfaces>
+ </Protocol>
+ <Protocol name="Open Sound Control (OSC)" feedback="0" active="yes"/>
+ <Protocol name="Generic MIDI" feedback="1" feedback-interval="10000" threshold="10" binding="Korg nanoKONTROL2 With Master" active="yes">
+ <Controls/>
+ </Protocol>
+ </ControlProtocols>
+ <Extra>
+ <UI>
+ <Window name="theme-manager" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="key-editor" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="rc-options-editor" visible="no" x-off="189" y-off="224" x-size="806" y-size="635"/>
+ <Window name="session-options-editor" visible="no" x-off="0" y-off="235" x-size="697" y-size="366"/>
+ <Window name="speaker-config" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="about" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="add-routes" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="add-video" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="inspector" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="audio-midi-setup" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="bundle-manager" visible="no" x-off="422" y-off="0" x-size="480" y-size="240"/>
+ <Window name="locations" visible="no" x-off="0" y-off="25" x-size="857" y-size="487"/>
+ <Window name="big-clock" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="audio-connection-manager" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1"/>
+ <Window name="midi-connection-manager" visible="no" x-off="304" y-off="427" x-size="940" y-size="811"/>
+ <Window name="R-27-46" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-27-49" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-27-50" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-27-46" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-27-49" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-27-50" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-187-206" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-187-209" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-187-210" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-187-222" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-187-206" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-187-209" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-187-210" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-187-222" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-252" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-255" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-256" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-329" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-284" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-287" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-288" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-336" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-316" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-319" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-320" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-343" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-233-252" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-233-255" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-233-256" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-233-329" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-265-284" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-265-287" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-265-288" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-265-336" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-297-316" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-297-319" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-297-320" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-297-343" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-360" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-233-360" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-265-360" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-265-360" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-233-378" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-233-378" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="yes"/>
+ <Window name="M-265-398" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-265-398" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="yes"/>
+ <Window name="M-297-418" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-297-418" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-297-472" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-297-472" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="yes"/>
+ <Window name="M-513-539" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-532" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-535" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-536" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="M-513-544" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-513-539" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-513-532" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-513-535" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-513-536" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <Window name="R-513-544" visible="no" x-off="-1" y-off="-1" x-size="-1" y-size="-1" custom-ui="no"/>
+ <GUIObjectState>
+ <Object id="route 27" color="45714:47381:14193"/>
+ <Object id="rtav 27" height="72" visible="1"/>
+ <Object id="automation 48" height="72" visible="0"/>
+ <Object id="automation 35" height="72" visible="0"/>
+ <Object id="automation 39" height="72" visible="0"/>
+ <Object id="strip 27" visible="1" strip-width="Wide">
+ <Object id="processor 46"/>
+ </Object>
+ <Object id="route 187" color="46700:24654:17730"/>
+ <Object id="strip 187" visible="1" strip-width="Wide">
+ <Object id="processor 206"/>
+ </Object>
+ <Object id="rtav 187" height="72" visible="1"/>
+ <Object id="automation 208" height="72" visible="0"/>
+ <Object id="automation 195" height="72" visible="0"/>
+ <Object id="automation 199" height="72" visible="0"/>
+ <Object id="route_group 232" color="37683:13926:15342"/>
+ <Object id="route 233" color="13948:734:41979"/>
+ <Object id="route 265" color="42838:10418:3737"/>
+ <Object id="route 297" color="3314:45777:47807"/>
+ <Object id="strip 233" visible="1" strip-width="Wide">
+ <Object id="processor 252"/>
+ <Object id="processor 360"/>
+ <Object id="processor 378"/>
+ </Object>
+ <Object id="strip 265" visible="1" strip-width="Wide">
+ <Object id="processor 284"/>
+ <Object id="processor 360"/>
+ <Object id="processor 398"/>
+ </Object>
+ <Object id="strip 297" visible="1" strip-width="Wide">
+ <Object id="processor 316"/>
+ <Object id="processor 360"/>
+ <Object id="processor 418"/>
+ <Object id="processor 472"/>
+ </Object>
+ <Object id="rtav 233" height="72" visible="1"/>
+ <Object id="automation 254" height="72" visible="0"/>
+ <Object id="rtav 265" height="72" visible="1"/>
+ <Object id="automation 286" height="72" visible="0"/>
+ <Object id="rtav 297" height="72" visible="1"/>
+ <Object id="automation 318" height="72" visible="0"/>
+ <Object id="automation 241" height="72" visible="0"/>
+ <Object id="automation 245" height="72" visible="0"/>
+ <Object id="automation 273" height="72" visible="0"/>
+ <Object id="automation 277" height="72" visible="0"/>
+ <Object id="automation 305" height="72" visible="0"/>
+ <Object id="automation 309" height="72" visible="0"/>
+ <Object id="route 513" color="7262:37314:38032"/>
+ <Object id="strip 513" visible="1" strip-width="Wide">
+ <Object id="processor 532"/>
+ </Object>
+ <Object id="rtav 513" height="72" visible="1"/>
+ <Object id="automation 534" height="72" visible="0"/>
+ <Object id="automation 521" height="72" visible="0"/>
+ <Object id="automation 525" height="72" visible="0"/>
+ </GUIObjectState>
+ </UI>
+ <Videomonitor active="no"/>
+ </Extra>
+</Session>
diff --git a/.config/compton.conf b/.config/compton.conf
new file mode 100644
index 0000000..378058e
--- /dev/null
+++ b/.config/compton.conf
@@ -0,0 +1,114 @@
+# Shadow
+shadow = true; # Enabled client-side shadows on windows.
+no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows.
+no-dnd-shadow = true; # Don't draw shadows on DND windows.
+clear-shadow = true; # Zero the part of the shadow's mask behind the
+ # window. Fix some weirdness with ARGB windows.
+shadow-radius = 7; # The blur radius for shadows. (default 12)
+shadow-offset-x = -7; # The left offset for shadows. (default -15)
+shadow-offset-y = -7; # The top offset for shadows. (default -15)
+# shadow-opacity = 0.7; # The translucency for shadows. (default .75)
+# shadow-red = 0.0; # Red color value of shadow. (0.0 - 1.0, defaults to 0)
+# shadow-green = 0.0; # Green color value of shadow. (0.0 - 1.0, defaults to 0)
+# shadow-blue = 0.0; # Blue color value of shadow. (0.0 - 1.0, defaults to 0)
+shadow-exclude = [
+ "n:e:Notification",
+ "class_g = 'conky'",
+ "_GTK_FRAME_EXTENTS@:c",
+ "_NET_WM_OPAQUE_REGION@:c"
+]; # Exclude conditions for shadows.
+
+# shadow-exclude = "n:e:Notification";
+shadow-ignore-shaped = true; # Avoid drawing shadow on all shaped windows
+ # (see also: --detect-rounded-corners)
+
+# Opacity
+menu-opacity = 0.9; # The opacity for menus. (default 1.0)
+inactive-opacity = 0.95; # Default opacity of inactive windows. (0.0 - 1.0)
+# active-opacity = 0.8; # Default opacity for active windows. (0.0 - 1.0)
+# frame-opacity = 0.8; # Opacity of window titlebars and borders. (0.1 - 1.0)
+# inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacity' overrides
+ # value of _NET_WM_OPACITY. Bad choice.
+alpha-step = 0.06; # XRender backend: Step size for alpha pictures. Increasing
+ # it may result in less X resource usage,
+ # Yet fading may look bad.
+# inactive-dim = 0.2; # Dim inactive windows. (0.0 - 1.0)
+# inactive-dim-fixed = true; # Do not let dimness adjust based on window opacity.
+# blur-background = true; # Blur background of transparent windows.
+ # Bad performance with X Render backend.
+ # GLX backend is preferred.
+# blur-background-frame = true; # Blur background of opaque windows with transparent
+ # frames as well.
+blur-background-fixed = false; # Do not let blur radius adjust based on window opacity.
+blur-background-exclude = [
+ "window_type = 'dock'",
+ "window_type = 'desktop'",
+ "name *= 'VLC'",
+ "name *= 'Firefox'",
+ "name *= 'Vimperator'",
+ "name *= 'MPlayer'"
+];
+# Exclude conditions for background blur.
+
+# Fading
+fading = true; # Fade windows during opacity changes.
+# fade-delta = 30; # The time between steps in a fade in milliseconds. (default 10).
+fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028).
+fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03).
+# no-fading-openclose = true; # Avoid fade windows in/out when opening/closing.
+fade-exclude = [
+ "name *= 'VLC'",
+ "name *= 'Firefox'",
+ "name *= 'Vimperator'",
+ "name *= 'MPlayer'"
+]; # Exclude conditions for fading.
+
+# Other
+backend = "glx" # Backend to use: "xrender" or "glx". GLX backend is typically
+ # much faster but depends on a sane driver.
+mark-wmwin-focused = true; # Try to detect WM windows and mark them as active.
+mark-ovredir-focused = true; # Mark all non-WM but override-redirect windows active (e.g. menus).
+use-ewmh-active-win = false; # Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused
+ # instead of using FocusIn/Out events. Usually more reliable but
+ # depends on a EWMH-compliant WM.
+detect-rounded-corners = true; # Detect rounded corners and treat them as rectangular when --shadow-ignore-shaped is on.
+detect-client-opacity = true; # Detect _NET_WM_OPACITY on client windows, useful for window
+ # managers not passing _NET_WM_OPACITY of client windows to frame
+ # windows.
+refresh-rate = 0; # For --sw-opti: Specify refresh rate of the screen. 0 for auto.
+vsync = "opengl"; # "none", "drm", "opengl", "opengl-oml", "opengl-swc", "opengl-mswc"
+ # See man page for more details.
+dbe = false; # Enable DBE painting mode. Rarely needed.
+paint-on-overlay = false; # Painting on X Composite overlay window. Recommended.
+sw-opti = false; # Limit compton to repaint at most once every 1 / refresh_rate.
+ # Incompatible with certain VSync methods.
+unredir-if-possible = false; # Unredirect all windows if a full-screen opaque window is
+ # detected, to maximize performance for full-screen windows.
+focus-exclude = [
+ "name *= 'VLC'",
+ "name *= 'Firefox'",
+ "name *= 'Vimperator'",
+ "name *= 'MPlayer'"
+]; # A list of conditions of windows that should always be considered
+ # focused.
+detect-transient = true; # Use WM_TRANSIENT_FOR to group windows, and consider windows in
+ # the same group focused at the same time.
+detect-client-leader = true; # Use WM_CLIENT_LEADER to group windows.
+invert-color-include = [ ]; # Conditions for windows to be painted with inverted color.
+
+# GLX backend # GLX backend fine-tune options. See man page for more info.
+# glx-no-stencil = true; # Recommended.
+glx-copy-from-front = false; # Useful with --glx-swap-method,
+# glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync.
+# glx-no-rebind-pixmap = true; # Recommended if it works.
+glx-swap-method = "undefined"; # See man page.
+
+# Window type settings
+wintypes:
+{
+ tooltip = { fade = true; shadow = false; opacity = 0.9; focus = true; };
+ # fade: Fade the particular type of windows.
+ # shadow: Give those windows shadow
+ # opacity: Default opacity for the type of windows.
+ # focus: Whether to always consider windows of this type focused.
+};
diff --git a/.config/conky/bottom b/.config/conky/bottom
new file mode 100755
index 0000000..aa2f13b
--- /dev/null
+++ b/.config/conky/bottom
@@ -0,0 +1,47 @@
+use_xft yes
+xftfont 123:size=8
+xftalpha 0.1
+background true
+update_interval 0.1
+total_run_times 0
+own_window yes
+own_window_type override
+own_window_argb_visual true
+own_window_argb_value 100
+own_window_hints undecorated,sticky,below,skip_taskbar,skip_pager
+double_buffer yes
+draw_shades no
+draw_outline no
+draw_borders no
+draw_graph_borders no
+default_color white
+default_shade_color 222222
+default_outline_color green
+alignment bottom_left
+minimum_size 1920 30
+#maximum_width 160
+gap_x 0
+gap_y -10
+no_buffers yes
+uppercase no
+cpu_avg_samples 1
+net_avg_samples 1
+override_utf8_locale yes
+use_spacer left
+color1 EAEAEA
+color2 00FF66
+color3 11EAEA
+color4 EAEAEA
+color5 FFA300
+color6 22FFFF
+color7 FF8888
+text_buffer_size 256
+pad_percents 0
+short_units yes
+format_human_readable yes
+default_bar_size 100 6
+if_up_strictness link
+draw_shades yes
+
+TEXT
+${font Terminus:pixelsize=14}${color1} CPU: ${color3}${cpu cpu0}% ${goto 110}${color1}Memory: ${color3}[$memmax] $mem / $buffers / $cached ${goto 440}${color1}HD: ${color3}$diskio ${goto 540}${color1}Network: ${color3}${downspeedf wlp3s0} KB / ${upspeedf wlp3s0} KB ${goto 1750}${color5} ${time %H:%M:%S %d-%m-%Y}
diff --git a/.config/conky/right b/.config/conky/right
new file mode 100755
index 0000000..b6c4d25
--- /dev/null
+++ b/.config/conky/right
@@ -0,0 +1,97 @@
+use_xft yes
+xftfont 123:size=8
+xftalpha 0.1
+background true
+total_run_times 0
+own_window yes
+own_window_type override
+update_interval 1
+own_window_argb_visual true
+own_window_argb_value 100
+own_window_hints undecorated,sticky,below,skip_taskbar,skip_pager
+double_buffer yes
+draw_shades no
+draw_outline no
+draw_borders no
+draw_graph_borders no
+default_color white
+default_shade_color 222222
+default_outline_color green
+alignment top_right
+minimum_size 100 1020
+#maximum_width 160
+gap_x 0
+gap_y 30
+no_buffers yes
+uppercase no
+cpu_avg_samples 1
+net_avg_samples 1
+override_utf8_locale yes
+use_spacer left
+color1 EAEAEA
+color2 00FF66
+color3 11EAEA
+color4 EAEAEA
+color5 FFA300
+color6 22FFFF
+color7 FF8888
+text_buffer_size 512
+pad_percents 0
+short_units yes
+format_human_readable yes
+default_bar_size 115 5
+if_up_strictness link
+draw_shades yes
+
+TEXT
+${font Inconsolata:pixelsize=12}${color5} ${kernel}
+${color1} ${loadavg}
+
+${color5} ${time %H:%M:%S %d-%m-%Y}
+
+${color5} CPU: ${color3}${freq} Mhz
+${color5} total: ${color3}${cpubar cpu0}
+${color1} 1: ${color3}${cpubar cpu1}
+${color1} 2: ${color3}${cpubar cpu2}
+${color1} 3: ${color3}${cpubar cpu3}
+${color1} 4: ${color3}${cpubar cpu4}
+${color1} 5: ${color3}${cpubar cpu5}
+${color1} 6: ${color3}${cpubar cpu6}
+${color1} 7: ${color3}${cpubar cpu7}
+${color1} 8: ${color3}${cpubar cpu8}
+
+${color5} Memory: ${color3}$memmax
+${color1} in use: ${color3}$mem
+${color1} buffer: ${color3}$buffers
+${color1} cached: ${color3}$cached
+
+${color5} HD:
+${color1}/dev/sda: ${color3}${diskio /dev/sda}
+${color1}/dev/sdb: ${color3}${diskio /dev/sdb}
+
+${color5} Network:
+${if_up wlp3s0}
+${color1} net: ${color3}${exec iwgetid | cut -d ":" -f2}
+${color1} wlp3s0: ${color3}${addr wlp3s0}
+${color1} ext: ${color3}${exec dig +short myip.opendns.com @resolver1.opendns.com}
+${color1} gway: ${color3}${exec route -n | grep wlp3s0 | grep UG | awk '{print $2}'}
+${color1} dns: ${color3}${exec grep "nameserver" /etc/resolv.conf | awk '{print $2}'}
+${color1} speed: ${color3}${exec iwconfig wlp3s0 | grep "Bit Rate" | cut -d"=" -f2 | cut -d" " -f1} Mb/s
+${color1} frq: ${color3}${exec iwconfig wlp3s0 | grep "Frequency" | cut -d":" -f3 | cut -d " " -f1} GHz
+${color1} qual: ${color3}${exec iwconfig wlp3s0 | grep "Quality" | cut -d"=" -f2 | cut -d" " -f1 }
+${color1} level: ${color3}${exec iwconfig wlp3s0 | grep "Signal" | cut -d"=" -f3 }
+${color1} rate: ${color3}${downspeed wlp3s0} / ${upspeed wlp3s0}
+${endif}
+${if_up enp0s25}
+${color1}enp0s25: ${color3}${addr enp0s25}
+${color1} ext: ${color3}${exec dig +short myip.opendns.com @resolver1.opendns.com}
+${color1} gway: ${color3}${exec route -n | grep enp0s25 | grep UG |awk '{print $2}'}
+${color1} dns: ${color3}${exec grep "nameserver" /etc/resolv.conf | awk '{print $2}'}
+${color1} rate: ${color3}${downspeed enp0s25} / ${upspeed enp0s25}
+${endif}
+
+${color5} Process:
+${color1}${execi 1 ps ax -o pcpu,comm,%mem --sort=-c | head -n 12 | tail -n 14}
+
+${color5} Connections:
+${color1}${execpi 1 netstat --protocol=inet 2>/dev/null | grep -v localhost | grep ESTABLISHED | head -n 9 | sed -n "s/tcp.*\:.*\ \(.*\)\:\([^ ]*\)\ \(.*\)/ \$\{color2\}\2:\$\{color1\}\1/p" | sort | uniq }
diff --git a/.config/conky/side b/.config/conky/side
new file mode 100755
index 0000000..830e407
--- /dev/null
+++ b/.config/conky/side
@@ -0,0 +1,116 @@
+use_xft yes
+xftfont 123:size=8
+xftalpha 0.1
+background true
+total_run_times 0
+update_interval 1
+own_window yes
+own_window_type override
+#own_window_type desktop
+own_window_argb_visual true
+own_window_argb_value 0
+own_window_hints undecorated,sticky,below,skip_taskbar,skip_pager
+double_buffer yes
+draw_shades no
+draw_outline no
+draw_borders no
+draw_graph_borders no
+#default_color white
+#default_shade_color 222222
+#default_outline_color green
+alignment top_right
+minimum_size 100 1020
+maximum_width 160
+gap_x 0
+gap_y 26
+no_buffers yes
+uppercase no
+cpu_avg_samples 1
+net_avg_samples 1
+override_utf8_locale yes
+#use_spacer left
+color1 EAEAEA
+color2 00FF66
+color3 11EAEA
+color4 EAEAEA
+color5 FFA300
+color6 22FFFF
+color7 FF8888
+text_buffer_size 512
+pad_percents 0
+short_units yes
+format_human_readable yes
+default_bar_size 115 5
+if_up_strictness link
+
+TEXT
+${color5} Kernel: ${color1}${kernel}
+${color5} Date: ${color1}${time %Y%m%d}
+${color5} Time: ${color1}${time %H:%M:%S}\
+\
+${if_existing /etc/hostname trvlr}
+${color5} CPU: ${color3}${freq} Mhz
+${color1} ${color3}${cpubar cpu1}
+${color1} ${color3}${cpubar cpu2}
+${color1} ${color3}${cpubar cpu3}
+${color1} ${color3}${cpubar cpu4}\
+${endif}\
+${if_existing /etc/hostname dvzrv}
+${color5} CPU: ${color3}${freq} Mhz
+${color1} ${color3}${cpubar cpu1}
+${color1} ${color3}${cpubar cpu2}
+${color1} ${color3}${cpubar cpu3}
+${color1} ${color3}${cpubar cpu4}
+${color1} ${color3}${cpubar cpu5}
+${color1} ${color3}${cpubar cpu6}
+${color1} ${color3}${cpubar cpu7}
+${color1} ${color3}${cpubar cpu8}\
+${endif}\
+
+${color5} Load: ${color3}${loadavg}
+${color5} Memory: ${color1}$memmax
+${color1} in use: ${color3}$mem
+${color1} buffer: ${color3}$buffers
+${color1} cached: ${color3}$cached
+\
+${color5} I/O:
+${color1} /dev/sda: ${color3}${diskio /dev/sda}
+${if_existing /dev/sdb}
+${color1} /dev/sdb: ${color3}${diskio /dev/sdb}
+${endif}\
+${if_existing /dev/sdc}
+${color1} /dev/sdc: ${color3}${diskio /dev/sdc}
+${endif}\
+${if_existing /dev/sdd}
+${color1} /dev/sdd: ${color3}${diskio /dev/sdd}
+${endif}\
+${if_existing /dev/sde}
+${color1} /dev/sde: ${color3}${diskio /dev/sde}
+${endif}\
+\
+${color5} Network:\
+${if_up wlp3s0}
+${color1} wlp3s0: ${color3}${addr wlp3s0}
+${color1} net: ${color3}${exec iwgetid | cut -d ":" -f2}
+${color1} ext: ${color3}${exec dig +short myip.opendns.com @resolver1.opendns.com}
+${color1} gway: ${color3}${exec route -n | grep wlp3s0 | grep UG | awk '{print $2}'}
+${color1} dns: ${color3}${exec grep "nameserver" /etc/resolv.conf | awk '{print $2}'}
+${color1} speed: ${color3}${exec iwconfig wlp3s0 | grep "Bit Rate" | cut -d"=" -f2 | cut -d" " -f1} Mb/s
+${color1} frq: ${color3}${exec iwconfig wlp3s0 | grep "Frequency" | cut -d":" -f3 | cut -d " " -f1} GHz
+${color1} qual: ${color3}${exec iwconfig wlp3s0 | grep "Quality" | cut -d"=" -f2 | cut -d" " -f1 }
+${color1} level: ${color3}${exec iwconfig wlp3s0 | grep "Signal" | cut -d"=" -f3 }
+${color1} rate: ${color3}${downspeed wlp3s0} / ${upspeed wlp3s0}\
+${endif}\
+${if_up enp0s25}
+${color1} enp0s25: ${color3}${addr enp0s25}
+${color1} ext: ${color3}${exec dig +short myip.opendns.com @resolver1.opendns.com}
+${color1} gway: ${color3}${exec route -n | grep enp0s25 | grep UG |awk '{print $2}'}
+${color1} dns: ${color3}${exec grep "nameserver" /etc/resolv.conf | awk '{print $2}'}
+${color1} rate: ${color3}${downspeed enp0s25} / ${upspeed enp0s25}\
+${endif}\
+
+${color5} Processes:
+${color1}${execi 1 ps ax -o pcpu,%mem,comm --sort=-c | head -n 11 | tail -n 10}\
+
+${color5} Connections:
+${color1}${execpi 1 netstat --protocol=inet 2>/dev/null | grep -v localhost | grep ESTABLISHED | head -n 10 | sed -n "s/tcp.*\:.*\ \(.*\)\:\([^ ]*\)\ \(.*\)/ \$\{color2\}\2:\$\{color1\}\1/p" | sort | uniq }\
diff --git a/.config/conky/top b/.config/conky/top
new file mode 100755
index 0000000..257be2a
--- /dev/null
+++ b/.config/conky/top
@@ -0,0 +1,47 @@
+use_xft yes
+xftfont 123:size=8
+xftalpha 0.1
+background true
+update_interval 0.1
+total_run_times 0
+own_window yes
+own_window_type override
+own_window_argb_visual true
+own_window_argb_value 100
+own_window_hints undecorated,sticky,below,skip_taskbar,skip_pager
+double_buffer yes
+draw_shades no
+draw_outline no
+draw_borders no
+draw_graph_borders no
+default_color white
+default_shade_color 222222
+default_outline_color green
+alignment top_left
+minimum_size 1920 15
+#maximum_width 160
+gap_x 0
+gap_y 5
+no_buffers yes
+uppercase no
+cpu_avg_samples 1
+net_avg_samples 1
+override_utf8_locale yes
+use_spacer left
+color1 EAEAEA
+color2 00FF66
+color3 11EAEA
+color4 EAEAEA
+color5 FFA300
+color6 22FFFF
+color7 FF8888
+text_buffer_size 256
+pad_percents 0
+short_units yes
+format_human_readable yes
+default_bar_size 40 6
+if_up_strictness link
+draw_shades yes
+
+TEXT
+${font Terminus:pixelsize=14}${color2}[ ${color3}${exec ~/ownCloud/sys-pref/conky-helpers/get-tag.sh} ${color5}${exec ~/ownCloud/sys-pref/conky-helpers/get-layout.sh}${color2} ]${color1} ${goto 500}Music: ${color1}[ ${color5}${mpd_elapsed}${color1} / ${color5}${mpd_length}${color1} ] ${color2}${mpd_status} ${color3}${if_match "${mpd_artist}" == ""}${mpd_file}${endif}${if_match "${mpd_artist}" != ""}${mpd_artist}${color1} - ${color3}${mpd_title}${endif}${image ~/ownCloud/sys-pref/conky-icons/volume.png -s 12x12 -n -p 1584,1}${goto 1605}${color3}${execbar pamixer --get-volume} ${image ~/ownCloud/sys-pref/conky-icons/brightness.png -s 12x12 -n -p 1657,1}${goto 1680}${color3}${execbar xbacklight}
diff --git a/.config/crypted-backups b/.config/crypted-backups
new file mode 100644
index 0000000..0b6c1b7
--- /dev/null
+++ b/.config/crypted-backups
@@ -0,0 +1,56 @@
+# Settings for user scripts in /usr/lib/systemd/system/scripts/{backup-*,cleanup-backup}.
+# The following environment variables will be made available through a systemd unit file.
+# Note: No variable expansion!
+# Read more on "EnvironmentFile" and "Environment" in the following systemd man page: man 5 systemd.exec
+
+## General settings
+
+# Suffix settings (don't change these)
+tar_suffix=".tar.xz"
+gpg_suffix=".gpg"
+sql_suffix=".sql"
+
+# The temporary folder to use.
+# For security and speed, use tmpfs (your /tmp directory)!
+# Defaults to "/tmp/"
+# You might want to set it to your user's /tmp directory
+# Mind a trailing slash!
+# Example: tmp="/tmp/username/"
+tmp="/tmp/dave"
+
+# Your public gpg key, with which to encrypt the backups.
+# Make sure that root has this public key its keyring!
+# Example: gpg_public_key="your.name@example.com"
+gpg_public_key="dave@sleepmap.de"
+
+
+## Cleanup settings
+
+# Deletes files that are older than the given time (in days)
+# Set time in days. Defaults to 90
+older_than=90
+# Set the folder to cleanup.
+# Mind a trailing slash!
+# Example: cleanup_folder="/some/folder/to/cleanup/"
+cleanup_folder=""
+
+
+## User backup settings
+
+# ~/.mozilla/firefox/<profile>
+# Will backup every folder of given user beneath ~/.mozilla/firefox/ separately (ignoring Crash*, profiles.ini, *-backup).
+# You don't need to change the source path.
+firefox_folder_source=".mozilla/firefox/"
+# Set a backup destination for firefox (make sure you're allowed to write in there!)
+# Mind a trailing slash!
+# Example: firefox_folder_destination="/some/place/to/backup/firefox/to/"
+firefox_folder_destination="/mnt/backup/dvzrv/firefox/"
+
+# Settings for ~/.thunderbird/<profile> backup
+# Will backup every folder of given user beneath ~/.thunderbird/ separately (ignoring Crash*, profiles.ini, *-backup).
+# You don't need to change the source path.
+thunderbird_folder_source=".thunderbird/"
+# Set a backup destination for thunderbird (make sure you're allowed to write in there!)
+# Mind a trailing slash!
+# Example: thunderbird_folder_destination="/some/place/to/backup/thunderbird/to/"
+thunderbird_folder_destination="/mnt/backup/dvzrv/thunderbird/"
diff --git a/.config/dpms b/.config/dpms
new file mode 100644
index 0000000..0a4c29b
--- /dev/null
+++ b/.config/dpms
@@ -0,0 +1,10 @@
+# Config file for bin/adjust_dpms
+# The arrays below define the programs to monitor and unset
+# screen blanking for.
+# Arrays must be of the form array=( program otherprogram )
+
+# Pre-compiled programs
+programs=( supercollider sclang scsynth ardour-3.5.403 pdextended vlc keepnote )
+
+# tmp locations for dpms and screensaver settings
+adjust_dpms=/tmp/adjust_dpms
diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf
new file mode 100644
index 0000000..baef22e
--- /dev/null
+++ b/.config/fontconfig/fonts.conf
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+ <cachedir>~/.local/share/fontconfig</cachedir>
+</fontconfig>
diff --git a/.config/gtk-3.0/bookmarks b/.config/gtk-3.0/bookmarks
new file mode 100644
index 0000000..a9c81f4
--- /dev/null
+++ b/.config/gtk-3.0/bookmarks
@@ -0,0 +1,8 @@
+file:///home/dave/ownCloud ownCloud
+file:///home/dave/git
+file:///home/dave/Downloads
+file:///home/dave/Music
+file:///home/dave/ownCloud/photos
+file:///home/dave/ownCloud/Notes
+file:///home/dave/ownCloud/documents
+file:///home/dave/Videos
diff --git a/.config/gtk-3.0/gtk.css b/.config/gtk-3.0/gtk.css
new file mode 100644
index 0000000..5dead4a
--- /dev/null
+++ b/.config/gtk-3.0/gtk.css
@@ -0,0 +1,10 @@
+.window-frame, .window-frame:backdrop {
+ box-shadow: 0 0 0 black;
+ border-style: none;
+ margin: 0;
+ border-radius: 0;
+}
+
+.titlebar {
+ border-radius: 0;
+}
diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini
new file mode 100644
index 0000000..39ca34a
--- /dev/null
+++ b/.config/gtk-3.0/settings.ini
@@ -0,0 +1,6 @@
+[Settings]
+gtk-application-prefer-dark-theme=1
+gtk-fallback-icon-theme = gnome
+gtk-recent-files-max-age=0
+gtk-recent-files-limit=0
+#gtk-decoration-layout=menu:
diff --git a/.config/khal/khal.conf b/.config/khal/khal.conf
new file mode 100644
index 0000000..5e4fa78
--- /dev/null
+++ b/.config/khal/khal.conf
@@ -0,0 +1,95 @@
+[calendars]
+
+# SLEEPMAP
+[[akt]]
+path = ~/.calendars/akt
+color = dark magenta
+
+[[birthdays]]
+path = ~/.calendars/contact_birthdays
+readonly = True
+color = white
+
+[[concerts]]
+path = ~/.calendars/concerts
+color = brown
+
+[[courses]]
+path = ~/.calendars/courses
+color = light red
+
+[[flat]]
+path = ~/.calendars/flat
+color = light blue
+
+[[live]]
+path = ~/.calendars/live
+color = light green
+
+[[private]]
+path = ~/.calendars/private
+color = dark cyan
+
+[[unix-pool]]
+path = ~/.calendars/unix-pool
+color = dark magenta
+
+[[work]]
+path = ~/.calendars/work
+color = dark magenta
+
+# AKT
+[[ak]]
+path = ~/.calendars/ak_shared_by_mvoigt
+color = dark magenta
+
+[[grossesstudio]]
+path = ~/.calendars/grossesstudio_shared_by_mvoigt
+color = brown
+
+[[kleinesstudio]]
+path = ~/.calendars/kleinesstudio_shared_by_mvoigt
+color = dark red
+
+[[labs]]
+path = ~/.calendars/labs_shared_by_mvoigt
+color = light grey
+
+[[rechencluster]]
+path = ~/.calendars/rechencluster_shared_by_mvoigt
+color = light grey
+
+[[studioausleihe]]
+path = ~/.calendars/studioausleihe_shared_by_mvoigt
+color = light red
+
+[[studiotermine]]
+path = ~/.calendars/studiotermine_shared_by_mvoigt
+color = dark red
+
+[[urlaub]]
+path = ~/.calendars/akurlaub_shared_by_mvoigt
+color = yellow
+
+
+[sqlite]
+path = ~/.config/khal/khal.db
+
+[locale]
+local_timezone = Europe/Berlin
+default_timezone = Europe/Berlin
+
+timeformat = %H:%M
+dateformat = %d.%m.
+longdateformat = %d.%m.%Y
+datetimeformat = %d.%m. %H:%M
+longdatetimeformat = %d.%m.%Y %H:%M
+
+firstweekday = 0
+weeknumbers = left
+
+[default]
+default_command = agenda
+default_calendar = private
+# in agenda/calendar display, shows all days even if there is no event
+show_all_days = False
diff --git a/.config/khard/khard.conf b/.config/khard/khard.conf
new file mode 100644
index 0000000..9a92f3b
--- /dev/null
+++ b/.config/khard/khard.conf
@@ -0,0 +1,33 @@
+[general]
+editor = /usr/bin/vim
+merge_editor = /usr/bin/vimdiff
+default_country = Germany
+default_action = list
+show_nicknames = yes
+
+[addressbooks]
+#SLEEPMAP
+[[bands]]
+path = ~/.contacts/bands/
+
+[[private]]
+path = ~/.contacts/private/
+
+[[services]]
+path = ~/.contacts/services/
+
+[[unixpool]]
+path = ~/.contacts/unixpool/
+
+[[venues]]
+path = ~/.contacts/venues/
+
+#TU-BERLIN
+[[exteam]]
+path = ~/.contacts/exteam
+
+[[studio]]
+path = ~/.contacts/studio/
+
+[[team]]
+path = ~/.contacts/team
diff --git a/.config/linuxsampler.org/Qsampler.conf b/.config/linuxsampler.org/Qsampler.conf
new file mode 100644
index 0000000..bb420d0
--- /dev/null
+++ b/.config/linuxsampler.org/Qsampler.conf
@@ -0,0 +1,63 @@
+[Geometry]
+qsamplerInstrumentListForm\x=1
+qsamplerInstrumentListForm\y=25
+qsamplerInstrumentListForm\width=720
+qsamplerInstrumentListForm\height=340
+qsamplerInstrumentListForm\visible=true
+qsamplerDeviceForm\x=0
+qsamplerDeviceForm\y=0
+qsamplerDeviceForm\width=530
+qsamplerDeviceForm\height=488
+qsamplerDeviceForm\visible=false
+qsamplerMainForm\x=961
+qsamplerMainForm\y=25
+qsamplerMainForm\width=958
+qsamplerMainForm\height=1174
+qsamplerMainForm\visible=true
+
+[Layout]
+DockWindows=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x3\0\0\x3\xbe\0\0\0\xd4\xfc\x1\0\0\0\x1\xfb\0\0\0 \0q\0s\0\x61\0m\0p\0l\0\x65\0r\0M\0\x65\0s\0s\0\x61\0g\0\x65\0s\x1\0\0\0\0\0\0\x3\xbe\0\0\0\x46\0\xff\xff\xff\0\0\x3\xbe\0\0\x3t\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x3\0\0\0\x16\0\x66\0i\0l\0\x65\0T\0o\0o\0l\0\x62\0\x61\0r\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x16\0\x65\0\x64\0i\0t\0T\0o\0o\0l\0\x62\0\x61\0r\x1\0\0\0\xf3\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1e\0\x63\0h\0\x61\0n\0n\0\x65\0l\0s\0T\0o\0o\0l\0\x62\0\x61\0r\x1\0\0\x1\xc7\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
+
+[Program]
+Version=0.2.3
+
+[Options]
+Server\ServerHost=localhost
+Server\ServerPort=8888
+Server\ServerTimeout=1000
+Server\ServerStart=true
+Server\ServerCmdLine=linuxsampler
+Server\StartDelay=3
+Logging\MessagesLog=false
+Logging\MessagesLogPath=qsampler.log
+Display\DisplayFont=",9,-1,5,50,0,0,0,0,0"
+Display\DisplayEffect=true
+Display\AutoRefresh=true
+Display\AutoRefreshTime=1000
+Display\MaxVolume=100
+Display\MessagesFont="Sans Serif,9,-1,5,50,0,0,0,0,0"
+Display\MessagesLimit=true
+Display\MessagesLimitLines=1000
+Display\ConfirmRemove=true
+Display\KeepOnTop=true
+Display\StdoutCapture=true
+Display\CompletePath=true
+Display\MaxRecentFiles=5
+Display\BaseFontSize=0
+Display\InstrumentNames=true
+View\Menubar=true
+View\Toolbar=true
+View\Statusbar=true
+View\AutoArrange=true
+
+[Default]
+SessionDir=
+InstrumentDir=
+EngineName=
+AudioDriver=
+MidiDriver=
+MidiMap=1
+MidiBank=0
+MidiProg=0
+Volume=100
+Loadmode=0
diff --git a/.config/mc/ini b/.config/mc/ini
new file mode 100644
index 0000000..63b44a9
--- /dev/null
+++ b/.config/mc/ini
@@ -0,0 +1,141 @@
+[Midnight-Commander]
+verbose=1
+pause_after_run=1
+shell_patterns=1
+auto_save_setup=1
+preallocate_space=0
+auto_menu=0
+use_internal_view=1
+use_internal_edit=1
+clear_before_exec=1
+confirm_delete=1
+confirm_overwrite=1
+confirm_execute=0
+confirm_history_cleanup=1
+confirm_exit=0
+confirm_directory_hotlist_delete=1
+safe_delete=0
+mouse_repeat_rate=100
+double_click_speed=250
+use_8th_bit_as_meta=0
+confirm_view_dir=0
+mouse_move_pages_viewer=1
+mouse_close_dialog=0
+fast_refresh=0
+drop_menus=0
+wrap_mode=1
+old_esc_mode=0
+old_esc_mode_timeout=1000000
+cd_symlinks=1
+show_all_if_ambiguous=0
+max_dirt_limit=10
+use_file_to_guess_type=1
+alternate_plus_minus=0
+only_leading_plus_minus=1
+show_output_starts_shell=0
+xtree_mode=0
+num_history_items_recorded=60
+file_op_compute_totals=1
+classic_progressbar=1
+vfs_timeout=60
+ftpfs_directory_timeout=900
+use_netrc=1
+ftpfs_retry_seconds=30
+ftpfs_always_use_proxy=0
+ftpfs_use_passive_connections=1
+ftpfs_use_passive_connections_over_proxy=0
+ftpfs_use_unix_list_options=1
+ftpfs_first_cd_then_ls=1
+fish_directory_timeout=900
+editor_tab_spacing=8
+editor_word_wrap_line_length=72
+editor_fill_tabs_with_spaces=0
+editor_return_does_auto_indent=1
+editor_backspace_through_tabs=0
+editor_fake_half_tabs=1
+editor_option_save_mode=0
+editor_option_save_position=1
+editor_option_auto_para_formatting=0
+editor_option_typewriter_wrap=0
+editor_edit_confirm_save=1
+editor_syntax_highlighting=1
+editor_persistent_selections=1
+editor_drop_selection_on_copy=1
+editor_cursor_beyond_eol=0
+editor_cursor_after_inserted_block=0
+editor_visible_tabs=1
+editor_visible_spaces=1
+editor_line_state=0
+editor_simple_statusbar=0
+editor_check_new_line=0
+editor_show_right_margin=0
+editor_group_undo=0
+editor_ask_filename_before_edit=0
+nice_rotating_dash=1
+mcview_remember_file_position=0
+auto_fill_mkdir_name=1
+copymove_persistent_attr=1
+editor_backup_extension=~
+editor_filesize_threshold=64M
+editor_stop_format_chars=-+*\\,.;:&>
+mcview_eof=
+ignore_ftp_chattr_errors=true
+skin=default
+
+[Layout]
+message_visible=1
+keybar_visible=1
+xterm_title=1
+output_lines=0
+command_prompt=1
+menubar_visible=1
+free_space=1
+horizontal_split=0
+vertical_equal=1
+left_panel_size=136
+horizontal_equal=1
+top_panel_size=1
+
+[Misc]
+timeformat_recent=%b %e %H:%M
+timeformat_old=%b %e %Y
+ftp_proxy_host=gate
+ftpfs_password=anonymous@
+display_codepage=UTF-8
+source_codepage=Other_8_bit
+autodetect_codeset=
+clipboard_store=
+clipboard_paste=
+
+[Colors]
+base_color=
+xterm-termite=
+color_terminals=
+
+xterm-color=
+
+[Panels]
+show_mini_info=true
+kilobyte_si=false
+mix_all_files=false
+show_backups=true
+show_dot_files=true
+fast_reload=false
+fast_reload_msg_shown=false
+mark_moves_down=true
+reverse_files_only=true
+auto_save_setup_panels=false
+navigate_with_arrows=false
+panel_scroll_pages=true
+mouse_move_pages=true
+filetype_mode=true
+permission_mode=false
+torben_fj_mode=false
+quick_search_mode=2
+select_flags=6
+
+[Panelize]
+Find *.orig after patching=find . -name \\*.orig -print
+Find SUID and SGID programs=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print
+Find rejects after patching=find . -name \\*.rej -print
+Modified git files=git ls-files --modified
diff --git a/.config/mc/panels.ini b/.config/mc/panels.ini
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/mc/panels.ini
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
new file mode 100644
index 0000000..85dbc4f
--- /dev/null
+++ b/.config/mimeapps.list
@@ -0,0 +1,25 @@
+[Default Applications]
+x-scheme-handler/http=firefox.desktop
+x-scheme-handler/https=firefox.desktop
+x-scheme-handler/ftp=firefox.desktop
+x-scheme-handler/chrome=firefox.desktop
+text/html=firefox.desktop
+application/x-extension-htm=firefox.desktop
+application/x-extension-html=firefox.desktop
+application/x-extension-shtml=firefox.desktop
+application/xhtml+xml=firefox.desktop
+application/x-extension-xhtml=firefox.desktop
+application/x-extension-xht=firefox.desktop
+
+[Added Associations]
+x-scheme-handler/http=firefox.desktop;
+x-scheme-handler/https=firefox.desktop;
+x-scheme-handler/ftp=firefox.desktop;
+x-scheme-handler/chrome=firefox.desktop;
+text/html=firefox.desktop;
+application/x-extension-htm=firefox.desktop;
+application/x-extension-html=firefox.desktop;
+application/x-extension-shtml=firefox.desktop;
+application/xhtml+xml=firefox.desktop;
+application/x-extension-xhtml=firefox.desktop;
+application/x-extension-xht=firefox.desktop;
diff --git a/.config/mpd/folders/Artists b/.config/mpd/folders/Artists
new file mode 120000
index 0000000..a2225ce
--- /dev/null
+++ b/.config/mpd/folders/Artists
@@ -0,0 +1 @@
+/mnt/music/Artists \ No newline at end of file
diff --git a/.config/mpd/folders/Various Artists b/.config/mpd/folders/Various Artists
new file mode 120000
index 0000000..d21d487
--- /dev/null
+++ b/.config/mpd/folders/Various Artists
@@ -0,0 +1 @@
+/mnt/music/Various Artists \ No newline at end of file
diff --git a/.config/mpd/mpd-marx.conf b/.config/mpd/mpd-marx.conf
new file mode 100644
index 0000000..4e32dfc
--- /dev/null
+++ b/.config/mpd/mpd-marx.conf
@@ -0,0 +1,31 @@
+music_directory "/home/dave/.config/mpd/folders"
+playlist_directory "/home/dave/.config/mpd/playlists"
+db_file "/home/dave/.config/mpd/mpd.db"
+log_file "/home/dave/.config/mpd/mpd.log"
+pid_file "/home/dave/.config/mpd/mpd.pid"
+state_file "/home/dave/.config/mpd/mpdstate"
+bind_to_address "127.0.0.1"
+port "6600"
+gapless_mp3_playback "yes"
+save_absolute_paths_in_playlists "yes"
+#zeroconf_enabled "yes"
+#zeroconf_name "dvzrv mpd"
+
+input {
+ plugin "curl"
+}
+
+audio_output {
+ type "pulse"
+ name "mpd"
+ mixer_type "software"
+ server "marx.ak.tu-berlin.de" #optional
+}
+
+audio_output {
+ type "fifo"
+ name "mpd_fifo"
+ path "/run/user/1000/mpd/fifo"
+ format "44100:16:2"
+}
+
diff --git a/.config/mpd/mpd-s4.conf b/.config/mpd/mpd-s4.conf
new file mode 100644
index 0000000..45207d9
--- /dev/null
+++ b/.config/mpd/mpd-s4.conf
@@ -0,0 +1,31 @@
+music_directory "/home/dave/.config/mpd/folders"
+playlist_directory "/home/dave/.config/mpd/playlists"
+db_file "/home/dave/.config/mpd/mpd.db"
+log_file "/home/dave/.config/mpd/mpd.log"
+pid_file "/home/dave/.config/mpd/mpd.pid"
+state_file "/home/dave/.config/mpd/mpdstate"
+bind_to_address "127.0.0.1"
+port "6600"
+gapless_mp3_playback "yes"
+save_absolute_paths_in_playlists "yes"
+#zeroconf_enabled "yes"
+#zeroconf_name "dvzrv mpd"
+
+input {
+ plugin "curl"
+}
+
+audio_output {
+ type "pulse"
+ name "mpd"
+ mixer_type "software"
+ server "s4" #optional
+}
+
+audio_output {
+ type "fifo"
+ name "mpd_fifo"
+ path "/run/user/1000/mpd/fifo"
+ format "44100:16:2"
+}
+
diff --git a/.config/mpd/mpd.conf b/.config/mpd/mpd.conf
new file mode 100644
index 0000000..294d26a
--- /dev/null
+++ b/.config/mpd/mpd.conf
@@ -0,0 +1,30 @@
+music_directory "/home/dave/.config/mpd/folders"
+playlist_directory "/home/dave/.config/mpd/playlists"
+db_file "/home/dave/.config/mpd/mpd.db"
+log_file "/home/dave/.config/mpd/mpd.log"
+pid_file "/home/dave/.config/mpd/mpd.pid"
+state_file "/home/dave/.config/mpd/mpdstate"
+bind_to_address "127.0.0.1"
+port "6600"
+gapless_mp3_playback "yes"
+save_absolute_paths_in_playlists "yes"
+#zeroconf_enabled "yes"
+#zeroconf_name "dvzrv mpd"
+
+input {
+ plugin "curl"
+}
+
+audio_output {
+ type "pulse"
+ name "mpd"
+ mixer_type "software"
+}
+
+audio_output {
+ type "fifo"
+ name "mpd_fifo"
+ path "/run/user/1000/mpd/fifo"
+ format "44100:16:2"
+}
+
diff --git a/.config/patchagerc b/.config/patchagerc
new file mode 100644
index 0000000..ff1a691
--- /dev/null
+++ b/.config/patchagerc
@@ -0,0 +1,19 @@
+window_location 0 0
+window_size 958 1174
+zoom_level 0.960316
+font_size 11
+show_toolbar 1
+sprung_layout 1
+module_position "Midi Through" input 587 147
+module_position "Midi Through" output 102 147
+module_position "a2j" input 490 6322
+module_position "a2j" output 8 4787
+module_position "ardour" inputoutput 519 2431.5
+module_position "firewire_pcm" input 353.351 259.03
+module_position "firewire_pcm" output 45 2551.5
+module_position "gx_head_amp" inputoutput 726.598 297.735
+module_position "gx_head_fx" inputoutput 836.681 368.929
+module_position "nanoKONTROL2" input 579 77
+module_position "nanoKONTROL2" output 94 77
+module_position "nanoPAD2" input 595 8
+module_position "nanoPAD2" output 110 8
diff --git a/.config/profile-cleaner.conf b/.config/profile-cleaner.conf
new file mode 100644
index 0000000..470cc00
--- /dev/null
+++ b/.config/profile-cleaner.conf
@@ -0,0 +1,9 @@
+#
+# /home/dave/.config/profile-cleaner.conf
+#
+
+# Define the background of your terminal theme here.
+# A setting of dark will produce colors that nicely contrast a dark background.
+# A setting of light will produce colors that nicely contrast a light background.
+COLORS=dark
+#COLORS=light
diff --git a/.config/psd/.psd.conf b/.config/psd/.psd.conf
new file mode 100644
index 0000000..68c26c5
--- /dev/null
+++ b/.config/psd/.psd.conf
@@ -0,0 +1,67 @@
+#
+# $XDG_HOME_CONFIG/psd/psd.conf
+#
+# For documentation, refer to the psd man page or the wiki page
+# https://wiki.archlinux.org/index.php/Profile-sync-daemon
+
+## NOTE the following:
+## To protect data from corruption, in the event that you do make an edit while
+## psd is active, any changes made will be applied the next time you start psd.
+
+# Uncomment and set to "yes" to use overlayfs instead of a full copy to reduce
+# the memory costs and to improve sync/unsync operations. Note that your kernel
+# MUST have this module available in order to use this mode
+#
+#USE_OVERLAYFS="no"
+
+# List browsers separated by spaces to include in the sync. Useful if you do not
+# wish to have all possible browser profiles sync'ed which is the default if
+# this variable is left commented.
+#
+# Possible values:
+# chromium
+# chromium-dev
+# conkeror.mozdev.org
+# epiphany
+# firefox
+# firefox-trunk
+# google-chrome
+# google-chrome-beta
+# google-chrome-unstable
+# heftig-aurora
+# icecat
+# inox
+# luakit
+# midori
+# opera
+# opera-beta
+# opera-developer
+# opera-legacy
+# otter-browser
+# qupzilla
+# palemoon
+# rekonq
+# seamonkey
+# vivaldi
+# vivaldi-snapshot
+#
+BROWSERS="firefox chromium"
+
+# Define where browser profiles will reside in tmpfs if $XDG_RUNTIME_DIR isn't
+# defined. This location must be mounted to tmpfs and MUST have permissions
+# of at least 700.
+# Use NO trailing backslash!
+#
+# Suggested locations based on distro defaults:
+# Arch Linux/Chakra, Fedora, and Gentoo leave this commented out
+# Debian 8+ use a setting of "/dev/shm"
+# Ubuntu 15.05+ use "/dev/shm"
+VOLATILE="/tmp/dave"
+
+# Uncomment and set to "no" to completely disable the crash recovery feature.
+#
+# The default is to create crash recovery backups if the system is ungracefully
+# powered-down due to a kernel panic, hitting the reset switch, battery going
+# dead, etc. Some users keep very diligent backups and don't care to have this
+# feature enabled.
+#USE_BACKUPS="yes"
diff --git a/.config/psd/psd.conf b/.config/psd/psd.conf
new file mode 100644
index 0000000..68c26c5
--- /dev/null
+++ b/.config/psd/psd.conf
@@ -0,0 +1,67 @@
+#
+# $XDG_HOME_CONFIG/psd/psd.conf
+#
+# For documentation, refer to the psd man page or the wiki page
+# https://wiki.archlinux.org/index.php/Profile-sync-daemon
+
+## NOTE the following:
+## To protect data from corruption, in the event that you do make an edit while
+## psd is active, any changes made will be applied the next time you start psd.
+
+# Uncomment and set to "yes" to use overlayfs instead of a full copy to reduce
+# the memory costs and to improve sync/unsync operations. Note that your kernel
+# MUST have this module available in order to use this mode
+#
+#USE_OVERLAYFS="no"
+
+# List browsers separated by spaces to include in the sync. Useful if you do not
+# wish to have all possible browser profiles sync'ed which is the default if
+# this variable is left commented.
+#
+# Possible values:
+# chromium
+# chromium-dev
+# conkeror.mozdev.org
+# epiphany
+# firefox
+# firefox-trunk
+# google-chrome
+# google-chrome-beta
+# google-chrome-unstable
+# heftig-aurora
+# icecat
+# inox
+# luakit
+# midori
+# opera
+# opera-beta
+# opera-developer
+# opera-legacy
+# otter-browser
+# qupzilla
+# palemoon
+# rekonq
+# seamonkey
+# vivaldi
+# vivaldi-snapshot
+#
+BROWSERS="firefox chromium"
+
+# Define where browser profiles will reside in tmpfs if $XDG_RUNTIME_DIR isn't
+# defined. This location must be mounted to tmpfs and MUST have permissions
+# of at least 700.
+# Use NO trailing backslash!
+#
+# Suggested locations based on distro defaults:
+# Arch Linux/Chakra, Fedora, and Gentoo leave this commented out
+# Debian 8+ use a setting of "/dev/shm"
+# Ubuntu 15.05+ use "/dev/shm"
+VOLATILE="/tmp/dave"
+
+# Uncomment and set to "no" to completely disable the crash recovery feature.
+#
+# The default is to create crash recovery backups if the system is ungracefully
+# powered-down due to a kernel panic, hitting the reset switch, battery going
+# dead, etc. Some users keep very diligent backups and don't care to have this
+# feature enabled.
+#USE_BACKUPS="yes"
diff --git a/.config/pulse/client.conf b/.config/pulse/client.conf
new file mode 100644
index 0000000..bb94907
--- /dev/null
+++ b/.config/pulse/client.conf
@@ -0,0 +1,3 @@
+autospawn = no
+extra-arguments = --log-target=syslog -vvvv
+
diff --git a/.config/redshift.conf b/.config/redshift.conf
new file mode 100644
index 0000000..1cdedf3
--- /dev/null
+++ b/.config/redshift.conf
@@ -0,0 +1,25 @@
+; Global settings
+[redshift]
+temp-day=6500
+temp-night=4700
+brightness-day=1.0
+brightness-night=0.92
+transition=0
+gamma-day=0.97:0.94:0.95
+gamma-night=0.93:0.9:0.88
+location-provider=manual
+adjustment-method=randr
+
+; The location provider and adjustment method settings
+; are in their own sections.
+[manual]
+; Berlin
+lat=52.31
+lon=13.23
+
+; In this example screen 1 is adjusted by vidmode. Note
+; that the numbering starts from 0, so this is actually
+; the second screen.
+[randr]
+screen=0
+;screen=1
diff --git a/.config/synergy-s4.conf b/.config/synergy-s4.conf
new file mode 100644
index 0000000..6d7c579
--- /dev/null
+++ b/.config/synergy-s4.conf
@@ -0,0 +1,27 @@
+# sample synergy configuration file
+#
+# comments begin with the # character and continue to the end of
+# line. comments may appear anywhere the syntax permits.
+
+section: screens
+ dvzrv:
+ s4:
+ s5:
+ c75:
+end
+
+section: links
+ dvzrv:
+ right= s4
+ left = c75
+
+ s4:
+ right = s5
+ left = dvzrv
+
+ s5:
+ left = s4
+
+ c75:
+ right = dvzrv
+end
diff --git a/.config/synergy-s5.conf b/.config/synergy-s5.conf
new file mode 100644
index 0000000..bd87aa0
--- /dev/null
+++ b/.config/synergy-s5.conf
@@ -0,0 +1,22 @@
+# sample synergy configuration file
+#
+# comments begin with the # character and continue to the end of
+# line. comments may appear anywhere the syntax permits.
+
+section: screens
+ s4:
+ s5:
+ dvzrv:
+end
+
+section: links
+ s4:
+ right = dvzrv
+
+ s5:
+ left = dvzrv
+
+ dvzrv:
+ left = s4
+ right = s5
+end
diff --git a/.config/terminology/config/standard/base.cfg b/.config/terminology/config/standard/base.cfg
new file mode 100644
index 0000000..ad4940a
--- /dev/null
+++ b/.config/terminology/config/standard/base.cfg
Binary files differ
diff --git a/.config/termite/config b/.config/termite/config
new file mode 100644
index 0000000..16d01da
--- /dev/null
+++ b/.config/termite/config
@@ -0,0 +1,72 @@
+[options]
+scroll_on_output = false
+scroll_on_keystroke = true
+audible_bell = false
+mouse_autohide = false
+allow_bold = true
+dynamic_title = true
+urgent_on_bell = true
+clickable_url = true
+font = Inconsolata 10
+scrollback_lines = 10000
+search_wrap = true
+icon_name = terminal
+#geometry = 640x480
+
+# "system", "on" or "off"
+cursor_blink = system
+
+# "block", "underline" or "ibeam"
+cursor_shape = ibeam
+
+# $BROWSER is used by default
+browser = firefox
+
+# set size hints for the window
+#size_hints = false
+
+# emit escape sequences for other keys modified by Control
+#modify_other_keys = false
+
+[colors]
+#cursor = #dcdccc
+foreground = #dcdccc
+foreground_bold = #ffffff
+background = #000000
+
+# 20% background transparency (requires a compositor)
+background = rgba(00, 00, 00, 0.79)
+
+# if unset, will reverse foreground and background
+highlight = #2f2f2f
+
+# colors from color0 to color254 can be set
+color0 = #3f3f3f
+color1 = #705050
+color2 = #60b48a
+color3 = #dfaf8f
+color4 = #506070
+color5 = #dc8cc3
+color6 = #8cd0d3
+color7 = #dcdccc
+color8 = #709080
+color9 = #dca3a3
+color10 = #c3bf9f
+color11 = #f0dfaf
+color12 = #94bff3
+color13 = #ec93d3
+color14 = #93e0e3
+color15 = #ffffff
+
+[hints]
+#font = Monospace 12
+#foreground = #dcdccc
+#background = #3f3f3f
+#active_foreground = #e68080
+#active_background = #3f3f3f
+#padding = 2
+#border = #3f3f3f
+#border_width = 0.5
+#roundness = 2.0
+
+# vim: ft=dosini cms=#%s
diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs
new file mode 100644
index 0000000..35371ca
--- /dev/null
+++ b/.config/user-dirs.dirs
@@ -0,0 +1,15 @@
+# This file is written by xdg-user-dirs-update
+# If you want to change or add directories, just edit the line you're
+# interested in. All local changes will be retained on the next run
+# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
+# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
+# absolute path. No other format is supported.
+#
+XDG_DESKTOP_DIR="$HOME/Desktop"
+XDG_DOWNLOAD_DIR="$HOME/Downloads"
+XDG_PUBLICSHARE_DIR="$HOME/ownCloud"
+XDG_DOCUMENTS_DIR="$HOME/ownCloud/documents"
+XDG_MUSIC_DIR="$HOME/Music"
+XDG_PICTURES_DIR="$HOME/ownCloud/photos"
+XDG_VIDEOS_DIR="$HOME/Videos"
+XDG_TEMPLATES_DIR="$HOME/ownCloud/Notes"
diff --git a/.ctags b/.ctags
new file mode 100644
index 0000000..ce9b6d7
--- /dev/null
+++ b/.ctags
@@ -0,0 +1,26 @@
+--langdef=js
+--langmap=js:.js
+--regex-JavaScript=/([A-Za-z0-9._$\(\)]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/m,method/
+--regex-JavaScript=/([A-Za-z0-9._$\#\(\)]+)[ \t]*[:][ \t]*([A-Za-z0-9._\-\#\'\"]+)[ \t]*/\1/p,property/
+--regex-JavaScript=/([A-Za-z0-9._$\#\(\)]+)[ \t]*[:][ \t]*([A-Za-z0-9\'\"._\-\#\(]+)[ \t]*\{/\1/p,property/
+--regex-JavaScript=/var ([A-Za-z0-9._$\#]+)[ \t]*[=][ \t]*([A-Za-z0-9._'"\$\#\[\{]+)[,|;]/\1/v,variable/
+--regex-JavaScript=/([A-Za-z0-9._$\#]+)[ \t]*[=][ \t]*([A-Za-z0-9._'"\$\#]+)extend\(/\1/c,class/
+
+--regex-ruby=/(^|[:;])[ \t]*([A-Z][[:alnum:]_]+) *=/\2/c,class,constant/
+--regex-ruby=/(^|;)[ \t]*(has_many|belongs_to|has_one|has_and_belongs_to_many)\(? *:([[:alnum:]_]+)/\3/f,function,association/
+--regex-ruby=/(^|;)[ \t]*(named_)?scope\(? *:([[:alnum:]_]+)/\3/f,function,named_scope/
+--regex-ruby=/(^|;)[ \t]*expose\(? *:([[:alnum:]_]+)/\2/f,function,exposure/
+--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2/f,function,aasm_event/
+--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2!/f,function,aasm_event/
+--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2?/f,function,aasm_event/
+
+--langdef=markdown
+--langmap=markdown:.md.markdown.mdown.mkd.mkdn
+--regex-markdown=/^#[ \t]+(.*)/\1/h,heading1/
+--regex-markdown=/^##[ \t]+(.*)/\1/h,heading2/
+--regex-markdown=/^###[ \t]+(.*)/\1/h,heading3/
+
+--langdef=coffee
+--langmap=coffee:.coffee
+--regex-coffee=/^[ \t]*([A-Za-z.]+)[ \t]+=.*->.*$/\1/f,function/
+--regex-coffee=/^[ \t]*([A-Za-z.]+)[ \t]+=[^->\n]*$/\1/v,variable/
diff --git a/.dircolors b/.dircolors
new file mode 100644
index 0000000..2e95ad9
--- /dev/null
+++ b/.dircolors
@@ -0,0 +1,218 @@
+# Configuration file for dircolors, a utility to help you set the
+# LS_COLORS environment variable used by GNU ls with the --color option.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copying and distribution of this file, with or without modification,
+# are permitted provided the copyright notice and this notice are preserved.
+# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
+# slackware version of dircolors) are recognized but ignored.
+# Below, there should be one TERM entry for each termtype that is colorizable
+TERM Eterm
+TERM ansi
+TERM color-xterm
+TERM con132x25
+TERM con132x30
+TERM con132x43
+TERM con132x60
+TERM con80x25
+TERM con80x28
+TERM con80x30
+TERM con80x43
+TERM con80x50
+TERM con80x60
+TERM cons25
+TERM console
+TERM cygwin
+TERM dtterm
+TERM eterm-color
+TERM gnome
+TERM gnome-256color
+TERM hurd
+TERM jfbterm
+TERM konsole
+TERM kterm
+TERM linux
+TERM linux-c
+TERM mach-color
+TERM mach-gnu-color
+TERM mlterm
+TERM putty
+TERM putty-256color
+TERM rxvt
+TERM rxvt-256color
+TERM rxvt-cygwin
+TERM rxvt-cygwin-native
+TERM rxvt-unicode
+TERM rxvt-unicode-256color
+TERM rxvt-unicode256
+TERM screen
+TERM screen-256color
+TERM screen-256color-bce
+TERM screen-bce
+TERM screen-w
+TERM screen.Eterm
+TERM screen.rxvt
+TERM screen.linux
+TERM st
+TERM st-256color
+TERM terminator
+TERM vt100
+TERM xterm
+TERM xterm-16color
+TERM xterm-256color
+TERM xterm-88color
+TERM xterm-color
+TERM xterm-debian
+TERM xterm-termite
+# Below are the color init strings for the basic file types. A color init
+# string consists of one or more of the following numeric codes:
+# Attribute codes:
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
+# Text color codes:
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
+# Background color codes:
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
+#NORMAL 00 # no color code at all
+#FILE 00 # regular file: use no color at all
+RESET 0 # reset to "normal" color
+DIR 01;34 # directory
+LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
+ # numerical value, the color is as for the file pointed to.)
+MULTIHARDLINK 00 # regular file with more than one link
+FIFO 40;33 # pipe
+SOCK 01;35 # socket
+DOOR 01;35 # door
+BLK 40;33;01 # block device driver
+CHR 40;33;01 # character device driver
+ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
+SETUID 37;41 # file that is setuid (u+s)
+SETGID 30;43 # file that is setgid (g+s)
+CAPABILITY 30;41 # file with capability
+STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
+OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
+STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
+# This is for files with execute permission:
+EXEC 01;32
+# List any file extensions like '.gz' or '.tar' that you would like ls
+# to colorize below. Put the extension, a space, and the color init string.
+# (and any comments you want to add after a '#')
+# If you use DOS-style suffixes, you may want to uncomment the following:
+#.cmd 01;32 # executables (bright green)
+#.exe 01;32
+#.com 01;32
+#.btm 01;32
+#.bat 01;32
+# Or if you want to colorize scripts even if they do not have the
+# executable bit actually set.
+#.sh 01;32
+#.csh 01;32
+ # archives or compressed (bright red)
+.tar 01;31
+.tgz 01;31
+.arc 01;31
+.arj 01;31
+.taz 01;31
+.lha 01;31
+.lz4 01;31
+.lzh 01;31
+.lzma 01;31
+.tlz 01;31
+.txz 01;31
+.tzo 01;31
+.t7z 01;31
+.zip 01;31
+.z 01;31
+.Z 01;31
+.dz 01;31
+.gz 01;31
+.lrz 01;31
+.lz 01;31
+.lzo 01;31
+.xz 01;31
+.bz2 01;31
+.bz 01;31
+.tbz 01;31
+.tbz2 01;31
+.tz 01;31
+.deb 01;31
+.rpm 01;31
+.jar 01;31
+.war 01;31
+.ear 01;31
+.sar 01;31
+.rar 01;31
+.alz 01;31
+.ace 01;31
+.zoo 01;31
+.cpio 01;31
+.7z 01;31
+.rz 01;31
+.cab 01;31
+# image formats
+.jpg 01;35
+.jpeg 01;35
+.gif 01;35
+.bmp 01;35
+.pbm 01;35
+.pgm 01;35
+.ppm 01;35
+.tga 01;35
+.xbm 01;35
+.xpm 01;35
+.tif 01;35
+.tiff 01;35
+.png 01;35
+.svg 01;35
+.svgz 01;35
+.mng 01;35
+.pcx 01;35
+.mov 01;35
+.mpg 01;35
+.mpeg 01;35
+.m2v 01;35
+.mkv 01;35
+.webm 01;35
+.ogm 01;35
+.mp4 01;35
+.m4v 01;35
+.mp4v 01;35
+.vob 01;35
+.qt 01;35
+.nuv 01;35
+.wmv 01;35
+.asf 01;35
+.rm 01;35
+.rmvb 01;35
+.flc 01;35
+.avi 01;35
+.fli 01;35
+.flv 01;35
+.gl 01;35
+.dl 01;35
+.xcf 01;35
+.xwd 01;35
+.yuv 01;35
+.cgm 01;35
+.emf 01;35
+# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
+.axv 01;35
+.anx 01;35
+.ogv 01;35
+.ogx 01;35
+# audio formats
+.aac 00;36
+.au 00;36
+.flac 00;36
+.m4a 00;36
+.mid 00;36
+.midi 00;36
+.mka 00;36
+.mp3 00;36
+.mpc 00;36
+.ogg 00;36
+.ra 00;36
+.wav 00;36
+# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
+.axa 00;36
+.oga 00;36
+.spx 00;36
+.xspf 00;36
diff --git a/.gitconfig b/.gitconfig
new file mode 100644
index 0000000..3a55d72
--- /dev/null
+++ b/.gitconfig
@@ -0,0 +1,128 @@
+# set your user tokens as environment variables, such as ~/.secrets
+# See the README for examples.
+[color]
+ ui = true
+[color "branch"]
+ current = yellow reverse
+ local = yellow
+ remote = green
+[color "diff"]
+ meta = yellow bold
+ frag = magenta bold
+ old = red
+ new = green
+[alias]
+ # add
+ a = add # add
+ chunkyadd = add --patch # stage commits chunk by chunk
+
+ # via http://blog.apiaxle.com/post/handy-git-tips-to-stop-you-getting-fired/
+ snapshot = !git stash save "snapshot: $(date)" && git stash apply "stash@{0}"
+ snapshots = !git stash list --grep snapshot
+
+ #via http://stackoverflow.com/questions/5188320/how-can-i-get-a-list-of-git-branches-ordered-by-most-recent-commit
+ recent-branches = !git for-each-ref --count=15 --sort=-committerdate refs/heads/ --format='%(refname:short)'
+
+ # branch
+ b = branch -v # branch (verbose)
+
+ # commit
+ c = commit -m # commit with message
+ ca = commit -am # commit all with message
+ ci = commit # commit
+ amend = commit --amend # ammend your last commit
+ ammend = commit --amend # ammend your last commit
+
+ # checkout
+ co = checkout # checkout
+ nb = checkout -b # create and switch to a new branch (mnemonic: "git new branch branchname...")
+
+ # cherry-pick
+ cp = cherry-pick -x # grab a change from a branch
+
+ # diff
+ d = diff # diff unstaged changes
+ dc = diff --cached # diff staged changes
+ last = diff HEAD^ # diff last committed change
+
+ # log
+ l = log --graph --date=short
+ changes = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" --name-status
+ short = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\"
+ simple = log --pretty=format:\" * %s\"
+ shortnocolor = log --pretty=format:\"%h %cr %cn %s\"
+
+ # pull
+ pl = pull # pull
+
+ # push
+ ps = push # push
+
+ # rebase
+ rc = rebase --continue # continue rebase
+ rs = rebase --skip # skip rebase
+
+ # remote
+ r = remote -v # show remotes (verbose)
+
+ # reset
+ unstage = reset HEAD # remove files from index (tracking)
+ uncommit = reset --soft HEAD^ # go back before last commit, with files in uncommitted state
+ filelog = log -u # show changes to a file
+ mt = mergetool # fire up the merge tool
+
+ # stash
+ ss = stash # stash changes
+ sl = stash list # list stashes
+ sa = stash apply # apply stash (restore changes)
+ sd = stash drop # drop stashes (destory changes)
+
+ # status
+ s = status # status
+ st = status # status
+ stat = status # status
+
+ # tag
+ t = tag -n # show tags with <n> lines of each tag message
+
+ # svn helpers
+ svnr = svn rebase
+ svnd = svn dcommit
+ svnl = svn log --oneline --show-commit
+[format]
+ pretty = format:%C(blue)%ad%Creset %C(yellow)%h%C(green)%d%Creset %C(blue)%s %C(magenta) [%an]%Creset
+[mergetool]
+ prompt = false
+[mergetool "mvimdiff"]
+ cmd="mvim -c 'Gdiff' $MERGED" # use fugitive.vim for 3-way merge
+ keepbackup=false
+[merge]
+ summary = true
+ verbosity = 1
+ tool = mvimdiff
+[apply]
+ whitespace = nowarn
+[branch]
+ autosetupmerge = true
+[push]
+ # 'git push' will push the current branch to its tracking branch
+ # the usual default is to push all branches
+ default = tracking
+[core]
+ autocrlf = false
+ editor = vim
+ excludesfile = ~/.yadr/git/gitignore
+[advice]
+ statusHints = false
+[diff]
+ # Git diff will use (i)ndex, (w)ork tree, (c)ommit and (o)bject
+ # instead of a/b/c/d as prefixes for patches
+ mnemonicprefix = true
+ algorithm = patience
+[rerere]
+ # Remember my merges
+ # http://gitfu.wordpress.com/2008/04/20/git-rerere-rereremember-what-you-did-last-time/
+ enabled = true
+[user]
+ email = dave@sleepmap.de
+ name = David Runge
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..39797d3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,378 @@
+# OSX taken from: https://github.com/github/gitignore/blob/master/Global/OSX.gitignore
+# ----------------------------------------------------------------------------------------------
+.DS_Store
+# Thumbnails
+._*
+# Files that might appear on external disk
+.Spotlight-V100
+.Trashes
+
+# Windows taken from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
+# ----------------------------------------------------------------------------------------------
+# Windows image file caches
+Thumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Tags taken from: https://github.com/github/gitignore/blob/master/Global/Tags.gitignore
+# ----------------------------------------------------------------------------------------------
+# Ignore tags created by etags and ctags
+TAGS
+tags
+
+# Vim taken from: https://github.com/github/gitignore/blob/master/Global/vim.gitignore
+# ----------------------------------------------------------------------------------------------
+.*.sw[a-z]
+*.un~
+Session.vim
+
+# SASS
+# ----------------------------------------------------------------------------------------------
+.sass-cache
+
+# Files/folders that appear in my home
+# ----------------------------------------------------------------------------------------------
+Desktop/
+Documents/
+Downloads/
+Mail/
+Music/
+Pictures/
+Videos/
+backup/
+bin/pass2offlineimapc
+build/
+git/
+make/
+ownCloud/
+svn/
+
+.ICEauthority
+.Mathematica/
+.Osmos/
+.Skype/
+.TrueCrypt/
+.Xauthority
+.android/
+.aprc
+.arduino/console
+.arduino/recent.txt
+.armagetronad/
+.audacity-data/
+.avidemux/
+.bash_history
+.bash_login
+.bash_logout
+.bash_profile
+.bashburn_history
+.bashrc
+.benutzerordnung
+.bundle/
+.bzr.log
+.cache/
+.calfrc
+.calendars
+.cddb*
+.cdemu-daemon.log
+.certs/
+.chromium-bsu
+.chromium-bsu-score
+.cmake/
+.config/Cadence/
+.config/EgoSoft/
+.config/Fidra/
+.config/ImageMagick/
+.config/MusE/
+.config/Mumble/
+.config/MusicBrainz/
+.config/QtProject.conf
+.config/Skype/
+.config/SubDownloader/
+.config/SuperCollider/sessions/
+.config/SuperCollider/startup.scd
+.config/Thunar/
+.config/Trolltech.conf
+.config/Trolltech/
+.config/ardour3/ardour.bindings
+.config/ardour3/Ardour_announcements*
+.config/ardour3/recent
+.config/ardour3/sfdb
+.config/ario
+.config/asunder
+.config/aurvote
+.config/autostart/
+.config/autorandr/
+.config/awesome/
+.config/brasero/
+.config/calibre/
+.config/caja/
+.config/chromium*
+.config/comix/
+.config/dconf/
+.config/deluge/
+.config/enchant/
+.config/eog/
+.config/evince/
+.config/evolution/
+.config/gconf/
+.config/gedit/
+.config/geeqie/
+.config/ghb/
+.config/goobox/
+.config/gsmartcontrol/
+.config/gtk-2.0/
+.config/guitarix/
+.config/htop/
+.config/ibus/
+.config/icedtea-web/
+.config/inkscape/
+.config/ipython/
+.config/jack/
+.config/khal/khal.db
+.config/keepnote/
+.config/libaccounts-glib/
+.config/libreoffice/
+.config/lxterminal/
+.config/mate/
+.config/mpd/mpd.db
+.config/mpd/mpd.log
+.config/mpd/mpd.pid
+.config/mpd/mpdstate
+.config/mpd/playlists/
+.config/mpd/sticker.sql
+.config/menus/
+.config/nautilus-actions/
+.config/nautilus/
+.config/octave/
+.config/pavucontrol.ini
+.config/pd-extended/
+.config/pulse/
+.config/pure-data/
+.config/q4wine
+.config/rncbc.org/
+.config/rubyripper/
+.config/smplayer
+.config/sound-juicer/
+.config/synergy-dvzrv.conf
+.config/systemd/
+.config/tint2/
+.config/user-dirs.locale
+.config/vlc/
+.config/xarchiver
+.config/xfce4
+.config/yelp/
+.contacts
+.converseen.conf
+.dbus/
+.dcron.log
+.dingrc
+.dmrc
+.docear/
+.dvdcss/
+.dvdrip*
+.e
+.editrc
+.electrum/
+.elementary/
+.escaped_colors.rb
+.esd_auth
+.envtab
+.fasd
+.fasd-init-bash
+.festival_history
+.fehbg
+.ffado/
+.ffxrc.json
+.filebot/
+.filezilla/
+.fltk/
+.flexlmrc
+.fontconfig/
+.fonts/
+.forward
+.fst/
+.gconf/
+.gem/
+.gemrc
+.gimp-2.8/
+.gnaural/
+.gnome2/
+.gnupg/gpg.conf
+.gnupg/.*
+.gnupg/pubring*
+.gnupg/trustdb*
+.gnupg/private*/
+.gnupg/crls.d/
+.gnupg/random*
+.gnupg/S.*
+.gpg-agent-info
+.grip
+.grip-lame
+.grsync/
+.gspiceui.conf
+.gstreamer-0.10/
+.gtickrc
+.gtk*
+.h264enc/
+.hplip/
+.htoprc
+.hugin
+.hydrogen
+.icedtea/
+.inkscape/
+.irssi/
+.iscan_preference
+.jackdrc
+.java/
+.jdownloader/
+.jsampler/
+.kde4/
+.keychain/
+.kicad
+.lesshst
+.lfm_history
+.linphone-history*
+.lives
+.lives-dir/
+.log
+.local/share/.converted-launchers
+.local/share/Psychonauts/
+.local/share/Steam/
+.local/share/SuperCollider*
+.local/share/applications/
+.local/share/birdie/
+.local/share/comix/
+.local/share/data/
+.local/share/desktop-directories
+.local/share/fontconfig/
+.local/share/gegl-0.1/
+.local/share/gegl-0.2/
+.local/share/goobox/
+.local/share/gsettings-data-convert
+.local/share/mateconf-gsettings-data-convert
+.local/share/gtg/
+.local/share/gvfs-metadata/
+.local/share/icc/
+.local/share/icons/
+.local/share/mc/
+.local/share/mime/
+.local/share/recently-used.xbel
+.local/share/spacepiratesandzombies/
+.local/share/systemd/
+.local/share/Trash/
+.local/share/telepathy/
+.local/share/vlc/
+.local/share/webkit/
+.local/share/desktop-directoriey.log/
+.lyrics/
+.macromedia/
+.magick/
+.maple/
+.mateconfd/
+.matlab/
+.minecraft/
+.minetest
+.mozilla/firefox/Crash Reports/
+.mozilla/firefox/dvzrv
+.mozilla/firefox/dvzrv-backup/
+.mpdscribble/
+.mplayer/
+.muttator/
+.mutt/gpg-auto.rc
+.mutt/mailboxes.rc
+.mysql*
+.ncftp/
+.neocomplcache/
+.neocomplete/
+.neocon/
+.nicotine/
+.nvidia-settings-rc
+.nviminfo
+.nvimlog
+.octave_hist
+.offlineimap/
+.openra
+.p7zip
+.parallel/
+.password-store/
+.pdextended
+.pdfedit/
+.pdirc
+.pip/
+.pki/
+.profile
+.processing/console
+.processing/recent.txt
+.pryrc
+.pulse
+.pulse-cookie
+.purple/
+.python-eggs/
+.q3a
+.qucs
+.qt
+.rdebugrc
+.recently-used
+.revenge_of_the_titans/
+.revenge_of_the_titans_1.80/
+.rubberband*
+.rvm/
+.sane/
+.scummvm/
+.scummvmrc
+.scvim/
+.secrets
+.skypecallrecorder.rc
+.snes9x/
+.solfege/
+.solfegerc
+.spumux/
+.ssh/
+.steam/
+.steampath
+.steampid
+.subversion/
+.synfig
+.task/
+.taskrc
+.taxbird/
+.tex2pdf.log
+.texlive/
+.thumbnails/
+.thunderbird/
+.tmux/
+.tor-browser-en
+.trousers/
+.ts3client/
+.tuxguitar-1.2/
+.unescaped_colors.rb
+.unknown-horizons/
+.vdirsyncer/status
+.vim/backups/
+.vim/sessions/
+.vim/vim-addons/
+.vim/.*
+.vim/yankring*
+.vimperator/
+.vimpressrc
+.viminfo
+.viminfo.tmp
+.vmoviedb/
+.wine
+.wireshark/
+.wolf3d/
+.wxcam
+.xine/
+.xournal/
+.xsession
+.xsession-errors
+.xsession-errors.old
+.yankring-history_v2.txt
+.yaourtrc
+.zcompcache/
+.zcompdump
+.zcompdump.zwc
+.zdirs
+.zsh-update
+.zhistory
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..cad61ab
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule ".zprezto"]
+ path = .zprezto
+ url = https://github.com/sorin-ionescu/prezto
+ branch = master
diff --git a/.gnupg/dirmngr.conf b/.gnupg/dirmngr.conf
new file mode 100644
index 0000000..d5a02d9
--- /dev/null
+++ b/.gnupg/dirmngr.conf
@@ -0,0 +1,69 @@
+# dirmngr-conf.skel - Skeleton to create dirmngr.conf.
+# (Note that the first three lines are not copied.)
+#
+# dirmngr.conf - Options for Dirmngr
+# Written in 2015 by The GnuPG Project <https://gnupg.org>
+#
+# To the extent possible under law, the authors have dedicated all
+# copyright and related and neighboring rights to this file to the
+# public domain worldwide. This file is distributed without any
+# warranty. You should have received a copy of the CC0 Public Domain
+# Dedication along with this file. If not, see
+# <http://creativecommons.org/publicdomain/zero/1.0/>.
+#
+#
+# Unless you specify which option file to use (with the command line
+# option "--options filename"), the file ~/.gnupg/dirmngr.conf is used
+# by dirmngr. The file can contain any long options which are valid
+# for Dirmngr. If the first non white space character of a line is a
+# '#', the line is ignored. Empty lines are also ignored. See the
+# dirmngr man page or the manual for a list of options.
+#
+
+# --keyserver URI
+#
+# GPG can send and receive keys to and from a keyserver. These
+# servers can be HKP, Email, or LDAP (if GnuPG is built with LDAP
+# support).
+#
+# Example HKP keyservers:
+# hkp://keys.gnupg.net
+#
+# Example HKP keyserver using a Tor hidden service
+# hkp://dyh2j3qyrirn43iw.onion
+#
+# Example HKPS keyservers (see --hkp-cacert below):
+# hkps://hkps.pool.sks-keyservers.net
+#
+# Example LDAP keyservers:
+# ldap://pgp.surfnet.nl:11370
+#
+# Regular URL syntax applies, and you can set an alternate port
+# through the usual method:
+# hkp://keyserver.example.net:22742
+#
+# Most users just set the name and type of their preferred keyserver.
+# Note that most servers (with the notable exception of
+# ldap://keyserver.pgp.com) synchronize changes with each other. Note
+# also that a single server name may actually point to multiple
+# servers via DNS round-robin. hkp://keys.gnupg.net is an example of
+# such a "server", which spreads the load over a number of physical
+# servers.
+#
+# If exactly two keyservers are configured and only one is a Tor hidden
+# service, Dirmngr selects the keyserver to use depending on whether
+# Tor is locally running or not (on a per session base).
+
+keyserver hkp://dyh2j3qyrirn43iw.onion
+keyserver hkp://keys.gnupg.net
+
+# --hkp-cacert FILENAME
+#
+# For the "hkps" scheme (keyserver access over TLS), Dirmngr needs to
+# know the root certificates for verification of the TLS certificates
+# used for the connection. Enter the full name of a file with the
+# root certificates here. If that file is in PEM format a ".pem"
+# suffix is expected. This option may be given multiple times to add
+# more root certificates. Tilde expansion is supported.
+
+#hkp-cacert /path/to/CA/sks-keyservers.netCA.pem
diff --git a/.gnupg/gpg-agent.conf b/.gnupg/gpg-agent.conf
new file mode 100644
index 0000000..c478fc2
--- /dev/null
+++ b/.gnupg/gpg-agent.conf
@@ -0,0 +1,8 @@
+# Sets the default pinentry program to use the ncurses interface
+pinentry-program /usr/bin/pinentry-curses
+
+# allow clients to use the loopback pinentry features
+allow-loopback-pinentry
+
+# set the time a chace entry is valid to 20minutes
+default-cache-ttl 1200
diff --git a/.inputrc b/.inputrc
new file mode 100644
index 0000000..b2cc9d6
--- /dev/null
+++ b/.inputrc
@@ -0,0 +1 @@
+set editing-mode vi
diff --git a/.lfmrc b/.lfmrc
new file mode 100644
index 0000000..2d43594
--- /dev/null
+++ b/.lfmrc
@@ -0,0 +1,111 @@
+########## lfm - Last File Manager Configuration File ##########
+
+[Programs]
+audio: mplayer
+ebook: FBReader
+editor: vi
+graphics: gthumb
+pager: pyview
+pdf: evince
+shell: bash
+video: mplayer
+web: firefox
+
+[File Types]
+audio: ogg, flac, mp3, wav, au, midi
+ebook: epub, chm, mobi, prc, azw, lit, fb2
+graphics: png, jpeg, jpg, gif, tiff, tif, xpm, svg
+pdf: pdf, ps
+video: mpeg, mpg, avi, asf, ogv, flv, mkv
+web: html, htm
+
+[Bookmarks]
+0: /
+1: /
+2: /
+3: /
+4: /
+5: /
+6: /
+7: /
+8: /
+9: /
+
+[PowerCLI commands]
+0: mv "$f" "{$f.replace('', '')}"
+1: pyview "$f" %
+2: find "$d" -name "*" -print0 | xargs --null grep -EHcni "TODO|WARNING|FIXME|BUG"
+3: find "$d" -name "*" -print0 | xargs --null grep -EHcni "TODO|WARNING|FIXME|BUG" >output.txt &
+4: cp $s "$o"
+5:
+6:
+7:
+8:
+9:
+
+[Colors]
+archive_files: yellow black
+buttons: yellow red
+cli_prompt: blue black
+cli_text: white black
+current_file: blue cyan
+current_file_otherpane: black white
+current_selected_file: yellow cyan
+current_selected_file_otherpane: yellow white
+data_files: magenta black
+directories: green black
+document_files: blue black
+error_messages1: white red
+error_messages2: black red
+exe_files: red black
+file_info: red black
+files: white black
+graphics_files: magenta black
+help: green black
+media_files: blue black
+messages: magenta cyan
+selected_file: yellow black
+source_files: cyan black
+tabs: white blue
+temp_files: white black
+title: yellow blue
+
+[Options]
+# automatic_file_encoding_conversion: never = -1, ask = 0, always = 1
+# sort: None = 0, byName = 1, byName_rev = 2, bySize = 3,
+# bySize_rev = 4, byDate = 5, byDate_rev = 6
+automatic_file_encoding_conversion: 0
+color_files: 1
+detach_terminal_at_exec: 1
+grep_ignorecase: 1
+grep_regex: 1
+manage_otherpane: 0
+num_panes: 2
+rebuild_vfs: 0
+save_conf_at_exit: 1
+save_history_at_exit: 1
+show_dotfiles: 1
+show_output_after_exec: 1
+sort: 1
+sort_mix_cases: 1
+sort_mix_dirs: 0
+
+[Misc]
+# diff_type: context, unified, ndiff
+backup_extension: .bak
+diff_type: unified
+
+[Confirmations]
+ask_rebuild_vfs: 1
+delete: 1
+overwrite: 1
+quit: 1
+
+[Files]
+archive_files: .gz, .bz2, .xz, .tar, .tgz, .Z, .zip, .rar, .7z, .arj, .cab, .lzh, .lha, .zoo, .arc, .ark, .rpm, .deb
+data_files: .dta, .nc, .dbf, .mdn, .db, .mdb, .dat, .fox, .dbx, .mdx, .sql, .mssql, .msql, .ssql, .pgsql, .cdx, .dbi, .sqlite
+document_files: .txt, .text, .rtf, .odt, .odc, .odp, .abw, .gnumeric, .sxw, .sxc, .sxp, .sdw, .sdc, .sdp, .ps, .pdf, .djvu, .dvi, .bib, .tex, .epub, .chm, .prc, .mobi, .azw, .lit, .imp.fb2, .xml, .xsd, .xslt, .sgml, .dtd, .html, .shtml, .htm, .css, .mail, .msg, .letter, .ics, .vcs, .vcard, .lsm, .po, .man, .1, .info, .doc, .xls, .ppt, .pps, .docx, .xlsx, .pptx
+graphics_files: .jpg, .jpeg, .gif, .png, .tif, .tiff, .pcx, .bmp, .xpm, .xbm, .eps, .pic, .rle, .ico, .wmf, .omf, .ai, .cdr, .xcf, .dwb, .dwg, .dxf, .svg, .dia
+media_files: .mp2, .mp3, .mpg, .ogg, .flac, .mpeg, .wav, .avi, .asf, .mov, .mol, .mpl, .xm, .med, .mid, .midi, .umx, .wma, .acc, .wmv, .swf, .flv, .ogv, .mkv
+source_files: .c, .h, .cc, .hh, .cpp, .hpp, .py, .pyw, .lua, .pl, .pm, .inc, .rb, .asm, .pas, .f, .f90, .pov, .m, .pas, .cgi, .php, .phps, .tcl, .tk, .js, .java, .jav, .jasm, .vala, .glade, .ui, .diff, .patch, .sh, .bash, .awk, .m4, .el, .st, .mak, .sl, .ada, .caml, .ml, .mli, .mly, .mll, .mlp, .prg
+temp_files: .tmp, .$$$, ~, .bak
diff --git a/.linphonerc b/.linphonerc
new file mode 100644
index 0000000..da3467e
--- /dev/null
+++ b/.linphonerc
@@ -0,0 +1,152 @@
+[sip]
+media_encryption=none
+default_proxy=-1
+multi_transport_migration_done=1
+guess_hostname=1
+contact="" <sip:dave@46.246.38.243:5060>
+inc_timeout=30
+in_call_timeout=0
+delayed_timeout=4
+use_ipv6=0
+register_only_when_network_is_up=1
+register_only_when_upnp_is_ok=1
+
+[misc]
+uuid=63830b54-7f5b-4f3a-a271-c1b84bdd2a0d
+
+[video]
+capture=1
+display=1
+automatically_initiate=1
+automatically_accept=1
+show_local=0
+self_view=0
+device=V4L2: /dev/video0
+size=cif
+
+[net]
+download_bw=0
+upload_bw=0
+adaptive_rate_control=1
+mtu=1300
+
+[GtkUi]
+videoselfview=0
+advanced_ui=1
+
+[sound]
+playback_dev_id=ALSA: default device
+ringer_dev_id=ALSA: default device
+capture_dev_id=ALSA: default device
+echocancellation=1
+remote_ring=/usr/share/sounds/linphone/ringback.wav
+playback_gain_db=0.000000
+mic_gain_db=0.000000
+
+[rtp]
+audio_rtp_port=7078
+video_rtp_port=9078
+audio_jitt_comp=60
+video_jitt_comp=60
+nortp_timeout=30
+audio_adaptive_jitt_comp_enabled=1
+video_adaptive_jitt_comp_enabled=1
+
+[audio_codec_0]
+mime=opus
+rate=48000
+channels=1
+enabled=1
+
+[audio_codec_1]
+mime=speex
+rate=16000
+channels=1
+enabled=1
+
+[audio_codec_2]
+mime=speex
+rate=8000
+channels=1
+enabled=1
+
+[audio_codec_3]
+mime=PCMU
+rate=8000
+channels=1
+enabled=1
+
+[audio_codec_4]
+mime=PCMA
+rate=8000
+channels=1
+enabled=1
+
+[audio_codec_5]
+mime=G729
+rate=8000
+channels=1
+enabled=0
+
+[audio_codec_6]
+mime=speex
+rate=32000
+channels=1
+enabled=0
+
+[audio_codec_7]
+mime=L16
+rate=44100
+channels=1
+enabled=0
+
+[audio_codec_8]
+mime=L16
+rate=44100
+channels=2
+enabled=0
+
+[audio_codec_9]
+mime=G722
+rate=8000
+channels=1
+enabled=0
+
+[video_codec_0]
+mime=VP8
+rate=90000
+enabled=1
+
+[video_codec_1]
+mime=MP4V-ES
+rate=90000
+enabled=1
+recv_fmtp=profile-level-id=3
+
+[video_codec_2]
+mime=H263-1998
+rate=90000
+enabled=0
+recv_fmtp=CIF=1;QCIF=1
+
+[video_codec_3]
+mime=theora
+rate=90000
+enabled=0
+
+[video_codec_4]
+mime=x-snow
+rate=90000
+enabled=0
+
+[video_codec_5]
+mime=H263
+rate=90000
+enabled=0
+
+[audio_codec_10]
+mime=GSM
+rate=8000
+channels=1
+enabled=0
+
diff --git a/.local/share/applications/incognichrome.desktop b/.local/share/applications/incognichrome.desktop
new file mode 100644
index 0000000..a8b4a09
--- /dev/null
+++ b/.local/share/applications/incognichrome.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Terminal=false
+Exec=chromium -incognito
+Name=Incognichrome
+Icon=chromium
+Categories=GTK;Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
diff --git a/.local/share/applications/nautilus.desktop b/.local/share/applications/nautilus.desktop
new file mode 100644
index 0000000..3c8477d
--- /dev/null
+++ b/.local/share/applications/nautilus.desktop
@@ -0,0 +1,205 @@
+[Desktop Entry]
+Name=Files
+Name[af]=Lêers
+Name[an]=Fichers
+Name[ar]=الملفات
+Name[as]=ফাইলসমূহ
+Name[ast]=Ficheros
+Name[be]=Файлы
+Name[bg]=Файлове
+Name[bn]=ফাইল
+Name[ca]=Fitxers
+Name[ca@valencia]=Fitxers
+Name[crh]=Dosyeler
+Name[cs]=Soubory
+Name[da]=Filer
+Name[de]=Dateien
+Name[el]=Αρχεία
+Name[en_CA]=Files
+Name[en_GB]=Files
+Name[eo]=Dosieroj
+Name[es]=Archivos
+Name[et]=Failid
+Name[eu]=Fitxategiak
+Name[fa]=پرونده‌ها
+Name[fi]=Tiedostot
+Name[fr]=Fichiers
+Name[ga]=Comhaid
+Name[gl]=Ficheiros
+Name[gu]=ફાઇલો
+Name[he]=קבצים
+Name[hi]=फ़ाइल
+Name[hu]=Fájlok
+Name[id]=Berkas
+Name[it]=File
+Name[ja]=ファイル
+Name[kk]=Файлдар
+Name[kn]=ಕಡತಗಳು
+Name[ko]=파일
+Name[ky]=Файлдар
+Name[lt]=Failai
+Name[lv]=Datnes
+Name[mk]=Датотеки
+Name[ml]=ഫയലുകള്‍
+Name[mr]=फाइल्स्
+Name[nb]=Filer
+Name[nl]=Bestanden
+Name[nn]=Filer
+Name[or]=ଫାଇଲଗୁଡିକ
+Name[pa]=ਫਾਇਲਾਂ
+Name[pl]=Pliki
+Name[pt]=Ficheiros
+Name[pt_BR]=Arquivos
+Name[ro]=Fișiere
+Name[ru]=Nautilus
+Name[sk]=Súbory
+Name[sl]=Datoteke
+Name[sr]=Датотеке
+Name[sr@latin]=Datoteke
+Name[sv]=Filer
+Name[ta]=கோப்புகள்
+Name[te]=దస్త్రాలు
+Name[tg]=Файлҳо
+Name[th]=แฟ้ม
+Name[tr]=Dosyalar
+Name[ug]=ھۆججەتلەر
+Name[uk]=Файли
+Name[vi]=Tập tin
+Name[zh_CN]=文件
+Name[zh_HK]=檔案
+Name[zh_TW]=檔案
+Comment=Access and organize files
+Comment[an]=Accedir a os fichers y organizar-los
+Comment[ar]=نظم الملفات وصِل إليها
+Comment[as]=অভিগম কৰক আৰু ফাইলসমূহ আয়োজিত কৰক
+Comment[ast]=Acceder a los ficheros y organizalos
+Comment[be]=Доступ і кіраванне файламі
+Comment[bg]=Достъп и управление на файлове
+Comment[bn]=ফাইলে ব্যবাহর এবং সাজানো
+Comment[ca]=Organitzeu i accediu a fitxers
+Comment[ca@valencia]=Organitzeu i accediu a fitxers
+Comment[crh]=Dosyelerge iriş ve olarnı tertiple
+Comment[cs]=Přístup k souborům a jejich správa
+Comment[da]=Tilgå og organisér filer
+Comment[de]=Auf Dateien zugreifen und diese organisieren
+Comment[el]=Προσπέλαση και οργάνωση αρχείων
+Comment[en_CA]=Access and organize files
+Comment[en_GB]=Access and organise files
+Comment[eo]=Atingi kaj organizi dosierojn
+Comment[es]=Acceder a los archivos y organizarlos
+Comment[et]=Ligipääs failidele ning failipuu korrastamine
+Comment[eu]=Atzitu eta antolatu fitxategiak
+Comment[fa]=دسترسی و سازماندهی پرونده‌ها
+Comment[fi]=Käsittele ja järjestä tiedostoja
+Comment[fr]=Accéder aux fichiers et les organiser
+Comment[ga]=Déan rochtain ar chomhaid agus eagraigh iad
+Comment[gl]=Acceda e organice ficheiros
+Comment[gu]=ફાઇલોને વાપરો અને સંચાલિત કરો
+Comment[he]=גישה לקבצים וארגונם
+Comment[hi]=फ़ाइलों को व्यवस्थित और पहुँच प्राप्त करें
+Comment[hu]=Fájlok elérése és rendszerezése
+Comment[id]=Mengakses dan mengelola berkas
+Comment[it]=Accede ai file e li organizza
+Comment[ja]=ファイルの操作や整理をします
+Comment[kk]=Файлдарға қатынау және реттеу
+Comment[kn]=ಕಡತಗಳನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಿ ಹಾಗು ವ್ಯವಸ್ಥಿತವಾಗಿ ಜೋಡಿಸಿ
+Comment[ko]=파일 조작 및 정리
+Comment[lt]=Atverti ir tvarkyti failus
+Comment[lv]=Piekļūt un organizēt datnes
+Comment[mk]=Пристапувајте и организирајте датотеки
+Comment[ml]=ഫയലുകള്‍ ലഭ്യമാക്കി ക്രമത്തിലാക്കുക
+Comment[mr]=फाइल्स्ला प्रवेश द्वया व संघटित करा
+Comment[nb]=Aksesser og organiser filer
+Comment[nl]=Bestanden gebruiken en organiseren
+Comment[nn]=Aksesser og organiser filer
+Comment[or]=ଫାଇଲମାନଙ୍କୁ ଅଭିଗମ କରନ୍ତୁ ଏବଂ ସଙ୍ଗଠନ କରନ୍ତୁ
+Comment[pa]=ਫਾਇਲਾਂ ਦੀ ਵਰਤੋਂ ਤੇ ਪਰਬੰਧ
+Comment[pl]=Organizowanie plików
+Comment[pt]=Aceder e organizar ficheiros
+Comment[pt_BR]=Acesse e organize arquivos
+Comment[ro]=Accesați și organizați fișiere
+Comment[ru]=Управление файлами
+Comment[sk]=Prístupuje k súborom a organizuje ich
+Comment[sl]=Dostop in razvrščanje datotek
+Comment[sr]=Приступите датотекама и организујте их
+Comment[sr@latin]=Pristupite datotekama i organizujte ih
+Comment[sv]=Kom åt och organisera filer
+Comment[ta]=கோப்புகளை அணுகு மற்றும் ஒழுங்கு படுத்து
+Comment[te]=దస్త్రాలను నిర్వహించండి మరియు ప్రాప్తించండి
+Comment[tg]=Кушодан ва мураттабсозии файлҳо
+Comment[th]=เข้าถึงและจัดระเบียบแฟ้ม
+Comment[tr]=Dosyalara erişin ve düzenleyin
+Comment[ug]=ھۆججەتلەرنى تەشكىللەش ۋە زىيارەت
+Comment[uk]=Доступ до файлів
+Comment[vi]=Truy cập và tổ chức tập tin
+Comment[zh_CN]=访问和组织文件
+Comment[zh_HK]=存取與組織檔案
+Comment[zh_TW]=存取與組織檔案
+Keywords=folder;manager;explore;disk;filesystem;
+Keywords[af]=folder;manager;explore;disk;filesystem;gids;bestuurder;ontdek;skyf;lêerstelsel;leer;
+Keywords[ar]=مجلد;مدير;ملفات;قرص;تصفح;
+Keywords[as]=ফোল্ডাৰ;ব্যৱস্থাপক;অন্বেষণ;ডিস্ক;ফাইলচিস্টেম;
+Keywords[be]=папка;кіраўнік;прагляд;дыск;файлавая сістэма;
+Keywords[ca]=carpeta;gestor;explora;disc;sistema de fitxers;
+Keywords[ca@valencia]=carpeta;gestor;explora;disc;sistema de fitxers;
+Keywords[crh]=cilbent;idareci;araştır;disk;dosyesistemi;
+Keywords[cs]=složka;správce;správa;prohlížení;procházení;disk;souborový systém;systém souborů;
+Keywords[da]=mappe;håndtering;udforsk;gennemse;disk;filsystem;
+Keywords[de]=Ordner;Verwaltung;Laufwerk;Festplatte;Dateisystem;Dateien;
+Keywords[el]=φάκελος;διαχειριστής;εξερεύνηση;δίσκος;σύστημα αρχείων;
+Keywords[en_GB]=folder;manager;explore;disk;filesystem;
+Keywords[eo]=dosierujo;administrilo;foliumi;esplori;disko;dosiersistemo;
+Keywords[es]=carpeta;gestor;explorar;disco;sistema de archivos;
+Keywords[et]=kaust;kataloog;haldur;haldus;sirvija;sirvimine;ketas;kõvaketas;failisüsteem;
+Keywords[eu]=karpeta;kudeatzailea;arakatu;diskoa;fitxategi-sistema;
+Keywords[fa]=پوشه;مدیر;پویش;دیسک;سیستم‌پرونده;folder;manager;explore;disk;filesystem;
+Keywords[fi]=folder;manager;explore;disk;filesystem;kansio;tiedostoselain;levy;tiedostojärjestelmä;
+Keywords[fr]=dossier;gestionnaire;explorer;disque;système de fichiers;
+Keywords[gl]=cartafol;xestor;explorar;disco;sistema de ficheiros;
+Keywords[gu]=ફોલ્ડર;સંચાલક;સંશોધન;ડિસ્ક;ફાઇલસિસ્ટમ;
+Keywords[he]=תיקייה;מנהל;עיון;סיור;כונן;מערכת קבצים;
+Keywords[hi]=folder;manager;explore;disk;filesystem;
+Keywords[hu]=mappa;könyvtár;kezelés;kezelő;intéző;lemez;fájlrendszer;commander;
+Keywords[id]=folder;manager;explore;disk;filesystem;pengelola;peramban;sistem;berkas;
+Keywords[it]=cartella;gestore;esplora;disco;file;file system;
+Keywords[ja]=folder;manager;explore;disk;filesystem;フォルダー;マネージャー;エクスプローラー;ディスク;ファイルシステム;
+Keywords[kk]=бума;басқарушы;шолу;диск;файлдық жүйе;
+Keywords[kn]=ಕಡತಕೋಶ;ವ್ಯವಸ್ಥಾಪಕ;ಹುಡುಕು;ಡಿಸ್ಕ್‍;ಕಡತವ್ಯವಸ್ಥೆ;
+Keywords[ko]=folder;폴더;manager;관리;explore;찾아보기;disk;디스크;filesystem;파일;시스템;
+Keywords[lt]=aplankas;naršyklė;naršyti;diskas;failų sistema;
+Keywords[lv]=mape;pārvaldnieks;pārlūkot;disks;datņu sistēma;datne;
+Keywords[ml]=folder;manager;explore;disk;filesystem;
+Keywords[mr]=फोल्डर;मॅनेजर;एक्सप्लोर;डिस्क;फाइलसिस्टम;
+Keywords[nb]=mappe;håndterer;utforsk;disk;filsystem;
+Keywords[nl]=folder;manager;explore;disk;filesystem;map;beheer;verkenner;schijf;bestandssysteem;
+Keywords[or]=ଫୋଲଡର;ପରିଚାଳକ;ଅନ୍ୱେଷଣ;ଡିସ୍କ;ଫାଇଲତନ୍ତ୍ର;
+Keywords[pa]=ਫੋਲਡਰ;ਮੈਨੇਜਰ;explore;ਡਿਸਕ;ਫਾਇਲ-ਸਿਸਟਮ;
+Keywords[pl]=katalog;folder;menedżer;menadżer;manadżer;manedżer;manager;eksploruj;dysk;system plików;
+Keywords[pt]=pasta;gestor;explorar;disco;sistema;ficheiros;
+Keywords[pt_BR]=pasta;gerenciador;explorar;disco;sistema de arquivos;
+Keywords[ru]=папка;менеджер;обзор;диск;файловая система;
+Keywords[sk]=priečinok;správca;prehliadať;disk;systém súborov;
+Keywords[sl]=mapa;upravljalnik;datoteke;raziskovalec;datotečni sistem;disk
+Keywords[sr]=фасцикла;датотека;управник;истражи;диск;систем датотека;
+Keywords[sr@latin]=fascikla;datoteka;upravnik;istraži;disk;sistem datoteka;
+Keywords[ta]=அடைவு;மேலாளர்;ஆராய்வு;வட்டு;கோப்புமுறைமை;
+Keywords[te]=సంచయం;నిర్వాహకం;అన్వేషించండి;డిస్కు;దస్త్రవ్యవస్థ;
+Keywords[tg]=ҷузвдон;мудир;тамошо;диск;системаи файлӣ;
+Keywords[ug]=folder;manager;explore;disk;filesystem;قىسقۇچ;باشقۇرغۇ;دىسكا;ھۆججەت سىستېمىسى;
+Keywords[uk]=тека;менеджер;папка;диск;файл;
+Keywords[vi]=folder;thư;mục;thu;muc;;manager;quản;lý;quan;lý;;explore;khám;phá;kham;pha;;disk;đĩa;dia;;filesystem;hệ;thống;tập;tin;he;thong;tap;tin;
+Keywords[zh_CN]=目录;文件夹;管理;浏览;磁盘;硬盘;文件系统;folder;manager;explore;disk;filesystem;
+Keywords[zh_HK]=folder;manager;explore;disk;filesystem;資料夾;管理程式;磁碟;檔案系統;
+Keywords[zh_TW]=folder;manager;explore;disk;filesystem;資料夾;管理程式;磁碟;檔案系統;
+Exec=nautilus --new-window %U
+Icon=system-file-manager
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=GNOME;GTK;Utility;Core;FileManager;
+MimeType=inode/directory;application/x-gnome-saved-search;
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=nautilus
+X-GNOME-Bugzilla-Component=general
+X-GNOME-Bugzilla-Version=3.10.1
+X-GNOME-UsesNotifications=true
diff --git a/.local/share/applications/pd.desktop b/.local/share/applications/pd.desktop
new file mode 100644
index 0000000..4201621
--- /dev/null
+++ b/.local/share/applications/pd.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Terminal=false
+Exec=pd
+Name=PureData
+Icon=pd
+Categories=Audio;AudioVideo;Midi;X-Alsa;X-Jack;GTK;
diff --git a/.local/share/applications/securium.desktop b/.local/share/applications/securium.desktop
new file mode 100644
index 0000000..47c2625
--- /dev/null
+++ b/.local/share/applications/securium.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Terminal=false
+Exec=securium
+Name=Securium
+Icon=chromium
+Categories=GTK;Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
diff --git a/.local/share/applications/systemadm.desktop b/.local/share/applications/systemadm.desktop
new file mode 100644
index 0000000..a724455
--- /dev/null
+++ b/.local/share/applications/systemadm.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Terminal=false
+Exec=systemadm
+Name=SystemAdm
+Icon=system
+Categories=System;GTK;
diff --git a/.local/share/shotwell b/.local/share/shotwell
new file mode 120000
index 0000000..e497ac3
--- /dev/null
+++ b/.local/share/shotwell
@@ -0,0 +1 @@
+/mnt/photos/shotwell \ No newline at end of file
diff --git a/.mozilla/firefox/profiles.ini b/.mozilla/firefox/profiles.ini
new file mode 100644
index 0000000..68905f0
--- /dev/null
+++ b/.mozilla/firefox/profiles.ini
@@ -0,0 +1,9 @@
+[General]
+StartWithLastProfile=1
+
+[Profile0]
+Name=dvzrv
+IsRelative=1
+Path=dvzrv
+Default=1
+
diff --git a/.msmtprc b/.msmtprc
new file mode 100644
index 0000000..49b7a71
--- /dev/null
+++ b/.msmtprc
@@ -0,0 +1,44 @@
+# Set default values for all following accounts.
+defaults
+auth on
+port 587
+tls on
+protocol smtp
+#logfile ~/.log/msmtp.log
+
+# dave@sleepmap.de
+account sleepmap.de
+host mail.sleepmap.de
+from dave@sleepmap.de
+user dave@sleepmap.de
+passwordeval "pass2msmtp dave@sleepmap.de"
+tls_trust_file ~/.certs/sleepmap.crt
+
+# david.runge@campus.tu-berlin.de
+account tu-berlin.de
+host mail.tu-berlin.de
+from david.runge@campus.tu-berlin.de
+user davezerave
+passwordeval "pass2msmtp davezerave@mail.tu-berlin.de"
+tls_trust_file ~/.certs/tu-berlin.crt
+
+# dave@c-base.org
+account c-base.org
+host c-mail.c-base.org
+from dave@c-base.org
+user dave
+passwordeval "pass2msmtp dave@c-base.org"
+tls_trust_file ~/.certs/c-base.crt
+
+# lac@linuxaudio.org
+account linuxaudio.org
+host linuxaudio.org
+from lac@linuxaudio.org
+user lac
+port 25
+passwordeval "pass2msmtp lac@linuxaudio.org"
+tls_fingerprint 1A:22:57:04:93:C4:4A:EC:B0:18:F8:3C:63:50:2B:C6:9A:5C:76:3A
+
+
+# Set a default account
+account default : sleepmap.de
diff --git a/.mutt/accounts.rc b/.mutt/accounts.rc
new file mode 100644
index 0000000..8e69ba3
--- /dev/null
+++ b/.mutt/accounts.rc
@@ -0,0 +1,13 @@
+# dave@sleepmap.de (default)
+set spoolfile = "+sleepmap.de/INBOX"
+source "~/.mutt/dave@sleepmap.de.rc"
+folder-hook sleepmap.de/* source ~/.mutt/dave@sleepmap.de.rc
+
+# lac@linuxaudio.org
+folder-hook linuxaudio.org/* source ~/.mutt/lac@linuxaudio.org.rc
+
+# david.runge@tu-berlin.de
+folder-hook tu-berlin.de/* source ~/.mutt/david.runge@campus.tu-berlin.de.rc
+
+# dave@c-base.org
+folder-hook c-base.org/* source ~/.mutt/dave@c-base.org.rc
diff --git a/.mutt/attachments.rc b/.mutt/attachments.rc
new file mode 100644
index 0000000..693f174
--- /dev/null
+++ b/.mutt/attachments.rc
@@ -0,0 +1,2 @@
+set mime_forward=yes
+set mime_forward_rest=yes
diff --git a/.mutt/color.rc b/.mutt/color.rc
new file mode 100644
index 0000000..b413dca
--- /dev/null
+++ b/.mutt/color.rc
@@ -0,0 +1,84 @@
+# Colors for items in the index
+color index brightcyan default ~N
+color index brightred default ~O
+color index brightyellow default ~F
+color index black green ~T
+color index brightred default ~D
+mono index bold ~N
+mono index bold ~F
+mono index bold ~T
+mono index bold ~D
+
+# Highlights inside the body of a message.
+
+# URLs
+color body brightgreen default "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*"
+color body brightgreen default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
+mono body bold "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*"
+mono body bold "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
+
+# Email addresses.
+color body brightgreen default "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
+
+# Header
+color header green default "^from:"
+color header green default "^to:"
+color header green default "^cc:"
+color header green default "^date:"
+color header yellow default "^newsgroups:"
+color header yellow default "^reply-to:"
+color header brightcyan default "^subject:"
+color header red default "^x-spam-rule:"
+color header green default "^x-mailer:"
+color header yellow default "^message-id:"
+color header yellow default "^Organization:"
+color header yellow default "^Organisation:"
+color header yellow default "^User-Agent:"
+color header yellow default "^message-id: .*pine"
+color header yellow default "^X-Fnord:"
+color header yellow default "^X-WebTV-Stationery:"
+
+color header red default "^x-spam-rule:"
+color header green default "^x-mailer:"
+color header yellow default "^message-id:"
+color header yellow default "^Organization:"
+color header yellow default "^Organisation:"
+color header yellow default "^User-Agent:"
+color header yellow default "^message-id: .*pine"
+color header yellow default "^X-Fnord:"
+color header yellow default "^X-WebTV-Stationery:"
+color header yellow default "^X-Message-Flag:"
+color header yellow default "^X-Spam-Status:"
+color header yellow default "^X-SpamProbe:"
+color header red default "^X-SpamProbe: SPAM"
+
+# Coloring quoted text - coloring the first 7 levels:
+color quoted cyan default
+color quoted1 yellow default
+color quoted2 red default
+color quoted3 green default
+color quoted4 cyan default
+color quoted5 yellow default
+color quoted6 red default
+color quoted7 green default
+
+# Default color definitions
+#color hdrdefault white green
+color signature brightmagenta default
+color indicator black cyan
+color attachment black green
+color error red default
+color message white default
+color search brightwhite magenta
+color status brightyellow blue
+color tree brightblue default
+color normal white default
+color tilde green default
+color bold brightyellow default
+color underline magenta default
+color markers brightcyan default
+
+# Color definitions when on a mono screen
+mono bold bold
+mono underline underline
+mono indicator reverse
diff --git a/.mutt/dave@c-base.org.rc b/.mutt/dave@c-base.org.rc
new file mode 100644
index 0000000..77921ac
--- /dev/null
+++ b/.mutt/dave@c-base.org.rc
@@ -0,0 +1,17 @@
+set from = "David Runge <dave@c-base.org>"
+set sendmail = "/usr/bin/msmtp -a c-base.org"
+set folder = "~/Mail/c-base.org"
+set spoolfile = "+INBOX"
+set postponed = "+INBOX.Drafts"
+set record = "+INBOX.Sent"
+set signature = "~/.mutt/dave@c-base.org.sig"
+
+color status blue default
+
+macro index D \
+ "<save-message>+INBOX.Trash<enter>" \
+ "move message to the trash"
+
+macro index S \
+ "<save-message>+INBOX.Spam<enter>" \
+ "mark message as spam"
diff --git a/.mutt/dave@c-base.org.sig b/.mutt/dave@c-base.org.sig
new file mode 100644
index 0000000..1e6a3ea
--- /dev/null
+++ b/.mutt/dave@c-base.org.sig
@@ -0,0 +1 @@
+I can feel my mind is going...
diff --git a/.mutt/dave@sleepmap.de.rc b/.mutt/dave@sleepmap.de.rc
new file mode 100644
index 0000000..75c1efb
--- /dev/null
+++ b/.mutt/dave@sleepmap.de.rc
@@ -0,0 +1,18 @@
+set from = "David Runge <dave@sleepmap.de>"
+set sendmail = "/usr/bin/msmtp -a sleepmap.de"
+set folder = "~/Mail/sleepmap.de"
+set spoolfile = "+INBOX"
+set postponed = "+Drafts"
+set record = "+Sent"
+set realname = "David Runge"
+set signature = "~/.mutt/dave@sleepmap.de.sig"
+
+color status green default
+
+macro index D \
+ "<save-message>+Trash<enter>" \
+ "move message to the trash"
+
+macro index S \
+ "<save-message>+Spam<enter>" \
+ "mark message as spam"
diff --git a/.mutt/dave@sleepmap.de.sig b/.mutt/dave@sleepmap.de.sig
new file mode 100644
index 0000000..c8ad85c
--- /dev/null
+++ b/.mutt/dave@sleepmap.de.sig
@@ -0,0 +1,4 @@
+David Runge
+Schreinerstraße 11
+10247 Berlin
+http://sleepmap.de
diff --git a/.mutt/david.runge@campus.tu-berlin.de.rc b/.mutt/david.runge@campus.tu-berlin.de.rc
new file mode 100644
index 0000000..8ea2283
--- /dev/null
+++ b/.mutt/david.runge@campus.tu-berlin.de.rc
@@ -0,0 +1,18 @@
+# Receive options
+set from = "David Runge <david.runge@campus.tu-berlin.de>"
+set sendmail = "/usr/bin/msmtp -a tu-berlin.de"
+set folder = "~/Mail/tu-berlin.de"
+set spoolfile = "+INBOX"
+set postponed = "+Drafts"
+set record = "+Sent"
+set signature = "~/.mutt/david.runge@campus.tu-berlin.de.sig"
+
+color status red default
+
+macro index D \
+ "<save-message>+Trash<enter>" \
+ "move message to the trash"
+
+macro index S \
+ "<save-message>+Spam<enter>" \
+ "mark message as spam"
diff --git a/.mutt/david.runge@campus.tu-berlin.de.sig b/.mutt/david.runge@campus.tu-berlin.de.sig
new file mode 100644
index 0000000..3a5497f
--- /dev/null
+++ b/.mutt/david.runge@campus.tu-berlin.de.sig
@@ -0,0 +1,11 @@
+David Runge
+Elektronisches Studio, Fachgebiet Audiokommunikation
+
+Technische Universität Berlin
+Fakultät I Geistes- und Bildungswissenschaften
+Institut für Sprache und Kommunikation
+Einsteinufer 17c, Sekr. E-N 8, 10587 Berlin
+
+Website: http://www.ak.tu-berlin.de/studio
+E-Mail: studio@ak.tu-berlin.de
+Telefon: +493031422327
diff --git a/.mutt/default.rc b/.mutt/default.rc
new file mode 100644
index 0000000..7d3dfc6
--- /dev/null
+++ b/.mutt/default.rc
@@ -0,0 +1,8 @@
+set editor=`echo \$EDITOR`
+set folder = "~/Mail"
+set mbox_type = Maildir
+set mail_check = 60
+
+set date_format = "%F %T (%Z)"
+set index_format = "%4C %D %Z %-15.15L (%?l?%4l&%4c?) %s"
+set folder_format = "%2C %N %2l %-8.8u %-8.8g %8s %d %f"
diff --git a/.mutt/gpg.rc b/.mutt/gpg.rc
new file mode 100644
index 0000000..002730d
--- /dev/null
+++ b/.mutt/gpg.rc
@@ -0,0 +1,14 @@
+set pgp_good_sign="^gpg: Good signature from "
+set pgp_use_gpg_agent = yes
+set pgp_sign_as = 0xF5A1A949
+set pgp_timeout = 60
+set crypt_use_gpgme = yes
+set crypt_autosign = yes
+set crypt_replyencrypt = yes
+set crypt_replysignencrypted = yes
+
+# add message-hook for non standard-compliant (old) gnupg style messages
+message-hook '!(~g|~G) ~b"^-----BEGIN\ PGP\ (SIGNED\ )?MESSAGE"' "exec check-traditional-pgp"
+
+send-hook . 'reset crypt_autoencrypt'
+source "~/.mutt/gpg-auto.rc"
diff --git a/.mutt/khard.rc b/.mutt/khard.rc
new file mode 100644
index 0000000..1899e79
--- /dev/null
+++ b/.mutt/khard.rc
@@ -0,0 +1,5 @@
+# auto-completing mails when pressing tab in "new mail" dialog using khard address books
+set query_command= "khard email --search '%s'"
+bind editor <Tab> complete-query
+bind editor ^T complete
+
diff --git a/.mutt/lac@linuxaudio.org.rc b/.mutt/lac@linuxaudio.org.rc
new file mode 100644
index 0000000..7e4bb85
--- /dev/null
+++ b/.mutt/lac@linuxaudio.org.rc
@@ -0,0 +1,18 @@
+set from = "David Runge <lac@linuxaudio.org>"
+set sendmail = "/usr/bin/msmtp -a linuxaudio.org"
+set folder = "~/Mail/linuxaudio.org"
+set spoolfile = "+INBOX"
+set postponed = "+Drafts"
+set record = "+Sent"
+set realname = "David Runge"
+set signature = "~/.mutt/lac@linuxaudio.org.sig"
+
+color status green default
+
+macro index D \
+ "<save-message>+Trash<enter>" \
+ "move message to the trash"
+
+macro index S \
+ "<save-message>+Spam<enter>" \
+ "mark message as spam"
diff --git a/.mutt/lac@linuxaudio.org.sig b/.mutt/lac@linuxaudio.org.sig
new file mode 100644
index 0000000..57a5901
--- /dev/null
+++ b/.mutt/lac@linuxaudio.org.sig
@@ -0,0 +1,2 @@
+Linux Audio Conference
+http://lac.linuxaudio.org
diff --git a/.mutt/macros.rc b/.mutt/macros.rc
new file mode 100644
index 0000000..4440dca
--- /dev/null
+++ b/.mutt/macros.rc
@@ -0,0 +1,36 @@
+
+# source folder settings and enter folder
+macro index,pager <f2> '<sync-mailbox><enter-command>source ~/.mutt/dave@sleepmap.de.rc<enter><change-folder>!<enter>'
+macro index,pager <f3> '<sync-mailbox><enter-command>source ~/.mutt/david.runge@campus.tu-berlin.de.rc<enter><change-folder>!<enter>'
+macro index,pager <f4> '<sync-mailbox><enter-command>source ~/.mutt/dave@c-base.org.rc<enter><change-folder>!<enter>'
+
+# adding default download folder
+macro attach W "<save-entry><bol>~/Downloads/<eol>" \
+ "Save to Downloads folder"
+
+# adding e-mail addresses to khard address book
+macro index,pager A \
+ "<pipe-message>khard add-email<return>" \
+ "add the sender email address to khard"
+
+# notmuch-mutt
+macro index <F8> \
+ "<enter-command>set my_old_pipe_decode=\$pipe_decode my_old_wait_key=\$wait_key nopipe_decode nowait_key<enter>\
+ <shell-escape>notmuch-mutt -r --prompt search<enter>\
+ <change-folder-readonly>`echo ${XDG_CACHE_HOME:-$HOME/.cache}/notmuch/mutt/results`<enter>\
+ <enter-command>set pipe_decode=\$my_old_pipe_decode wait_key=\$my_old_wait_key<enter>" \
+ "notmuch: search mail"
+
+macro index <F9> \
+ "<enter-command>set my_old_pipe_decode=\$pipe_decode my_old_wait_key=\$wait_key nopipe_decode nowait_key<enter>\
+ <pipe-message>notmuch-mutt -r thread<enter>\
+ <change-folder-readonly>`echo ${XDG_CACHE_HOME:-$HOME/.cache}/notmuch/mutt/results`<enter>\
+ <enter-command>set pipe_decode=\$my_old_pipe_decode wait_key=\$my_old_wait_key<enter>" \
+ "notmuch: reconstruct thread"
+
+macro index <F6> \
+ "<enter-command>set my_old_pipe_decode=\$pipe_decode my_old_wait_key=\$wait_key nopipe_decode nowait_key<enter>\
+ <pipe-message>notmuch-mutt tag -- -inbox<enter>\
+ <enter-command>set pipe_decode=\$my_old_pipe_decode wait_key=\$my_old_wait_key<enter>" \
+ "notmuch: remove message from inbox"
+
diff --git a/.mutt/muttrc b/.mutt/muttrc
new file mode 100644
index 0000000..f990e46
--- /dev/null
+++ b/.mutt/muttrc
@@ -0,0 +1,32 @@
+# defaults
+source "~/.mutt/default.rc"
+
+# color
+source "~/.mutt/color.rc"
+
+# gnupg
+source "~/.mutt/gpg.rc"
+
+# mailboxes (set by offlineimap)
+source "~/.mutt/mailboxes.rc"
+
+# sorting
+source "~/.mutt/sorting.rc"
+
+# attachments
+source "~/.mutt/attachments.rc"
+
+# khard (contacts)
+source "~/.mutt/khard.rc"
+
+# accounts
+source "~/.mutt/accounts.rc"
+
+# macros
+source "~/.mutt/macros.rc"
+
+# security
+source "~/.mutt/security.rc"
+
+# sidebar
+source "~/.mutt/sidebar.rc"
diff --git a/.mutt/security.rc b/.mutt/security.rc
new file mode 100644
index 0000000..af00478
--- /dev/null
+++ b/.mutt/security.rc
@@ -0,0 +1,2 @@
+# disable enter-command (so password commands won't show up in command history)
+bind generic,alias,attach,browser,editor,index,compose,pager,pgp,postpone ':' noop
diff --git a/.mutt/sidebar.rc b/.mutt/sidebar.rc
new file mode 100644
index 0000000..a5da4d2
--- /dev/null
+++ b/.mutt/sidebar.rc
@@ -0,0 +1,12 @@
+set sidebar_visible = yes
+set sidebar_sort = yes
+set sidebar_width = 30
+
+macro index b '<enter-command>toggle sidebar_visible<enter><refresh>'
+macro pager b '<enter-command>toggle sidebar_visible<enter><redraw-screen>'
+
+# Ctrl-n, Ctrl-p to select next, previous folder.
+# Ctrl-o to open selected folder.
+bind index,pager \CP sidebar-prev
+bind index,pager \CN sidebar-next
+bind index,pager \CO sidebar-open
diff --git a/.mutt/sorting.rc b/.mutt/sorting.rc
new file mode 100644
index 0000000..48827f7
--- /dev/null
+++ b/.mutt/sorting.rc
@@ -0,0 +1,2 @@
+set sort = "threads"
+set sort_aux = "last-date-received"
diff --git a/.ncmpcpp/bindings b/.ncmpcpp/bindings
new file mode 100644
index 0000000..60c47da
--- /dev/null
+++ b/.ncmpcpp/bindings
@@ -0,0 +1,534 @@
+##########################################################
+## this is example bindings configuration file, copy it ##
+## to ~/.ncmpcpp/bindings and set up your preferences ##
+##########################################################
+##
+##### General rules #####
+##
+## 1) Because each action has runtime checks whether it's
+## ok to run it, a few actions can be bound to one key.
+## Actions will be bound in order given in configuration
+## file. When a key is pressed, first action in order
+## will test itself whether it's possible to run it. If
+## test succeeds, action is executed and other actions
+## bound to this key are ignored. If it doesn't, next
+## action in order tests itself etc.
+##
+## 2) It's possible to bind more that one action at once
+## to a key. It can be done using the following syntax:
+##
+## def_key "key"
+## action1
+## action2
+## ...
+##
+## This creates a chain of actions. When such chain is
+## executed, each action in chain is run until the end of
+## chain is reached or one of its actions fails to execute
+## due to its requirements not being met. If multiple actions
+## and/or chains are bound to the same key, they will be
+## consecutively run until one of them gets fully executed.
+##
+## 3) When ncmpcpp starts, bindings configuration file is
+## parsed and then ncmpcpp provides "missing pieces"
+## of default keybindings. If you want to disable some
+## bindings, there is a special action called 'dummy'
+## for that purpose. Eg. if you want to disable ability
+## to crop playlists, you need to put the following
+## into configuration file:
+##
+## def_key "C"
+## dummy
+##
+## After that ncmpcpp will not bind any default action
+## to this key.
+##
+## 4) To let you write simple macros, the following special
+## actions are provided:
+##
+## - push_character "character" - pushes given special
+## character into input queue, so it will be immediately
+## picked by ncmpcpp upon next call to readKey function.
+## Accepted values: mouse, up, down, page_up, page_down,
+## home, end, space, enter, insert, delete, left, right,
+## tab, shift_tab, ctrl_a, ctrl_b, ..., ctrl_z, f1, f2,
+## ..., f12, backspace, backspace_2.
+##
+## - push_characters "string" - pushes given string into
+## input queue.
+##
+## - require_runnable "action" - checks whether given action
+## is runnable and fails if it isn't. This is especially
+## useful when mixed with previous two functions. Consider
+## the following macro definition:
+##
+## def_key "key"
+## push_characters "custom_filter"
+## apply_filter
+##
+## If apply_filter can't be currently run, we end up with
+## sequence of characters in input queue which will be
+## treated just as we typed them. This may lead to unexpected
+## results (in this case 'c' will most likely clear current
+## playlist, 'u' will trigger database update, 's' will stop
+## playback etc.). To prevent such thing from happening, we
+## need to change above definition to this one:
+##
+## def_key "key"
+## require_runnable "apply_filter"
+## push_characters "custom_filter"
+## apply_filter
+##
+## Here, first we test whether apply_filter can be actually run
+## before we stuff characters into input queue, so if condition
+## is not met, whole chain is aborted and we're fine.
+##
+## - require_screen "screen" - checks whether given screen is
+## currently active. accepted values: browser, clock, help,
+## media_library, outputs, playlist, playlist_editor,
+## search_engine, tag_editor, visualizer, last_fm, lyrics,
+## selected_items_adder, server_info, song_info,
+## sort_playlist_dialog, tiny_tag_editor.
+##
+## - run_external_command "command" - runs given command using
+## system() function.
+##
+## 5) In addition to binding to a key, you can also bind actions
+## or chains of actions to a command. If it comes to commands,
+## syntax is very similar to defining keys. Here goes example
+## definition of a command:
+##
+## def_command "quit" [deferred]
+## stop
+## quit
+##
+## If you execute the above command (which can be done by
+## invoking action execute_command, typing 'quit' and pressing
+## enter), ncmpcpp will stop the player and then quit. Note the
+## presence of word 'deferred' enclosed in square brackets. It
+## tells ncmpcpp to wait for confirmation (ie. pressing enter)
+## after you typed quit. Instead of 'deferred', 'immediate'
+## could be used. Then ncmpcpp will not wait for confirmation
+## (enter) and will execute the command the moment it sees it.
+##
+## Note: Both 'backspace' and 'backspace_2' are used because some
+## terminals interpret backspace using keycode of 'backspace'
+## and some the one of 'backspace_2'. You can get away with
+## binding once if all your terminal emulators use the same
+## value.
+##
+## Note: There is a difference between:
+##
+## def_key "key"
+## action1
+##
+## def_key "key"
+## action2
+##
+## and
+##
+## def_key "key"
+## action1
+## action2
+##
+## First one binds two single actions to the same key whilst
+## second one defines a chain of actions. The behavior of
+## these two is different and is described in (1) and (2).
+##
+## Note: Function def_key accepts non-ascii characters.
+##
+##### List of unbound actions #####
+##
+## The following actions are not bound to any key/command:
+##
+## - set_volume
+## - filter_playlist_on_priorities
+##
+#
+#def_key "mouse"
+# mouse_event
+#
+#def_key "up"
+# scroll_up
+#
+#def_key "down"
+# scroll_down
+#
+#def_key "["
+# scroll_up_album
+#
+#def_key "]"
+# scroll_down_album
+#
+#def_key "{"
+# scroll_up_artist
+#
+#def_key "}"
+# scroll_down_artist
+#
+#def_key "page_up"
+# page_up
+#
+#def_key "page_down"
+# page_down
+#
+#def_key "home"
+# move_home
+#
+#def_key "end"
+# move_end
+#
+#def_key "space"
+# press_space
+#
+#def_key "enter"
+# press_enter
+#
+#def_key "delete"
+# delete_playlist_items
+#
+#def_key "delete"
+# delete_stored_playlist
+#
+#def_key "right"
+# next_column
+#
+#def_key "right"
+# slave_screen
+#
+#def_key "right"
+# volume_up
+#
+#def_key "+"
+# volume_up
+#
+#def_key "left"
+# previous_column
+#
+#def_key "left"
+# master_screen
+#
+#def_key "left"
+# volume_down
+#
+#def_key "-"
+# volume_down
+#
+#def_key ":"
+# execute_command
+#
+#def_key "tab"
+# next_screen
+#
+#def_key "shift_tab"
+# previous_screen
+#
+#def_key "f1"
+# show_help
+#
+#def_key "1"
+# show_playlist
+#
+#def_key "2"
+# show_browser
+#
+#def_key "2"
+# change_browse_mode
+#
+#def_key "3"
+# show_search_engine
+#
+#def_key "3"
+# reset_search_engine
+#
+#def_key "4"
+# show_media_library
+#
+#def_key "4"
+# toggle_media_library_columns_mode
+#
+#def_key "5"
+# show_playlist_editor
+#
+#def_key "6"
+# show_tag_editor
+#
+#def_key "7"
+# show_outputs
+#
+#def_key "8"
+# show_visualizer
+#
+#def_key "="
+# show_clock
+#
+#def_key "@"
+# show_server_info
+#
+#def_key "s"
+# stop
+#
+#def_key "p"
+# pause
+#
+#def_key ">"
+# next
+#
+#def_key "<"
+# previous
+#
+#def_key "ctrl_h"
+# jump_to_parent_directory
+#
+#def_key "ctrl_h"
+# replay_song
+#
+#def_key "backspace"
+# jump_to_parent_directory
+#
+#def_key "backspace"
+# replay_song
+#
+#def_key "backspace_2"
+# jump_to_parent_directory
+#
+#def_key "backspace_2"
+# replay_song
+#
+#def_key "f"
+# seek_forward
+#
+#def_key "b"
+# seek_backward
+#
+#def_key "r"
+# toggle_repeat
+#
+#def_key "z"
+# toggle_random
+#
+#def_key "y"
+# save_tag_changes
+#
+#def_key "y"
+# start_searching
+#
+#def_key "y"
+# toggle_single
+#
+#def_key "R"
+# toggle_consume
+#
+#def_key "Y"
+# toggle_replay_gain_mode
+#
+#def_key "t"
+# toggle_space_mode
+#
+#def_key "T"
+# toggle_add_mode
+#
+#def_key "|"
+# toggle_mouse
+#
+#def_key "#"
+# toggle_bitrate_visibility
+#
+#def_key "Z"
+# shuffle
+#
+#def_key "x"
+# toggle_crossfade
+#
+#def_key "X"
+# set_crossfade
+#
+#def_key "u"
+# update_database
+#
+#def_key "ctrl_v"
+# sort_playlist
+#
+#def_key "ctrl_r"
+# reverse_playlist
+#
+#def_key "ctrl_f"
+# apply_filter
+#
+#def_key "/"
+# find
+#
+#def_key "/"
+# find_item_forward
+#
+#def_key "?"
+# find
+#
+#def_key "?"
+# find_item_backward
+#
+#def_key "."
+# next_found_item
+#
+#def_key ","
+# previous_found_item
+#
+#def_key "w"
+# toggle_find_mode
+#
+#def_key "e"
+# edit_song
+#
+#def_key "e"
+# edit_library_tag
+#
+#def_key "e"
+# edit_library_album
+#
+#def_key "e"
+# edit_directory_name
+#
+#def_key "e"
+# edit_playlist_name
+#
+#def_key "e"
+# edit_lyrics
+#
+#def_key "i"
+# show_song_info
+#
+#def_key "I"
+# show_artist_info
+#
+#def_key "g"
+# jump_to_position_in_song
+#
+#def_key "l"
+# show_lyrics
+#
+#def_key "v"
+# reverse_selection
+#
+#def_key "V"
+# remove_selection
+#
+#def_key "B"
+# select_album
+#
+#def_key "a"
+# add_selected_items
+#
+#def_key "c"
+# clear_playlist
+#
+#def_key "c"
+# clear_main_playlist
+#
+#def_key "C"
+# crop_playlist
+#
+#def_key "C"
+# crop_main_playlist
+#
+#def_key "m"
+# move_sort_order_up
+#
+#def_key "m"
+# move_selected_items_up
+#
+#def_key "m"
+# toggle_media_library_sort_mode
+#
+#def_key "m"
+# set_visualizer_sample_multiplier
+#
+#def_key "n"
+# move_sort_order_down
+#
+#def_key "n"
+# move_selected_items_down
+#
+#def_key "M"
+# move_selected_items_to
+#
+#def_key "A"
+# add
+#
+#def_key "S"
+# save_playlist
+#
+#def_key "o"
+# jump_to_playing_song
+#
+#def_key "G"
+# jump_to_browser
+#
+#def_key "G"
+# jump_to_playlist_editor
+#
+#def_key "~"
+# jump_to_media_library
+#
+#def_key "E"
+# jump_to_tag_editor
+#
+#def_key "U"
+# toggle_playing_song_centering
+#
+#def_key "P"
+# toggle_display_mode
+#
+#def_key "\\"
+# toggle_interface
+#
+#def_key "!"
+# toggle_separators_between_albums
+#
+#def_key "L"
+# toggle_lyrics_fetcher
+#
+#def_key "F"
+# toggle_fetching_lyrics_in_background
+#
+#def_key "ctrl_l"
+# toggle_screen_lock
+#
+#def_key "`"
+# toggle_browser_sort_mode
+#
+#def_key "`"
+# toggle_library_tag_type
+#
+#def_key "`"
+# refetch_lyrics
+#
+#def_key "`"
+# add_random_items
+#
+#def_key "ctrl_p"
+# set_selected_items_priority
+#
+#def_key "q"
+# quit
+#
+
+def_key "j"
+ scroll_down
+
+def_key "k"
+ scroll_up
+
+def_key "h"
+ previous_column
+
+def_key "l"
+ next_column
+
+def_key "L"
+ show_lyrics
+
+def_key "K"
+ toggle_lyrics_fetcher
+
+def_key "H"
+ show_help
diff --git a/.ncmpcpp/config b/.ncmpcpp/config
new file mode 100644
index 0000000..26c1a3c
--- /dev/null
+++ b/.ncmpcpp/config
@@ -0,0 +1,63 @@
+# MPD
+mpd_music_dir = "~/.mpd/folders"
+mpd_crossfade_time = "1"
+
+# EDITOR
+external_editor = "/usr/bin/vim"
+use_console_editor = "yes"
+
+## DISPLAY MODE - classic/columns
+playlist_display_mode = "columns"
+browser_display_mode = "columns"
+search_engine_display_mode = "columns"
+
+## FORMAT
+song_list_format = "$3{%A}|{%a}$7{%b}$0{%t}|{$4$R{%7l}$9}"
+song_columns_list_format = "(25)[cyan]{a} (5f)[green]{y} (30)[cyan]{b} (3f)[green]{n} (30)[cyan]{t|f} (6f)[red]{l}"
+
+## COLOR
+header_window_color = "cyan"
+main_window_color = "cyan"
+main_window_highlight_color = "green"
+
+# LYRICS
+lyrics_directory = "~/.lyrics"
+store_lyrics_in_song_dir = "yes"
+follow_now_playing_lyrics = "yes"
+fetch_lyrics_for_current_song_in_background = "yes"
+
+## INTERFACE
+user_interface = "alternative"
+now_playing_prefix = "$r"
+now_playing_suffix = "$/r"
+ignore_leading_the = "no"
+mouse_support = "yes"
+autocenter_mode = "yes"
+centered_cursor = "yes"
+
+# PROGRESSBAR
+progressbar_look = "<|>"
+progressbar_color = "red"
+progressbar_elapsed_color = "cyan"
+
+#default_space_mode = "select"
+header_visibility = "no"
+statusbar_visibility = "no"
+titles_visibility = "no"
+#screen_switcher_mode = "sequence: 2 -> 3 -> 9 -> 10"
+locked_screen_width_part = 50
+ask_for_locked_screen_width_part = "no"
+empty_tag_marker = ""
+
+#LASTFM
+lastfm_preferred_language = "en"
+
+
+visualizer_in_stereo = "yes"
+visualizer_fifo_path = "/run/user/1000/mpd/fifo"
+visualizer_output_name = "mpd_fifo"
+visualizer_sample_multiplier = 0.6
+visualizer_sync_interval = 10
+visualizer_type = "spectrum" # spectrum/wave
+visualizer_color = "blue"
+visualizer_look = ●▮
diff --git a/.ncmpcpp/error.log b/.ncmpcpp/error.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.ncmpcpp/error.log
diff --git a/.notmuch-config b/.notmuch-config
new file mode 100644
index 0000000..f2c4c5c
--- /dev/null
+++ b/.notmuch-config
@@ -0,0 +1,98 @@
+# .notmuch-config - Configuration file for the notmuch mail system
+#
+# For more information about notmuch, see http://notmuchmail.org
+
+# Database configuration
+#
+# The only value supported here is 'path' which should be the top-level
+# directory where your mail currently exists and to where mail will be
+# delivered in the future. Files should be individual email messages.
+# Notmuch will store its database within a sub-directory of the path
+# configured here named ".notmuch".
+#
+[database]
+path=/home/dave/Mail
+
+# User configuration
+#
+# Here is where you can let notmuch know how you would like to be
+# addressed. Valid settings are
+#
+# name Your full name.
+# primary_email Your primary email address.
+# other_email A list (separated by ';') of other email addresses
+# at which you receive email.
+#
+# Notmuch will use the various email addresses configured here when
+# formatting replies. It will avoid including your own addresses in the
+# recipient list of replies, and will set the From address based on the
+# address to which the original email was addressed.
+#
+[user]
+name=David Runge
+primary_email=dave@sleepmap.de
+other_email=david.runge@campus.tu-berlin.de;dave@c-base.org;
+
+# Configuration for "notmuch new"
+#
+# The following options are supported here:
+#
+# tags A list (separated by ';') of the tags that will be
+# added to all messages incorporated by "notmuch new".
+#
+# ignore A list (separated by ';') of file and directory names
+# that will not be searched for messages by "notmuch new".
+#
+# NOTE: *Every* file/directory that goes by one of those
+# names will be ignored, independent of its depth/location
+# in the mail store.
+#
+[new]
+tags=unread;inbox;
+ignore=
+
+# Search configuration
+#
+# The following option is supported here:
+#
+# exclude_tags
+# A ;-separated list of tags that will be excluded from
+# search results by default. Using an excluded tag in a
+# query will override that exclusion.
+#
+[search]
+exclude_tags=deleted;spam;
+
+# Maildir compatibility configuration
+#
+# The following option is supported here:
+#
+# synchronize_flags Valid values are true and false.
+#
+# If true, then the following maildir flags (in message filenames)
+# will be synchronized with the corresponding notmuch tags:
+#
+# Flag Tag
+# ---- -------
+# D draft
+# F flagged
+# P passed
+# R replied
+# S unread (added when 'S' flag is not present)
+#
+# The "notmuch new" command will notice flag changes in filenames
+# and update tags, while the "notmuch tag" and "notmuch restore"
+# commands will notice tag changes and update flags in filenames
+#
+[maildir]
+synchronize_flags=true
+
+# Cryptography related configuration
+#
+# The following option is supported here:
+#
+# gpg_path
+# binary name or full path to invoke gpg.
+#
+[crypto]
+gpg_path=gpg
diff --git a/.nvim b/.nvim
new file mode 120000
index 0000000..8355b52
--- /dev/null
+++ b/.nvim
@@ -0,0 +1 @@
+.vim \ No newline at end of file
diff --git a/.nvimrc b/.nvimrc
new file mode 120000
index 0000000..1490f7a
--- /dev/null
+++ b/.nvimrc
@@ -0,0 +1 @@
+.vimrc \ No newline at end of file
diff --git a/.octaverc b/.octaverc
new file mode 100644
index 0000000..2b57141
--- /dev/null
+++ b/.octaverc
@@ -0,0 +1,18 @@
+# Set up a prettier prompt
+PS1('\[\e[0;32m\]\u\[\e[m\]\[\e[1;37m\]@\[\e[m\]\[\e[1;35m\]octave\[\e[m\] \[\e[1;34m\]\W\[\e[m\] \[\e[1;32m\]\$ \[\e[m\]')
+# Editor settings
+edit author "David Runge"
+edit email "<david.runge@campus.tu-berlin.de>"
+edit license "GPL"
+edit editor "urxvt -e vim %s"
+# don't wait for the editor to return
+edit mode async
+# Load packages
+pkg load general
+pkg load signal
+pkg load data-smoothing
+pkg load communications
+# Java settings
+javaaddpath('/usr/local/lib/java/jOpenDocument-1.3b1.jar');
+javaaddpath('/usr/local/lib/java/odfdom-java-0.8.7.jar');
+javaaddpath('/usr/local/lib/java/xercesImpl.jar');
diff --git a/.offlineimaprc b/.offlineimaprc
new file mode 100644
index 0000000..68dfacb
--- /dev/null
+++ b/.offlineimaprc
@@ -0,0 +1,88 @@
+[general]
+accounts = sleepmap.de, tu-berlin.de, c-base.org, linuxaudio.org
+maxsyncaccounts = 3
+pythonfile = ~/bin/pass2offlineimap
+
+# Automatic mailbox generationi for mutt
+[mbnames]
+enabled = yes
+filename = ~/.mutt/mailboxes.rc
+header = "mailboxes "
+peritem = "+%(accountname)s/%(foldername)s"
+sep = " "
+footer = "\n"
+
+[Account tu-berlin.de]
+localrepository = tu-berlin-local
+remoterepository = tu-berlin-remote
+status_backend = sqlite
+autorefresh = 3
+quick = 7
+
+[Repository tu-berlin-local]
+type = Maildir
+localfolders = ~/Mail/tu-berlin.de/
+
+[Repository tu-berlin-remote]
+type = IMAP
+remotehost = mail.tu-berlin.de
+remoteuser = davezerave
+remotepasseval = get_pass("davezerave@mail.tu-berlin.de")
+folderfilter = lambda folder: folder not in ['Other Users/tb-ak/studio']
+sslcacertfile = /etc/ssl/cert.pem
+
+[Account sleepmap.de]
+localrepository = sleepmap-local
+remoterepository = sleepmap-remote
+status_backend = sqlite
+autorefresh = 3
+quick = 7
+
+[Repository sleepmap-local]
+type = Maildir
+localfolders = ~/Mail/sleepmap.de/
+
+[Repository sleepmap-remote]
+type = IMAP
+remotehost = sleepmap.de
+remoteuser = dave@sleepmap.de
+remotepasseval = get_pass("dave@sleepmap.de")
+ssl = yes
+cert_fingerprint = 7fb877430d73b4eb013de0e54bbf78e22b4b0261
+
+[Account c-base.org]
+localrepository = c-base-local
+remoterepository = c-base-remote
+status_backend = sqlite
+autorefresh = 3
+quick = 7
+
+[Repository c-base-local]
+type = Maildir
+localfolders = ~/Mail/c-base.org/
+
+[Repository c-base-remote]
+type = IMAP
+remotehost = c-mail.c-base.org
+remoteuser = dave
+remotepasseval = get_pass("dave@c-base.org")
+sslcacertfile = /etc/ssl/cert.pem
+
+[Account linuxaudio.org]
+localrepository = linuxaudio-local
+remoterepository = linuxaudio-remote
+status_backend = sqlite
+autorefresh = 3
+quick = 7
+
+[Repository linuxaudio-local]
+type = Maildir
+localfolders = ~/Mail/linuxaudio.org/
+
+[Repository linuxaudio-remote]
+type = IMAP
+remotehost = linuxaudio.org
+remoteuser = lac
+remotepasseval = get_pass("lac@linuxaudio.org")
+ssl = yes
+cert_fingerprint = dd717e1d4f6b849dfa0f1adacfb9ce1c6b7132f1
diff --git a/.processing/preferences.txt b/.processing/preferences.txt
new file mode 100644
index 0000000..2768ded
--- /dev/null
+++ b/.processing/preferences.txt
@@ -0,0 +1,105 @@
+buttons.hide.image=false
+chooser.files.native=false
+console.auto_clear=true
+console.font.size=12
+console.length=500
+console.lines=4
+contribution.backup.on_install=true
+contribution.backup.on_remove=true
+editor.caret.blink=true
+editor.caret.block=false
+editor.completion.auto_close=false
+editor.divider.size=0
+editor.font.family=Source Code Pro
+editor.font.size=12
+editor.indent=true
+editor.input_method_support=false
+editor.keys.alternative_cut_copy_paste=true
+editor.keys.home_and_end_travel_far=false
+editor.keys.home_and_end_travel_smart=true
+editor.keys.shift_backspace_is_delete=false
+editor.laf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
+editor.smooth=true
+editor.tabs.expand=true
+editor.tabs.size=2
+editor.token.comment1.style=#666666,plain
+editor.token.comment2.style=#666666,plain
+editor.token.function1.style=#006699,plain
+editor.token.function2.style=#006699,plain
+editor.token.function3.style=#669900,plain
+editor.token.function4.style=#006699,bold
+editor.token.invalid.style=#666666,bold
+editor.token.keyword1.style=#33997e,plain
+editor.token.keyword2.style=#33997e,plain
+editor.token.keyword3.style=#669900,plain
+editor.token.keyword4.style=#d94a7a,plain
+editor.token.keyword5.style=#e2661a,plain
+editor.token.keyword6.style=#33997e,plain
+editor.token.label.style=#666666,bold
+editor.token.literal1.style=#7D4793,plain
+editor.token.literal2.style=#718a62,plain
+editor.token.operator.style=#006699,plain
+editor.untitled.prefix=sketch_
+editor.untitled.suffix=yyMMdd
+editor.watcher=true
+editor.watcher.debug=false
+editor.watcher.window=1500
+editor.window.height.default=600
+editor.window.height.min=500
+editor.window.width.default=500
+editor.window.width.min=400
+export.application.embed_java=true
+export.application.fullscreen=false
+export.application.stop=true
+export.delete_target_folder=true
+header.hide.image=false
+instance_server.key=0.926220805368482
+instance_server.port=33039
+last.sketch.count=0
+last.sketch.mode=processing.mode.java.JavaMode
+last.sketch.restore=true
+launcher=xdg-open
+pdex.autoSave.autoSaveByDefault=true
+pdex.autoSave.autoSaveEnabled=false
+pdex.autoSave.promptDisplay=true
+pdex.autoSaveInterval=5
+pdex.completion=false
+pdex.completion.trigger=false
+pdex.dbgOutput=false
+pdex.errorCheckEnabled=true
+pdex.suggest.imports=true
+pdex.warningsEnabled=true
+pdex.writeErrorLogs=false
+platform.auto_file_type_associations=true
+preproc.color_datatype=true
+preproc.enhanced_casting=true
+preproc.output_parse_tree=false
+preproc.save_build_files=false
+preproc.substitute_floats=true
+preproc.substitute_unicode=true
+preproc.web_colors=true
+proxy.host=
+proxy.http.host=
+proxy.http.port=
+proxy.https.host=
+proxy.https.port=
+proxy.port=
+proxy.socks.host=
+proxy.socks.port=
+recent.count=10
+run.display=0
+run.options=
+run.options.memory=false
+run.options.memory.initial=64
+run.options.memory.maximum=256
+run.present.bgcolor=#666666
+run.present.stop.color=#cccccc
+run.window.bgcolor=#DFDFDF
+sketchbook.path=/home/dave/git/sketchbooks/processing-sketchbook
+sketchbook.path.three=/home/dave/git/sketchbooks/processing-sketchbook
+toolbar.hide.image=false
+update.check=false
+update.id=-2232603851351662427
+update.last=1395616194592
+welcome.seen=false
+welcome.show=true
diff --git a/.rtorrent.rc b/.rtorrent.rc
new file mode 100644
index 0000000..bd60122
--- /dev/null
+++ b/.rtorrent.rc
@@ -0,0 +1,106 @@
+# This is an example resource file for rTorrent. Copy to
+# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
+# uncomment the options you wish to enable.
+
+# Maximum and minimum number of peers to connect to per torrent.
+min_peers = 40
+max_peers = 100
+
+# Same as above but for seeding completed torrents (-1 = same as downloading)
+min_peers_seed = 5
+max_peers_seed = 20
+
+# Maximum number of simultanious uploads per torrent.
+max_uploads = 5
+
+# Global upload and download rate in KiB. "0" for unlimited.
+download_rate = 0
+upload_rate = 30
+
+# Default directory to save the downloaded torrents.
+directory = /home/dave/Downloads/rtorrent/tmp
+
+# Default session directory. Make sure you don't run multiple instance
+# of rtorrent using the same session directory. Perhaps using a
+# relative path?
+session = /home/dave/Downloads/rtorrent/session
+
+# Watch a directory for new torrents, and stop those that have been
+# deleted.
+
+#schedule = watch_directory,5,5,load_start=./watch/\*.torrent
+#schedule = untied_directory,5,5,stop_untied=
+
+schedule = watch_directory_all,10,10,"load_start=/home/dave/Downloads/*.torrent,d.set_custom1=/home/dave/Downloads/"
+
+# On completion, move the torrent to the directory from custom1.
+system.method.set_key = event.download.finished,move_complete,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1="
+#on_finished = move_complete,"d.set_directory=$d.get_custom1= ;execute=mv,-u,$d.get_base_path=,$d.get_custom1="
+
+# Close torrents when diskspace is low.
+schedule = low_diskspace,5,60,close_low_diskspace=100M
+
+# Stop torrents when reaching upload ratio in percent,
+# when also reaching total upload in bytes, or when
+# reaching final upload ratio in percent.
+# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
+#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"
+
+# Port range to use for listening.
+port_range = 6890-6892
+
+# Start opening ports at a random position within the port range.
+port_random = no
+
+# Check hash for finished torrents. Might be usefull until the bug is
+# fixed that causes lack of diskspace not to be properly reported.
+check_hash = yes
+
+# Set whetever the client should try to connect to UDP trackers.
+use_udp_trackers = yes
+
+# Alternative calls to bind and ip that should handle dynamic ip's.
+#schedule = ip_tick,0,1800,ip=rakshasa
+#schedule = bind_tick,0,1800,bind=rakshasa
+
+# Encryption options, set to none (default) or any combination of the following:
+# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
+#
+# The example value allows incoming encrypted connections, starts unencrypted
+# outgoing connections but retries with encryption if they fail, preferring
+# plaintext to RC4 encryption after the encrypted handshake
+#
+encryption = allow_incoming,enable_retry,prefer_plaintext
+
+# Enable DHT support for trackerless torrents or when all trackers are down.
+# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
+# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
+# The default is "off". For DHT to work, a session directory must be defined.
+#
+dht = auto
+
+# UDP port to use for DHT.
+#
+dht_port = 6893
+
+# Enable peer exchange (for torrents not marked private)
+#
+peer_exchange = yes
+
+#
+# Do not modify the following parameters unless you know what you're doing.
+#
+
+# Hash read-ahead controls how many MB to request the kernel to read
+# ahead. If the value is too low the disk may not be fully utilized,
+# while if too high the kernel might not be able to keep the read
+# pages in memory thus end up trashing.
+#hash_read_ahead = 10
+
+# Interval between attempts to check the hash, in milliseconds.
+#hash_interval = 100
+
+# Number of attempts to check the hash while using the mincore status,
+# before forcing. Overworked systems might need lower values to get a
+# decent hash checking rate.
+#hash_max_tries = 10
diff --git a/.screenrc b/.screenrc
new file mode 100644
index 0000000..ca6561d
--- /dev/null
+++ b/.screenrc
@@ -0,0 +1,153 @@
+#
+# Example of a user's .screenrc file
+#
+
+# This is how one can set a reattach password:
+# password ODSJQf.4IJN7E # "1234"
+
+# no annoying audible bell, please
+vbell on
+
+# detach on hangup
+autodetach on
+
+# don't display the copyright page
+startup_message off
+
+# emulate .logout message
+pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
+
+# advertise hardstatus support to $TERMCAP
+# termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'
+
+# make the shell in every window a login shell
+#shell -$SHELL
+
+# autoaka testing
+# shellaka '> |tcsh'
+# shellaka '$ |sh'
+
+# set every new windows hardstatus line to somenthing descriptive
+# defhstatus "screen: ^En (^Et)"
+
+defscrollback 1000
+
+# don't kill window after the process died
+# zombie "^["
+
+# enable support for the "alternate screen" capability in all windows
+# altscreen on
+
+################
+#
+# xterm tweaks
+#
+
+#xterm understands both im/ic and doesn't have a status line.
+#Note: Do not specify im and ic in the real termcap/info file as
+#some programs (e.g. vi) will not work anymore.
+termcap xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
+terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
+
+#80/132 column switching must be enabled for ^AW to work
+#change init sequence to not switch width
+termcapinfo xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
+
+# Make the output buffer large for (fast) xterms.
+#termcapinfo xterm* OL=10000
+termcapinfo xterm* OL=100
+
+# tell screen that xterm can switch to dark background and has function
+# keys.
+termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
+termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
+termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
+
+# special xterm hardstatus: use the window title.
+termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
+
+#terminfo xterm 'vb=\E[?5h$<200/>\E[?5l'
+termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
+
+# emulate part of the 'K' charset
+termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'
+
+# xterm-52 tweaks:
+# - uses background color for delete operations
+termcapinfo xterm* be
+
+################
+#
+# wyse terminals
+#
+
+#wyse-75-42 must have flow control (xo = "terminal uses xon/xoff")
+#essential to have it here, as this is a slow terminal.
+termcapinfo wy75-42 xo:hs@
+
+# New termcap sequences for cursor application mode.
+termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J
+
+################
+#
+# other terminals
+#
+
+# make hp700 termcap/info better
+termcapinfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
+
+# Extend the vt100 desciption by some sequences.
+termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
+terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
+termcapinfo linux C8
+# old rxvt versions also need this
+# termcapinfo rxvt C8
+
+
+################
+#
+# keybindings
+#
+
+#remove some stupid / dangerous key bindings
+bind k
+bind ^k
+bind .
+bind ^\
+bind \\
+bind ^h
+bind h
+#make them better
+bind 'K' kill
+bind 'I' login on
+bind 'O' login off
+bind '}' history
+
+# Yet another hack:
+# Prepend/append register [/] to the paste if ^a^] is pressed.
+# This lets me have autoindent mode in vi.
+register [ "\033:se noai\015a"
+register ] "\033:se ai\015a"
+bind ^] paste [.]
+
+################
+#
+# default windows
+#
+
+# screen -t local 0
+# screen -t mail 1 mutt
+# screen -t 40 2 rlogin server
+
+# caption always "%3n %t%? @%u%?%? [%h]%?%=%c"
+# hardstatus alwaysignore
+# hardstatus alwayslastline "%Lw"
+
+# bind = resize =
+# bind + resize +1
+# bind - resize -1
+# bind _ resize max
+#
+# defnonblock 1
+# blankerprg rain -d 100
+# idle 30 blanker
diff --git a/.scvimrc b/.scvimrc
new file mode 100644
index 0000000..7e974a2
--- /dev/null
+++ b/.scvimrc
@@ -0,0 +1,77 @@
+let g:sclangKillOnExit = 1
+let g:sclangTerm = "urxvt -e"
+let g:sclangPipeLoc = "/tmp/sclang-pipe"
+let g:sclangPipeAppPidLoc = "/tmp/sclangpipe_app-pid"
+" Set 1 to split scvim in tmux and screen vertically, 0 for horizontally
+let g:scvimSplitVertical = 1
+" Set the size of the sclang output split in lines or blocks (only for scvim opened in screen and
+" tmux). This setting applies vertically or horizontally, depending on
+" g:scvimSplitVertical
+let g:scvimSplitSize = 25
+
+au BufWinEnter,BufNewFile,BufRead *.sc set filetype=supercollider
+au BufWinEnter,BufNewFile,BufRead *.sc let &iskeyword="@,48-57,_,192-255" | runtime ftplugin/supercollider.vim
+au BufWinEnter,BufNewFile,BufRead *.sc set sw=2 ts=2 autoindent "this line can be changed however you like
+
+"scd files: on open set runtimepath and start sclang
+au BufWinEnter,BufNewFile,BufRead *.scd set runtimepath+=/usr/share/vim/addons/ filetype=supercollider
+au BufWinEnter,BufNewFile,BufRead *.scd let &iskeyword="@,48-57,_,192-255,-,|" | runtime ftplugin/supercollider.vim | SClangStart
+au BufWinEnter,BufNewFile,BufRead *.scd set sw=2 ts=2 autoindent
+
+"sc help files
+au BufWinEnter,BufNewFile,BufRead *.schelp set filetype=supercollider
+au BufWinEnter,BufNewFile,BufRead *.schelp let &iskeyword="@,48-57,_,192-255,-,|" | runtime ftplugin/supercollider.vim
+au BufWinEnter,BufNewFile,BufRead *.schelp set sw=2 ts=2 autoindent "this line can be changed however you like
+
+" ================ Indentation ======================
+
+set autoindent
+set smartindent
+set smarttab
+set shiftwidth=2
+set softtabstop=2
+set tabstop=2
+set expandtab
+
+filetype plugin on
+filetype indent on
+
+" Display tabs and trailing spaces visually
+set list listchars=tab:\ \ ,trail:·
+
+set nowrap "Don't wrap lines
+set linebreak "Wrap lines at convenient points
+
+
+"required for matching
+au Filetype supercollider,supercollider_help let b:match_skip = 's:scComment\|scString\|scSymbol'
+au Filetype supercollider,supercollider_help let b:match_words = '(:),[:],{:}'
+
+"indenting if you want it
+"au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc runtime indent/sc_indent.vim
+
+
+"supercollider vim keybindings
+"expand('<cword>') gives current word under cursor without having to yank
+
+au Filetype supercollider,supercollider_help nmap <buffer> K :call SChelp(expand('<cword>'))<CR>
+au Filetype supercollider,supercollider_help imap <buffer>  :call SChelp(expand('<cword>'))<CR>
+au Filetype supercollider,supercollider_help nmap <buffer> :call SCdef(expand('<cword>'))<CR>
+au Filetype supercollider,supercollider_help imap <buffer> :call SCdef(expand('<cword>'))<CR>
+au Filetype supercollider,supercollider_help nmap <buffer> <F1> :call HelpBrowser(expand('<cword>'))<CR>
+au Filetype supercollider,supercollider_help imap <buffer> <F1> :call HelpBrowser(expand('<cword>'))<CR>a
+au Filetype supercollider,supercollider_help vmap <buffer> <F1> :call HelpBrowser(expand('<cword>'))<CR>
+au Filetype supercollider,supercollider_help nmap <buffer> <F5> :call SClang_block()<CR>
+au Filetype supercollider,supercollider_help imap <buffer> <F5> :call SClang_block()<CR>a
+au Filetype supercollider,supercollider_help vmap <buffer> <F5> :call SClang_send()<CR>
+au Filetype supercollider,supercollider_help vmap <buffer> <F6> :call SClang_send()<CR>
+au Filetype supercollider,supercollider_help nmap <buffer> <F6> :call SClang_send()<CR>
+au Filetype supercollider,supercollider_help imap <buffer> <F6> :call SClang_send()<CR>a
+au Filetype supercollider,supercollider_help nmap <buffer> <F7> :call SClang_TempoClock_clear()<CR>
+au Filetype supercollider,supercollider_help imap <buffer> <F7> :call SClang_TempoClock_clear()<CR>a
+au Filetype supercollider,supercollider_help nmap <buffer> <F8> :call SClang_free("s")<CR>
+au Filetype supercollider,supercollider_help imap <buffer> <F8> :call SClang_free("s")<CR>a
+au Filetype supercollider,supercollider_help nmap <buffer> <F12> :call SClang_thisProcess_stop()<CR>
+au Filetype supercollider,supercollider_help imap <buffer> <F12> :call SClang_thisProcess_stop()<CR>a
+
+"end of scvim (supercollider vim)
diff --git a/.tmux.conf b/.tmux.conf
new file mode 100644
index 0000000..546fda7
--- /dev/null
+++ b/.tmux.conf
@@ -0,0 +1,133 @@
+# Ring the bell if any background window rang a bell
+set -g bell-action any
+
+set -g default-terminal "screen-256color"
+
+# split windows like vim
+# vim's definition of a horizontal/vertical split is reversed from tmux's
+bind s split-window -v
+bind v split-window -h
+
+# move around panes with hjkl, as one would in vim after pressing ctrl-w
+bind h select-pane -L
+bind j select-pane -D
+bind k select-pane -U
+bind l select-pane -R
+
+# Create splits and vertical splits
+bind-key v split-window -h
+bind-key s split-window
+
+# Pane resize in all four directions using HJKL
+bind-key -r H resize-pane -L
+bind-key -r J resize-pane -D
+bind-key -r K resize-pane -U
+bind-key -r L resize-pane -R
+# Fix ctrl + L/R
+bind-key -n C-Right send-keys w
+bind-key -n C-Left send-keys b
+
+# setting titles on
+set -g set-titles on
+set -g set-titles-string "#T"
+set-option -g allow-rename on
+
+set -g history-limit 10000
+# set mouse mode on
+set -g mouse on
+
+# Wheel scroll in pane
+unbind -T root WheelUpPane
+unbind -T root WheelDownPane
+bind -T root WheelUpPane if -Ft= '#{mouse_any_flag}' 'send-keys -M' 'if -Ft= "#{pane_in_mode}" "send-keys -M" "copy-mode -u"'
+
+# Wheel scroll in pane WHILE in copy-mode
+bind -tvi-copy WheelUpPane halfpage-up
+bind -tvi-copy WheelDownPane halfpage-down
+
+# Logout with Ctrl+D
+bind-key ^D detach-client
+
+# Use vi keybindings for tmux commandline input.
+# Note that to get command mode you need to hit ESC twice...
+set -g status-keys vi
+
+# Use vi keybindings in copy and choice modes
+setw -g mode-keys vi
+
+# v and y like vi in copy-mode
+bind-key -t vi-copy 'v' begin-selection
+bind-key -t vi-copy 'y' copy-selection
+# clipboard settings
+set -s set-clipboard on
+bind-key C-p run "xclip -o | tmux load-buffer - ; tmux paste-buffer"
+bind-key C-y run "tmux save-buffer - | xclip -i"
+
+# set first window to index 1 (not 0) to map more to the keyboard layout...
+set -g base-index 1
+
+# color scheme (styled as vim-powerline)
+set -g status-left-length 52
+set -g status-right-length 451
+set -g status-fg white
+set -g status-bg colour234
+set -g pane-border-fg colour245
+set -g pane-active-border-fg colour39
+set -g message-fg white
+set -g message-bg colour221
+set -g message-attr bold
+
+# set status-interval to 2 for tmux-mem-cpu-load
+set -g status-interval 1
+set -g status-left '#[fg=colour235,bg=colour252,bold] #(hostname) #[fg=colour245,bg=colour238,bold] #(whoami) (#S) '
+set -g status-right '#[fg=colour23,bg=colour234]|>#[fg=white,bg=colour234] CPU:#{cpu_percentage}, Battery: #{battery_percentage} #[fg=colour23,bg=colour234]<||>#[fg=white,bg=colour234] %H:%M:%S #[fg=colour23,bg=colour234]<|'
+set -g window-status-format '#[fg=colour235,bg=colour252,bold] #I: #W '
+set -g window-status-current-format '#[fg=black,bg=colour23,noreverse,bold] #I: #W '
+
+# No escape time for vi mode
+set -sg escape-time 0
+
+# next/prev window
+bind-key -n M-k next-window
+bind-key -n M-j previous-window
+
+# select windows
+bind-key -n M-1 select-window -t 1
+bind-key -n M-2 select-window -t 2
+bind-key -n M-3 select-window -t 3
+bind-key -n M-4 select-window -t 4
+bind-key -n M-5 select-window -t 5
+bind-key -n M-6 select-window -t 6
+bind-key -n M-7 select-window -t 7
+bind-key -n M-8 select-window -t 8
+bind-key -n M-9 select-window -t 9
+bind-key -n M-0 select-window -t 0
+
+# Reload config
+bind r source-file ~/.tmux.conf
+
+# Swap windows
+bind-key m command-prompt -p "move window to:" "swap-window -t '%%'"
+
+
+# List of plugins
+# Supports `github_username/repo` or full git repo URLs
+set -g @tpm_plugins ' \
+ tmux-plugins/tpm \
+ tmux-plugins/tmux-sensible \
+ tmux-plugins/tmux-cpu \
+ tmux-plugins/tmux-yank \
+ tmux-plugins/tmux-open \
+ tmux-plugins/tmux-battery \
+ tmux-plugins/tmux-logging \
+ tmux-plugins/tmux-online-status \
+ tmux-plugins/tmux-sidebar \
+ '
+# Other examples:
+# github_username/plugin_name \
+# git@github.com/user/plugin \
+# git@bitbucket.com/user/plugin \
+
+# Initializes TMUX plugin manager.
+# Keep this line at the very bottom of tmux.conf.
+run-shell '~/.tmux/plugins/tpm/tpm'
diff --git a/.vdirsyncer/config b/.vdirsyncer/config
new file mode 100644
index 0000000..e64e880
--- /dev/null
+++ b/.vdirsyncer/config
@@ -0,0 +1,75 @@
+[general]
+status_path = "~/.vdirsyncer/status/"
+
+# carddav
+[pair dave_contacts]
+a = dave_contacts_local
+b = dave_contacts_remote
+collections = ["bands", "private", "services", "unixpool", "venues"]
+conflict_resolution = "b wins"
+
+[storage dave_contacts_local]
+type = filesystem
+path = "~/.contacts/"
+fileext = .vcf
+
+[storage dave_contacts_remote]
+type = carddav
+url = https://cloud.sleepmap.de/remote.php/carddav/
+verify = "~/.certs/sleepmap.crt"
+username = dave
+password.fetch = ["command", "~/bin/pass2vdirsyncer", "dave", "cloud.sleepmap.de"]
+
+
+[pair akt_contacts]
+a = akt_contacts_local
+b = akt_contacts_remote
+collections = ["exteam", "studio", "team"]
+conflict_resolution = "b wins"
+
+[storage akt_contacts_local]
+type = filesystem
+path = "~/.contacts/"
+fileext = .vcf
+
+[storage akt_contacts_remote]
+type = carddav
+url = https://www2.ak.tu-berlin.de/.cloudy/remote.php/carddav/
+username = drunge
+password.fetch = ["command", "~/bin/pass2vdirsyncer", "drunge", "www2.ak.tu-berlin.de"]
+
+
+# caldav
+[pair dave_calendar]
+a = dave_calendar_local
+b = dave_calendar_remote
+collections = ["akt", "concerts", "contact_birthdays", "courses", "flat", "live", "private", "unix-pool", "work"]
+
+[storage dave_calendar_local]
+type = filesystem
+path = "~/.calendars/"
+fileext = .ics
+
+[storage dave_calendar_remote]
+type = caldav
+url = https://cloud.sleepmap.de/remote.php/caldav/
+verify = "~/.certs/sleepmap.crt"
+username = dave
+password.fetch = ["command", "~/bin/pass2vdirsyncer", "dave", "cloud.sleepmap.de"]
+
+
+[pair akt_calendar]
+a = akt_calendar_local
+b = akt_calendar_remote
+collections = ["ak_shared_by_mvoigt", "studiotermine_shared_by_mvoigt", "rechencluster_shared_by_mvoigt", "labs_shared_by_mvoigt", "akurlaub_shared_by_mvoigt", "grossesstudio_shared_by_mvoigt", "kleinesstudio_shared_by_mvoigt", "studioausleihe_shared_by_mvoigt", "studiotermine_shared_by_mvoigt"]
+
+[storage akt_calendar_local]
+type = filesystem
+path = "~/.calendars/"
+fileext = .ics
+
+[storage akt_calendar_remote]
+type = caldav
+url = https://www2.ak.tu-berlin.de/.cloudy/remote.php/caldav/
+username = drunge
+password.fetch = ["command", "~/bin/pass2vdirsyncer", "drunge", "www2.ak.tu-berlin.de"]
diff --git a/.vim/addons-settings.vim b/.vim/addons-settings.vim
new file mode 100644
index 0000000..2a37d56
--- /dev/null
+++ b/.vim/addons-settings.vim
@@ -0,0 +1,184 @@
+" ================ CTRLP settings ================
+if exists("g:ctrlp_user_command")
+ unlet g:ctrlp_user_command
+endif
+if executable('ag')
+ " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
+ let g:ctrlp_user_command =
+ \ 'ag %s --files-with-matches -g "" --ignore "\.git$\|\.hg$\|\.svn$"'
+
+ " ag is fast enough that CtrlP doesn't need to cache
+ let g:ctrlp_use_caching = 0
+else
+ " Fall back to using git ls-files if Ag is not available
+ let g:ctrlp_custom_ignore = '\.git$\|\.hg$\|\.svn$'
+ let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . --cached --exclude-standard --others']
+endif
+
+" Default to filename searches - so that appctrl will find application
+" controller
+let g:ctrlp_by_filename = 1
+
+" Don't jump to already open window. This is annoying if you are maintaining
+" several Tab workspaces and want to open two windows into the same file.
+let g:ctrlp_switch_buffer = 0
+
+" We don't want to use Ctrl-p as the mapping because
+" it interferes with YankRing (paste, then hit ctrl-p)
+let g:ctrlp_map = ',t'
+nnoremap <silent> ,t :CtrlP<CR>
+
+" Additional mapping for buffer search
+nnoremap <silent> ,b :CtrlPBuffer<cr>
+
+" Cmd-Shift-P to clear the cache
+nnoremap <silent> <D-P> :ClearCtrlPCache<cr>
+
+" Idea from : http://www.charlietanksley.net/blog/blog/2011/10/18/vim-navigation-with-lustyexplorer-and-lustyjuggler/
+" Open CtrlP starting from a particular path, making it much
+" more likely to find the correct thing first. mnemonic 'jump to [something]'
+map ,ja :CtrlP app/assets<CR>
+map ,jm :CtrlP app/models<CR>
+map ,jc :CtrlP app/controllers<CR>
+map ,jv :CtrlP app/views<CR>
+map ,jh :CtrlP app/helpers<CR>
+map ,jl :CtrlP lib<CR>
+map ,jp :CtrlP public<CR>
+map ,js :CtrlP spec<CR>
+map ,jf :CtrlP fast_spec<CR>
+map ,jd :CtrlP db<CR>
+map ,jC :CtrlP config<CR>
+map ,jV :CtrlP vendor<CR>
+map ,jF :CtrlP factories<CR>
+map ,jT :CtrlP test<CR>
+
+"Cmd-Shift-(M)ethod - jump to a method (tag in current file)
+"Ctrl-m is not good - it overrides behavior of Enter
+nnoremap <silent> <D-M> :CtrlPBufTag<CR>
+
+" ================ fugitive settings ================
+" For fugitive.git, dp means :diffput. Define dg to mean :diffget
+nnoremap <silent> ,dg :diffget<CR>
+nnoremap <silent> ,dp :diffput<CR>
+" The tree buffer makes it easy to drill down through the directories of your
+" git repository, but it’s not obvious how you could go up a level to the
+" parent directory. Here’s a mapping of .. to the above command, but
+" only for buffers containing a git blob or tree
+autocmd User fugitive
+ \ if fugitive#buffer().type() =~# '^\%(tree\|blob\)$' |
+ \ nnoremap <buffer> .. :edit %:h<CR> |
+ \ endif
+
+" Every time you open a git object using fugitive it creates a new buffer.
+" This means that your buffer listing can quickly become swamped with
+" fugitive buffers. This prevents this from becomming an issue:
+
+autocmd BufReadPost fugitive://* set bufhidden=delete
+
+" ================ jquery settings ================
+autocmd BufRead,BufNewFile *.js set ft=javascript syntax=jquery
+
+" ================ lightline settings ================
+let g:lightline = {
+ \ 'colorscheme': 'solarized',
+ \ 'active': {
+ \ 'left': [ [ 'mode' ],
+ \ [ 'fugitive', 'readonly', 'filename', 'modified' ] ]
+ \ },
+ \ 'component': {
+ \ 'readonly': '%{&readonly?"x":""}',
+ \ 'fugitive': '%{exists("*fugitive#head")?fugitive#head():""}'
+ \ },
+ \ 'component_visible_condition': {
+ \ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())'
+ \ },
+ \ 'separator': { 'left': '', 'right': '' },
+ \ 'subseparator': { 'left': '|', 'right': '|' }
+ \ }
+
+set laststatus=2
+
+
+" ================ nerdtree-tabs settings ================
+" Auto open nerd tree on startup
+let g:nerdtree_tabs_open_on_gui_startup = 0
+" Focus in the main content window
+let g:nerdtree_tabs_focus_on_files = 1
+
+" ================ nerdtree settings ================
+" Make nerdtree look nice
+let NERDTreeMinimalUI = 1
+let NERDTreeDirArrows = 1
+let g:NERDTreeWinSize = 30
+
+" ================ persistent-undo settings ================
+" persistent undos - undo after you re-open the file
+" but this gives warnings under command line vim
+" use only in macvim
+if v:version > '702'
+ set undodir=~/.vim/backups
+ set undofile
+endif
+
+" ================ showmarks settings ================
+" Tell showmarks to not include the various brace marks (),{}, etc
+let g:showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY"
+
+" ================ syntastic settings ================
+"mark syntax errors with :signs
+let g:syntastic_enable_signs=1
+"automatically jump to the error when saving the file
+let g:syntastic_auto_jump=0
+"show the error list automatically
+let g:syntastic_auto_loc_list=1
+"don't care about warnings
+let g:syntastic_quiet_messages = {'level': 'warnings'}
+
+" ================ tComment settings ================
+" tComment maps 'gcc' to comment current line
+" this adds 'gcp' comment current paragraph (block)
+" using tComment's built in <c-_>p mapping
+nmap <silent> gcp <c-_>p
+
+" ================ tidy settings ================
+:vmap ,gt :!tidy -q -i --show-errors 0<CR>
+
+" ================ vim-indent-guides settings ================
+let g:indent_guides_auto_colors = 1
+let g:indent_guides_start_level = 2
+let g:indent_guides_guide_size = 1
+
+" ================ vim-session settings ================
+" Prevent vim-session from asking us to load the session.
+" If you want to load the session, use :SaveSession and :OpenSession
+let g:session_autosave = 'no'
+let g:session_autoload = 'no'
+
+" ================ tabular settings ================
+" Hit Cmd-Shift-A then type a character you want to align by
+nmap <D-A> :Tabularize /
+vmap <D-A> :Tabularize /
+
+" ================ sudo settings ================
+" w!! to write a file as sudo
+" stolen from Steve Losh
+cmap w!! w !sudo tee % >/dev/null
+
+" ================ YankRing settings ==============
+
+let g:yankring_history_dir = '$HOME/.vim'
+"let g:yankring_history_file = '.yankring-history'
+nnoremap ,yr :YRShow<CR>
+nnoremap <C-y> :YRShow<CR>
+
+" ================ vim-processing settings ==============
+let g:processing_doc_style='local'
+let g:processing_doc_path='/usr/share/processing/modes/java/reference/'
+
+" ================ vim-colors-solarized ==============
+let g:solarized_termcolors=256
+let g:solarized_termtrans=1
+
+" ================ YouCompleteMe ==============
+" set
+let g:EclimCompletionMethod = 'omnifunc'
diff --git a/.vim/addons.vim b/.vim/addons.vim
new file mode 100644
index 0000000..78cca1b
--- /dev/null
+++ b/.vim/addons.vim
@@ -0,0 +1,55 @@
+" git
+VAMActivate fugitive
+VAMActivate github:tpope/vim-git
+" appearance
+VAMActivate showmarks
+VAMActivate github:itchyny/lightline.vim
+VAMActivate github:skwp/vim-colors-solarized
+" languages
+VAMActivate iptables
+VAMActivate github:pangloss/vim-javascript
+VAMActivate github:itspriddle/vim-jquery
+VAMActivate github:scrooloose/syntastic.git
+VAMActivate github:honza/vim-snippets
+VAMActivate github:garbas/vim-snipmate
+VAMActivate github:gerw/vim-latex-suite
+VAMActivate github:sudar/vim-arduino-syntax
+VAMActivate github:sudar/vim-arduino-snippets
+VAMActivate github:sophacles/vim-processing
+VAMActivate github:Matt-Stevens/vim-systemd-syntax
+VAMActivate github:sjas/octave.vim
+VAMActivate github:wannesm/wmgraphviz.vim.git
+" project
+VAMActivate github:scrooloose/nerdtree.git
+VAMActivate github:jistr/vim-nerdtree-tabs.git
+VAMActivate github:xolox/vim-misc
+VAMActivate github:xolox/vim-session
+VAMActivate github:kien/ctrlp.vim
+" textobjects
+VAMActivate github:coderifous/textobj-word-column.vim
+VAMActivate github:kana/vim-textobj-datetime
+VAMActivate github:kana/vim-textobj-entire
+VAMActivate github:kana/vim-textobj-function
+VAMActivate github:kana/vim-textobj-user
+VAMActivate github:lucapette/vim-textobj-underscore
+VAMActivate github:nathanaelkane/vim-indent-guides
+VAMActivate github:thinca/vim-textobj-function-javascript
+VAMActivate github:vim-scripts/argtextobj.vim
+VAMActivate github:austintaylor/vim-indentobject
+" improvements
+VAMActivate sudo
+VAMActivate tmux
+VAMActivate YankRing
+VAMActivate netrw
+VAMActivate tComment
+VAMActivate VimRepress
+VAMActivate github:tpope/vim-abolish
+VAMActivate github:tpope/vim-endwise.git
+VAMActivate github:tpope/vim-ragtag
+VAMActivate github:tpope/vim-repeat.git
+VAMActivate github:tpope/vim-surround.git
+VAMActivate github:tpope/vim-unimpaired
+VAMActivate github:goldfeld/ctrlr.vim
+VAMActivate github:jamessan/vim-gnupg
+VAMActivate github:Valloric/YouCompleteMe.git
+VAMActivate github:godlygeek/tabular
diff --git a/.vim/custom-functions.vim b/.vim/custom-functions.vim
new file mode 100644
index 0000000..ecf92bd
--- /dev/null
+++ b/.vim/custom-functions.vim
@@ -0,0 +1,37 @@
+" ================ strip trailing whitespaces ================
+" via: http://rails-bestpractices.com/posts/60-remove-trailing-whitespace
+" Strip trailing whitespace
+function! <SID>StripTrailingWhitespaces()
+ " Preparation: save last search, and cursor position.
+ let _s=@/
+ let l = line(".")
+ let c = col(".")
+ " Do the business:
+ %s/\s\+$//e
+ " Clean up: restore previous search history, and cursor position
+ let @/=_s
+ call cursor(l, c)
+endfunction
+command! StripTrailingWhitespaces call <SID>StripTrailingWhitespaces()
+nmap ,w :StripTrailingWhitespaces<CR>
+" ================ text wrapping ================
+" http://vimcasts.org/episodes/soft-wrapping-text/
+function! SetupWrapping()
+ set wrap linebreak nolist
+ set showbreak=…
+endfunction
+
+" TODO: this should happen automatically for certain file types (e.g. markdown)
+command! -nargs=* Wrap :call SetupWrapping()<CR>
+
+vmap <D-j> gj
+vmap <D-k> gk
+vmap <D-$> g$
+vmap <D-^> g^
+vmap <D-0> g^
+nmap <D-j> gj
+nmap <D-k> gk
+nmap <D-$> g$
+nmap <D-^> g^
+nmap <D-0> g^
+
diff --git a/.vim/custom-settings.vim b/.vim/custom-settings.vim
new file mode 100644
index 0000000..9233b35
--- /dev/null
+++ b/.vim/custom-settings.vim
@@ -0,0 +1,240 @@
+" ================ keymap settings ================
+" ========================================
+" General vim sanity improvements
+" ========================================
+"
+"
+" alias yw to yank the entire word 'yank inner word'
+" even if the cursor is halfway inside the word
+" FIXME: will not properly repeat when you use a dot (tie into repeat.vim)
+nnoremap ,yw yiww
+
+" ,ow = 'overwrite word', replace a word with what's in the yank buffer
+" FIXME: will not properly repeat when you use a dot (tie into repeat.vim)
+nnoremap ,ow "_diwhp
+
+"make Y consistent with C and D
+nnoremap Y y$
+function! YRRunAfterMaps()
+ nnoremap Y :<C-U>YRYankCount 'y$'<CR>
+endfunction
+
+" Make 0 go to the first character rather than the beginning
+" of the line. When we're programming, we're almost always
+" interested in working with text rather than empty space. If
+" you want the traditional beginning of line, use ^
+nnoremap 0 ^
+nnoremap ^ 0
+
+" ========================================
+" RSI Prevention - keyboard remaps
+" ========================================
+" Certain things we do every day as programmers stress
+" out our hands. For example, typing underscores and
+" dashes are very common, and in position that require
+" a lot of hand movement. Vim to the rescue
+"
+" Now using the middle finger of either hand you can type
+" underscores with apple-k or apple-d, and add Shift
+" to type dashes
+imap <silent> <D-k> _
+imap <silent> <D-d> _
+imap <silent> <D-K> -
+imap <silent> <D-D> -
+
+" ,# Surround a word with #{ruby interpolation}
+map ,# ysiw#
+vmap ,# c#{<C-R>"}<ESC>
+
+" ," Surround a word with "quotes"
+map ," ysiw"
+vmap ," c"<C-R>""<ESC>
+
+" ,' Surround a word with 'single quotes'
+map ,' ysiw'
+vmap ,' c'<C-R>"'<ESC>
+
+" ,) or ,( Surround a word with (parens)
+" The difference is in whether a space is put in
+map ,( ysiw(
+map ,) ysiw)
+vmap ,( c( <C-R>" )<ESC>
+vmap ,) c(<C-R>")<ESC>
+
+" ,[ Surround a word with [brackets]
+map ,] ysiw]
+map ,[ ysiw[
+vmap ,[ c[ <C-R>" ]<ESC>
+vmap ,] c[<C-R>"]<ESC>
+
+" ,{ Surround a word with {braces}
+map ,} ysiw}
+map ,{ ysiw{
+vmap ,} c{ <C-R>" }<ESC>
+vmap ,{ c{<C-R>"}<ESC>
+
+map ,` ysiw`
+
+" gary bernhardt's hashrocket
+imap <c-l> <space>=><space>
+
+" Change inside various enclosures with Cmd-" and Cmd-'
+" The f makes it find the enclosure so you don't have
+" to be standing inside it
+nnoremap <D-'> f'ci'
+nnoremap <D-"> f"ci"
+nnoremap <D-(> f(ci(
+nnoremap <D-)> f)ci)
+nnoremap <D-[> f[ci[
+nnoremap <D-]> f]ci]
+
+"Go to last edit location with ,.
+nnoremap ,. '.
+
+"When typing a string, your quotes auto complete. Move past the quote
+"while still in insert mode by hitting Ctrl-a. Example:
+"
+" type 'foo<c-a>
+"
+" the first quote will autoclose so you'll get 'foo' and hitting <c-a> will
+" put the cursor right after the quote
+imap <C-a> <esc>wa
+
+" ==== NERD tree
+" Cmd-Shift-N for nerd tree
+nmap <D-N> :NERDTreeToggle<CR>
+" Open the project tree and expose current file in the nerdtree with Ctrl-\
+nnoremap <silent> <C-\> :NERDTreeFind<CR>:vertical res 30<CR>
+
+" ,q to toggle quickfix window (where you have stuff like Ag)
+" ,oq to open it back up (rare)
+nmap <silent> ,qc :cclose<CR>
+nmap <silent> ,qo :copen<CR>
+
+" move up/down quickly by using Cmd-j, Cmd-k
+" which will move us around by functions
+nnoremap <silent> <D-j> }
+nnoremap <silent> <D-k> {
+autocmd FileType ruby map <buffer> <D-j> ]m
+autocmd FileType ruby map <buffer> <D-k> [m
+autocmd FileType rspec map <buffer> <D-j> }
+autocmd FileType rspec map <buffer> <D-k> {
+autocmd FileType javascript map <buffer> <D-k> }
+autocmd FileType javascript map <buffer> <D-j> {
+
+
+" Command-/ to toggle comments
+map <D-/> :TComment<CR>
+imap <D-/> <Esc>:TComment<CR>i
+
+
+"Move back and forth through previous and next buffers
+"with ,z and ,x
+nnoremap <silent> ,z :bp<CR>
+nnoremap <silent> ,x :bn<CR>
+
+" ==============================
+" Window/Tab/Split Manipulation
+" ==============================
+" Move between split windows by using the four directions H, L, I, N
+nnoremap <silent> <C-h> <C-w>h
+nnoremap <silent> <C-l> <C-w>l
+nnoremap <silent> <C-k> <C-w>k
+nnoremap <silent> <C-j> <C-w>j
+
+" Make gf (go to file) create the file, if not existent
+nnoremap gf :e<cfile><CR>
+nnoremap <C-w>f :sp +e<cfile><CR>
+nnoremap <C-w>gf :tabe<cfile><CR>
+
+" Zoom in
+map <silent> ,gz <C-w>o
+
+" Use numbers to pick the tab you want (like iTerm)
+map <silent> <D-1> :tabn 1<cr>
+map <silent> <D-2> :tabn 2<cr>
+map <silent> <D-3> :tabn 3<cr>
+map <silent> <D-4> :tabn 4<cr>
+map <silent> <D-5> :tabn 5<cr>
+map <silent> <D-6> :tabn 6<cr>
+map <silent> <D-7> :tabn 7<cr>
+map <silent> <D-8> :tabn 8<cr>
+map <silent> <D-9> :tabn 9<cr>
+
+" Create window splits easier. The default
+" way is Ctrl-w,v and Ctrl-w,s. I remap
+" this to vv and ss
+nnoremap <silent> vv <C-w>v
+nnoremap <silent> ss <C-w>s
+
+" Resize windows with arrow keys
+nnoremap <D-Up> <C-w>+
+nnoremap <D-Down> <C-w>-
+nnoremap <D-Left> <C-w><
+nnoremap <D-Right> <C-w>>
+
+" create <%= foo %> erb tags using Ctrl-k in edit mode
+imap <silent> <C-K> <%= %><Esc>3hi
+
+" create <%= foo %> erb tags using Ctrl-j in edit mode
+imap <silent> <C-J> <% %><Esc>2hi
+
+" ============================
+" Shortcuts for everyday tasks
+" ============================
+
+" copy current filename into system clipboard - mnemonic: (c)urrent(f)ilename
+" this is helpful to paste someone the path you're looking at
+nnoremap <silent> ,cf :let @* = expand("%:~")<CR>
+nnoremap <silent> ,cn :let @* = expand("%:t")<CR>
+
+"Clear current search highlight by double tapping //
+nmap <silent> // :nohlsearch<CR>
+
+"(v)im (c)ommand - execute current line as a vim command
+nmap <silent> ,vc yy:<C-f>p<C-c><CR>
+
+"(v)im (r)eload
+nmap <silent> ,vr :so %<CR>
+
+" Type ,hl to toggle highlighting on/off, and show current value.
+noremap ,hl :set hlsearch! hlsearch?<CR>
+
+" These are very similar keys. Typing 'a will jump to the line in the current
+" file marked with ma. However, `a will jump to the line and column marked
+" with ma. It’s more useful in any case I can imagine, but it’s located way
+" off in the corner of the keyboard. The best way to handle this is just to
+" swap them: http://items.sjbach.com/319/configuring-vim-right
+nnoremap ' `
+nnoremap ` '
+
+" ============================
+" Tabularize - alignment
+" ============================
+" Hit Cmd-Shift-A then type a character you want to align by
+nmap <D-A> :Tabularize /
+vmap <D-A> :Tabularize /
+
+" ============================
+" SplitJoin plugin
+" ============================
+nmap sj :SplitjoinSplit<cr>
+nmap sk :SplitjoinJoin<cr>
+
+" Get the current highlight group. Useful for then remapping the color
+map ,hi :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" . " FG:" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"fg#")<CR>
+
+" Source current file Cmd-% (good for vim development)
+map <D-%> :so %<CR>
+
+" ,hp = html preview
+map <silent> ,hp :!open -a Safari %<CR><CR>
+" ================ search settings ================
+" ================ Search Settings =================
+
+set incsearch " Find the next match as we type the search
+set hlsearch " Hilight searches by default
+set viminfo='100,f1 " Save up to 100 marks, enable capital marks
+set ignorecase " Ignore case when searching...
+set smartcase " ...unless we type a capital
+
diff --git a/.vimrc b/.vimrc
new file mode 100644
index 0000000..4c345ca
--- /dev/null
+++ b/.vimrc
@@ -0,0 +1,124 @@
+" Use Vim settings |
+set nocompatible | filetype indent plugin on | syn on
+
+" ================ General Config ====================
+
+set number "Line numbers are good
+set backspace=indent,eol,start "Allow backspace in insert mode
+set history=1000 "Store lots of :cmdline history
+set showcmd "Show incomplete cmds down the bottom
+set showmode "Show current mode down the bottom
+set gcr=a:blinkon0 "Disable cursor blink
+set visualbell "No sounds
+set autoread "Reload files changed outside vim
+set cursorline "Show cursorline
+
+" This makes vim act like all other editors, buffers can
+" exist in the background without being in a window.
+" http://items.sjbach.com/319/configuring-vim-right
+set hidden
+
+"turn on syntax highlighting
+syntax on
+
+"set utf-8 as default encoding
+set encoding=utf-8
+
+" Change leader to a comma because the backslash is too far away
+" That means all \x commands turn into ,x
+" The mapleader has to be set before vundle starts loading all
+" the plugins.
+let mapleader=","
+
+" ================ Turn Off Swap Files ==============
+
+set noswapfile
+set nobackup
+set nowb
+
+
+" ================ Persistent Undo ==================
+
+" Keep undo history across sessions, by storing in file.
+" Only works all the time.
+if has('persistent_undo')
+ silent !mkdir ~/.vim/backups > /dev/null 2>&1
+ set undodir=~/.vim/backups
+ set undofile
+endif
+
+" ================ Indentation ======================
+
+set autoindent
+set smartindent
+set smarttab
+set shiftwidth=2
+set softtabstop=2
+set tabstop=2
+set expandtab
+
+filetype plugin on
+filetype indent on
+
+" Display tabs and trailing spaces visually
+set list listchars=tab:\ \ ,trail:·
+
+set nowrap "Don't wrap lines
+set linebreak "Wrap lines at convenient points
+
+" ================ Folds ============================
+
+set foldmethod=indent "fold based on indent
+set foldnestmax=3 "deepest fold is 3 levels
+set nofoldenable "dont fold by default
+
+" ================ Completion =======================
+
+set wildmode=list:longest
+set wildmenu "enable ctrl-n and ctrl-p to scroll thru matches
+set wildignore=*.o,*.obj,*~ "stuff to ignore when tab completing
+set wildignore+=*vim/backups*
+set wildignore+=*sass-cache*
+set wildignore+=*DS_Store*
+set wildignore+=vendor/rails/**
+set wildignore+=vendor/cache/**
+set wildignore+=*.gem
+set wildignore+=log/**
+set wildignore+=tmp/**
+set wildignore+=*.png,*.jpg,*.gif
+
+" ================ Scrolling ========================
+
+set scrolloff=8 "Start scrolling when we're 8 lines away from margins
+set sidescrolloff=15
+set sidescroll=1
+
+" ================ Vim-Addon-Manager ========================
+
+fun! SetupVAM()
+ let c = get(g:, 'vim_addon_manager', {})
+ let g:vim_addon_manager = c
+ let c.plugin_root_dir = expand('$HOME', 1) . '/.vim/vim-addons'
+ " most used options you may want to use:
+ " let c.log_to_buf = 1
+ " let c.auto_install = 0
+ let &rtp.=(empty(&rtp)?'':',').c.plugin_root_dir.'/vim-addon-manager'
+ if !isdirectory(c.plugin_root_dir.'/vim-addon-manager/autoload')
+ execute '!git clone --depth=1 git://github.com/MarcWeber/vim-addon-manager '
+ \ shellescape(c.plugin_root_dir.'/vim-addon-manager', 1)
+ endif
+
+ " This provides the VAMActivate command, you could be passing plugin names, too
+ call vam#ActivateAddons([], {})
+endfun
+call SetupVAM()
+
+" ================ Addons and their settings ========================
+so ~/.vim/addons.vim " addons
+so ~/.vim/addons-settings.vim " addon settings
+so ~/.vim/custom-settings.vim " custom settings
+so ~/.vim/custom-functions.vim " custom functions
+so ~/.scvimrc
+
+" colors
+colorscheme pablo
diff --git a/.vundles.local b/.vundles.local
new file mode 100644
index 0000000..06f3c6c
--- /dev/null
+++ b/.vundles.local
@@ -0,0 +1,28 @@
+" Python
+Bundle "klen/python-mode.git"
+" Wordpress
+Bundle "vim-scripts/VimRepress"
+" systemd
+Bundle "Matt-Stevens/vim-systemd-syntax"
+" processing
+Bundle "sophacles/vim-processing"
+"latex
+"Bundle "vim-scripts/LaTeX-Suite-aka-Vim-LaTeX"
+"octave
+Bundle "sjas/octave.vim"
+" netrw
+Bundle "vim-scripts/netrw.vim"
+" vim-arduino-syntax
+Bundle "sudar/vim-arduino-syntax"
+" vim-arduino-snippets
+Bundle "sudar/vim-arduino-snippets"
+" vim-iptables
+Bundle "vim-scripts/iptables"
+" gnupg
+Bundle "jamessan/vim-gnupg"
+" Latex suite
+Bundle "gerw/vim-latex-suite"
+" graphviz
+Bundle "wannesm/wmgraphviz.vim.git"
+" YouCompleteMe
+Bundle "Valloric/YouCompleteMe.git"
diff --git a/.xinitrc b/.xinitrc
new file mode 100755
index 0000000..8c51067
--- /dev/null
+++ b/.xinitrc
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Disable touchpad while typing using syndaemon
+#if [[ -f /usr/bin/syndaemon ]]; then
+# syndaemon -t -k -i 2 &
+#fi
+
+#X11 keyboard maps
+setxkbmap -layout de
+
+#setxkbmap -option 'caps:escape'
+#setxkbmap -option 'ctrl:swapcaps'
+#setxkbmap -option 'ctrl:nocaps'
+
+# turn bell off
+xset b off
+
+# use .Xmodmap
+if [[ -f ~/.Xmodmap ]]; then
+ /usr/bin/xmodmap ~/.Xmodmap
+fi
+
+# use .Xresources
+if [[ -f ~/.Xresources ]];then
+ /usr/bin/xrdb ~/.Xresources
+fi
diff --git a/.xprofile b/.xprofile
new file mode 100644
index 0000000..dc372e2
--- /dev/null
+++ b/.xprofile
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+setxkbmap de &
+
+if [ -x "$HOME/bin/lid-switch-action" ] && [ "$HOSTNAME" = dvzrv ]; then
+ $HOME/bin/lid-switch-action login &
+fi
+
+if [ -x /usr/bin/termite ]; then
+ termite &
+fi
diff --git a/.zlogin b/.zlogin
new file mode 100644
index 0000000..32f28cf
--- /dev/null
+++ b/.zlogin
@@ -0,0 +1,22 @@
+#
+# Executes commands at login post-zshrc.
+#
+# Authors:
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+#
+
+# Execute code that does not affect the current session in the background.
+{
+ # Compile the completion dump to increase startup speed.
+ zcompdump="${ZDOTDIR:-$HOME}/.zcompdump"
+ if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
+ zcompile "$zcompdump"
+ fi
+} &!
+
+# Print a random, hopefully interesting, adage.
+if (( $+commands[fortune] )); then
+ fortune -a
+ print
+fi
+
diff --git a/.zlogout b/.zlogout
new file mode 100644
index 0000000..92e4350
--- /dev/null
+++ b/.zlogout
@@ -0,0 +1,3 @@
+#
+# Commands executed by zsh on logout.
+#
diff --git a/.zprezto b/.zprezto
new file mode 160000
+Subproject c34098af20cafdf016f68f3e7f612ed60ca93aa
diff --git a/.zpreztorc b/.zpreztorc
new file mode 100644
index 0000000..663ae54
--- /dev/null
+++ b/.zpreztorc
@@ -0,0 +1,122 @@
+#
+# Sets Prezto options.
+#
+# Authors:
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+#
+
+#
+# General
+#
+
+# Set case-sensitivity for completion, history lookup, etc.
+zstyle ':prezto:*:*' case-sensitive 'no'
+
+# Color output (auto set to 'no' on dumb terminals).
+zstyle ':prezto:*:*' color 'yes'
+
+# Set the Zsh modules to load (man zshmodules).
+# zstyle ':prezto:load' zmodule 'attr' 'stat'
+
+# Set the Zsh functions to load (man zshcontrib).
+# zstyle ':prezto:load' zfunction 'zargs' 'zmv'
+
+# Set the Prezto modules to load (browse modules).
+# The order matters.
+zstyle ':prezto:load' pmodule \
+ 'environment' \
+ 'terminal' \
+ 'editor' \
+ 'history' \
+ 'directory' \
+ 'utility' \
+ 'completion' \
+ 'archive' \
+ 'syntax-highlighting' \
+ 'history-substring-search' \
+ 'prompt'
+
+#
+# Editor
+#
+
+# Set the key mapping style to 'emacs' or 'vi'.
+zstyle ':prezto:module:editor' key-bindings 'vi'
+
+# Auto convert .... to ../..
+zstyle ':prezto:module:editor' dot-expansion 'yes'
+
+#
+# Git
+#
+
+# Ignore submodules when they are 'dirty', 'untracked', 'all', or 'none'.
+# zstyle ':prezto:module:git:status:ignore' submodules 'all'
+
+#
+# GNU Utility
+#
+
+# Set the command prefix on non-GNU systems.
+# zstyle ':prezto:module:gnu-utility' prefix 'g'
+
+#
+# Pacman
+#
+
+# Set the Pacman frontend.
+# zstyle ':prezto:module:pacman' frontend 'yaourt'
+
+#
+# Prompt
+#
+
+# Set the prompt theme to load.
+# Setting it to 'random' loads a random theme.
+# Auto set to 'off' on dumb terminals.
+zstyle ':prezto:module:prompt' theme 'steeef'
+
+#
+# Screen
+#
+
+# Auto start a session when Zsh is launched.
+# zstyle ':prezto:module:screen' auto-start 'yes'
+
+#
+# GPG-Agent
+#
+
+# Enable SSH-Agent protocol emulation.
+# zstyle ':prezto:module:gpg-agent' ssh-support 'yes'
+
+#
+# SSH-Agent
+#
+
+# Enable ssh-agent forwarding.
+#zstyle ':prezto:module:ssh-agent' forwarding 'yes'
+
+# Set ssh-agent identities to load.
+# zstyle ':prezto:module:ssh-agent' identities 'id_rsa' 'id_rsa2' 'id_github'
+
+#
+# Syntax Highlighting
+#
+
+# Set syntax highlighters.
+# By default main, brackets, and cursor are enabled.
+zstyle ':prezto:module:syntax-highlighting' highlighters \
+ 'main' \
+ 'brackets' \
+ 'pattern' \
+ 'cursor' \
+ 'root'
+
+#
+# Terminal
+#
+
+# Auto set the tab and window titles.
+zstyle ':prezto:module:terminal' auto-title 'yes'
+
diff --git a/.zprofile b/.zprofile
new file mode 100644
index 0000000..45cdd5e
--- /dev/null
+++ b/.zprofile
@@ -0,0 +1,52 @@
+#
+# Executes commands at login pre-zshrc.
+
+#
+# Paths
+#
+
+# Ensure path arrays do not contain duplicates.
+typeset -gU cdpath fpath mailpath path
+
+# Set the the list of directories that cd searches.
+# cdpath=(
+# $cdpath
+# )
+
+# Set the list of directories that Zsh searches for programs.
+path=(
+ /usr/local/{bin,sbin}
+ $path
+)
+
+#
+# Less
+#
+
+# Set the default Less options.
+# Mouse-wheel scrolling has been disabled by -X (disable screen clearing).
+# Remove -X and -F (exit if the content fits on one screen) to enable it.
+export LESS='-F -g -i -M -R -S -w -X -z-4'
+
+# Set the Less input preprocessor.
+if (( $+commands[lesspipe.sh] )); then
+ export LESSOPEN='| /usr/bin/env lesspipe.sh %s 2>&-'
+fi
+
+#
+# Temporary Files
+#
+
+if [[ ! -d "$TMPDIR" ]]; then
+ export TMPDIR="/tmp/$USER"
+ mkdir -p -m 700 "$TMPDIR"
+fi
+
+TMPPREFIX="${TMPDIR%/}/zsh"
+if [[ ! -d "$TMPPREFIX" ]]; then
+ mkdir -p "$TMPPREFIX"
+fi
+
+# dircolors
+# Set colors for ls output
+eval $(dircolors ~/.dircolors)
diff --git a/.zsh.after/aliases.zsh b/.zsh.after/aliases.zsh
new file mode 100644
index 0000000..6c0395f
--- /dev/null
+++ b/.zsh.after/aliases.zsh
@@ -0,0 +1,228 @@
+# < ZSH ALIASES
+## EXTENSIONS
+alias -s pdf='mupdf'
+alias -s ps='mupdf'
+alias -s jpg='feh'
+alias -s png='feh'
+alias -s gif='viewnior'
+alias -s gz='tar xvfz'
+alias -s tgz='tar xvfz'
+alias -s bz2='tar xvfj'
+alias -s tbz='tar xvfj'
+alias -s tlz='tar --lzma -xvf'
+alias -s rar='unrar x'
+alias -s tex='mkpdf'
+
+##LS
+alias ls='ls --group-directories-first --color=auto'
+alias ll="ls -lh"
+alias la="ls -a"
+alias lal="ls -alh"
+alias ls='ls --group-directories-first --color=auto'
+alias l='ls'
+alias lt='ls -tr'
+alias ll='ls -l'
+alias llh='ls -lh'
+alias llt='ls -ltr'
+alias la='ls -A'
+alias lla='ls -lA'
+alias lsfw='ls -lah /dev|grep fw'
+alias lsvid='ls -lah /dev|grep video'
+
+#MPLAYER
+alias mplayer='mplayer -ao jack,pulse,alsa'
+
+##DU
+alias du1='du -hd1'
+
+##FEH
+alias feh='feh -Z -g 1920x1200 -b "black" -S "filename"'
+
+##GIT
+alias gsi='git submodule update --init --recursive'
+alias gsu='git submodule update --recursive'
+
+##TREE
+alias tree='tree -aC'
+#grep aliases (with excluded directories)
+alias grepdot='grep -rI --exclude-dir=".steam" --exclude-dir=".local" --exclude-dir=".thunderbird" --exclude-dir=".mozilla" --exclude-dir="git" --exclude-dir=".rvm" --exclude-dir=".log" --exclude-dir=".dropbox-dist" --exclude-dir=".config" '
+
+
+##SYSTEMD
+#tree
+alias psc='ps xawf -eo pid,user,cgroup,args'
+alias treeg='tree -d /cgroup/systemd/'
+alias sdptree='tree -aC /usr/lib/systemd/'
+alias sdstree='tree -aC /etc/systemd/'
+alias sdutree='tree -aC $HOME/.config/systemd/'
+#journalctl
+alias sdj='sudo journalctl'
+alias sdjf='sudo journalctl -f' #Follow the messages
+alias sdjb='sudo journalctl -b' #Show only messages from this boot
+alias sdju='sudo journalctl -u' #Show messages of only the specified unit
+alias sdjk='journalctl _TRANSPORT=kernel' #Show kernel ring buffer
+alias sdjp='sudo journalctl _PID=' #Show all messages of specified process (PID)
+alias sdjgrep='sudo journalctl -an1000 |grep ' #Use a grep command to search through journal
+#systemd system services
+alias sdsstart='sudo systemctl start'
+alias sdsstop='sudo systemctl stop'
+alias sdsrestart='sudo systemctl restart'
+alias sdsreload='sudo systemctl reload'
+alias sdsenable='sudo systemctl enable'
+alias sdsdisable='sudo systemctl disable'
+alias sdsreenable='sudo systemctl reenable'
+alias sdsisactive='sudo systemctl is-active'
+alias sdsisenabled='sudo systemctl is-enabled'
+alias sdsstat='sudo systemctl status --all --full'
+alias sdswants='sudo systemctl show -p "Wants"'
+alias sdswantedby='sudo systemctl show -p "WantedBy"'
+alias sdsrequires='sudo systemctl show -p "Requires"'
+alias sdsrequiredby='sudo systemctl show -p "RequiredBy"'
+alias sdsconflicts='sudo systemctl show -p "Conflicts"'
+alias sdsconflictedby='sudo systemctl show -p "ConflictedBy"'
+alias sdsbefore='sudo systemctl show -p "Before"'
+alias sdsafter='sudo systemctl show -p "After"'
+alias sdst='sudo systemctl list-timers'
+alias sdsreload='sudo systemctl daemon-reload'
+alias sds='sudo systemctl --all'
+alias sdserr='sudo systemctl --all --full |grep error'
+alias sdsfail='sudo systemctl --all --full |grep failed'
+alias sdsmask='sudo systemctl mask'
+alias sdsunmask='sudo systemctl unmask'
+#systemd user services
+alias sdustart='systemctl --user start'
+alias sdustop='systemctl --user stop'
+alias sdurestart='systemctl --user restart'
+alias sdureload='systemctl --user reload'
+alias sduenable='systemctl --user enable'
+alias sdudisable='systemctl --user disable'
+alias sdureenable='systemctl --user reenable'
+alias sduisactive='systemctl --user is-active'
+alias sduisenabled='systemctl --user is-enabled'
+alias sdustat='systemctl --user status --all --full'
+alias sduwants='systemctl --user show -p "Wants"'
+alias sduwantedby='systemctl --user show -p "WantedBy"'
+alias sdurequires='systemctl --user show -p "Requires"'
+alias sdurequiredby='systemctl --user show -p "RequiredBy"'
+alias sduconflicts='systemctl --user show -p "Conflicts"'
+alias sduconflictedby='systemctl --user show -p "ConflictedBy"'
+alias sdubefore='systemctl --user show -p "Before"'
+alias sduafter='systemctl --user show -p "After"'
+alias sdut='systemctl --user list-timers'
+alias sdureload='systemctl --user daemon-reload'
+#alias sdu='systemctl --user'
+alias sduerr='systemctl --user --all --full |grep error'
+alias sdufail='systemctl --user --all --full |grep failed'
+alias sdumask='sudo systemctl --user mask'
+alias sduunmask='sudo systemctl --user unmask'
+#poweroff/reboot/isolate
+alias sdiso='sudo systemctl isolate '
+alias sdreboot='sudo systemctl reboot'
+alias sdpoweroff='sudo systemctl poweroff'
+alias sdsuspend='sudo systemctl suspend'
+#systemd bootchart
+alias sda='systemd-analyze'
+alias sdab='systemd-analyze blame'
+if [ -x /usr/bin/xsvg ]; then
+ alias sdap='xsvg $HOME/ownCloud/photos/systemd/sdap-$HOST.svg'
+fi
+
+##PACMAN
+alias paclid="sudo pacman -Qi | sed '/^Depends On/,/^Required By/{ s/^Required By.*$//; H; d }; /^Name/!d; /^Name/{ n;x;}'| sed '/^$/s//==================================================================================/'"
+alias pacsize="pacman -Qi | awk '/^Name/ {pkg=\$3} /Size/ {print \$4\$5,pkg}' | sort -n" #Show all packages by size
+alias pacall="sudo pacman -Qi | awk '/^Name/ {pkg=\$3} /Version/ {ver=\$3} /Size/ {size=\$4\$5} {print pkg,ver,size}' | uniq" #All packages uniquely with name, version, size
+alias pacup='sudo pacman -Syu' #Synchronize with repositories before upgrading packages that are out of date on the local system.
+alias pac='sudo pacman -S' #Install specific package(s) from the repositories
+alias pacu='sudo pacman -U' #Install specific package not from the repositories but from a file
+alias pacre='sudo pacman -R' #Remove the specified package(s), retaining its configuration(s) and required dependencies
+alias pacrem='sudo pacman -Rns' #Remove specified package(s), its configuration(s) and unneeded depends
+alias pacsearch="pacman -Sl | cut -d' ' -f2 | grep " #Search through all available packages in repo
+alias pacname="sudo pacman -Qi|grep Name|grep " #Search through names of packages by string
+alias pacri='pacman -Si' #Display information about a given package in the repositories
+alias pacrs='pacman -Ss' #Search for package(s) in the repositories
+alias pacli='pacman -Qi' #Display information about a given package in the local database
+alias pacls='pacman -Qs' #Search for package(s) in the local database
+alias pacorph='sudo pacman -Qdt' #Search for orphan packages
+alias paclal='sudo pacman -Ql' #List installed files of a given package
+alias pacg='pacman -Sg' #List all groups or all packages in specified group
+alias pacclean='sudo pacman -Sc' #Remove all packages from local repository, not installed atm, remove all unused repos
+alias pacconf='sudo find /etc -name "*.pac*" -type f -print' #Search for .pacnew and .pacsave files
+alias pacfile='sudo pacman -Qo' # Find out what package a give file belongs to
+alias pacupd='sudo pacman -Sy && sudo abs' #Update and refresh the local package and ABS databases against repositories
+alias pacdep='sudo pacman -S --asdeps' #Install given package(s) as dependencies of another package
+alias pacmir='sudo pacman -Syy' #Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
+alias packup='comm -23 <(pacman -Qeq|sort) <(pacman -Qmq|sort) > $HOME/Dropbox/sync/archlinux/pkglist-$HOST' #Backup the current list of non-local packages
+alias pacret='sudo pacman -S $(< $HOME/Dropbox/sync/archlinux/pkglist-$HOST)' #Install from the backup list
+alias pacredown='sudo pacman -S $(comm -23 <(pacman -Qeq) <(pacman -Qmq))' #Redownload all installed packages (minus AUR)
+alias pacdis='sudo pacman-disowned > /tmp/$USERNAME/non-pkg-$HOST' #Getting a list of files not owned by any package
+alias packimp='sudo pacman-key -r ' #Import a key ID to the pacman keyring
+alias packsign='sudo pacman-key --lsign-key ' #Sign a key ID after importing it to the keyring
+alias packref='sudo pacman-key --refresh-keys' #Refresh the list of master keys
+
+##YAOURT
+alias yaup='yaourt -Syu --devel --aur' #Updates all locally installed repository, AUR and git packages
+alias yadb='yaourt -B $HOME/ownCloud/backup/settings/' #Backs up the yaourt database
+
+##XCLIP
+alias cpx="xclip -selection clipboard -display :0"
+
+##CD
+alias cd.sds="cd /etc/systemd/system"
+alias cd.sdp="cd /usr/lib/systemd/system"
+alias cd.courses="cd $HOME/ownCloud/documents/university/tu-berlin/courses"
+alias cd.backup="cd $HOME/ownCloud/backup"
+alias cd.scpref="cd $HOME/.config/SuperCollider"
+
+##OCTAVE
+#alias octave="octave --silent --braindead --force-gui"
+alias octave="octave --force-gui"
+
+##MATLAB
+alias matlabc="matlab -nodesktop -nosplash"
+
+##NMCLI
+alias nmup="sudo nmcli con up id"
+alias nmdown="sudo nmcli con down id"
+alias nmstat="sudo nmcli con show --active"
+alias nmlist="sudo nmcli con list"
+alias nmdev="sudo nmcli dev"
+
+#SSH
+alias pool='ssh pool -Y'
+alias sshtunnel="ssh -ND 44350 -v -p 46399 dave@frqb.zapto.org" # tunnel through home
+alias frqtun="ssh -ND 44350 -v frq"
+alias scp=scp
+
+#KEYCHAIN
+alias keyflush="keychain --clear && keychain -k mine"
+
+#PULSEAUDIO
+alias pak='pulseaudio --kill'
+alias pas='pulseaudio --start'
+alias paflush='pax11publish -r'
+alias bthp="pactl load-module module-bluetooth-device address='00:1B:66:01:6C:D1'" #load bluetooth headphone module for pulseaudio
+
+#PYTHON
+alias pyserv='python -m http.server' # start a python http server
+
+# VDIRSYNCER
+alias vsync="vdirsyncer sync"
+
+#WOL
+alias woldave_in='wol -i homey 00:15:f2:e0:e0:c6' #wake up homey
+alias woldave_ex='wol -p X -i frqb.zapto.org 00:15:f2:e0:e0:c6' #wake up homey via
+
+## OVERRIDES
+# Colorize grep output
+alias grep='grep --color=auto --exclude-dir=.git'
+alias psgrep='ps aux | grep -v "grep"| grep $1'
+alias greptodo='grep -R "TODO" .'
+alias exit="clear; exit"
+alias du='du -h'
+alias .='source'
+
+
+## HELP
+alias helpdd='echo dd if=bla | pv -s 10M | dd of=blob'
+
+# ZSH ALIASES >
diff --git a/.zsh.after/apt b/.zsh.after/apt
new file mode 100644
index 0000000..e1942cf
--- /dev/null
+++ b/.zsh.after/apt
@@ -0,0 +1,37 @@
+#TODO: add pacman to apt-get conversion for all pacman aliases
+alias paclid="sudo pacman -Qi | sed '/^Depends On/,/^Required By/{ s/^Required By.*$//; H; d }; /^Name/!d; /^Name/{ n;x;}'| sed '/^$/s//==================================================================================/'"
+alias pacsize="pacman -Qi | awk '/^Name/ {pkg=\$3} /Size/ {print \$4\$5,pkg}' | sort -n" #All packages by size
+alias pacall="sudo pacman -Qi | awk '/^Name/ {pkg=\$3} /Version/ {ver=\$3} /Size/ {size=\$4\$5} {print pkg,ver,size}' | uniq" #All packages uniquely with name, version, size
+#alias pacremorph='sudo pacman -Rs $(pacman -Qtdq)' #Remove all orphaned packages
+alias pacup='sudo apt-get update && sudo apt-get upgrade' #'sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system.
+alias pac='sudo apt-get install ' #'sudo pacman -S' # Install specific package(s) from the repositories
+alias pacu='sudo pacman -U' # Install specific package not from the repositories but from a file
+alias pacre='sudo apt-get remove ' #'sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required ##dependencies
+alias pacrem='sudo apt-get purge ' #'sudo pacman -Rns' # Remove specified package(s), its configuration(s) and unneeded depends
+alias pacsearch="pacman -Sl | cut -d' ' -f2 | grep " # Search through all available packages in repo
+#alias pacname='dpkg -l|grep Name|grep ' #'sudo pacman -Qi|grep Name|grep ' #Search through names of packages by string
+alias pacri='sudo apt-get update && sudo apt-cache show ' #'pacman -Si' # Display information about a given package in the repositories
+alias pacrs='sudo apt-get update && sudo apt-cache search ' #'pacman -Ss' # Search for package(s) in the repositories
+alias pacli='dpkg -l ' #'pacman -Qi' # Display information about a given package in the local database
+alias pacls='dpkg -l|grep ' #'pacman -Qs' # Search for package(s) in the local database
+alias pacorph='sudo pacman -Qdt' # Search for orphan packages
+alias paclal='dpkg -L' #'sudo pacman -Ql' # List installed files of a given package
+alias pacg='pacman -Sg' #List all groups or all packages in specified group
+alias pacclean='sudo pacman -Sc' # Remove all packages from local repository, not installed atm, remove all unused repos
+alias pacconf='sudo find /etc -name "*.pac*" -type f -print' # Search for .pacnew and .pacsave files
+alias pacfile='dpkg -S ' #'sudo pacman -Qo' # Find out what package a give file belongs to
+alias pacupd='sudo apt-get update' #'sudo pacman -Sy && sudo abs' # Update and refresh the local package and ABS databases against repositories
+alias pacdep='sudo pacman -S --asdeps' # Install given package(s) as dependencies of another package
+alias pacmir='sudo pacman -Syy' # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
+alias packup='comm -23 <(pacman -Qeq|sort) <(pacman -Qmq|sort) > $HOME/Dropbox/sync/archlinux/pkglist-$HOST' # Backup the current list of non-local packages
+alias pacret='sudo pacman -S $(< $HOME/Dropbox/sync/archlinux/pkglist-$HOST)' # Install from the backup list
+alias pacredown='sudo pacman -S $(comm -23 <(pacman -Qeq) <(pacman -Qmq))' # Redownload all installed packages (minus AUR)
+alias pacdis='rm -f $HOME/Dropbox/sync/archlinux/non-pkg-$HOST; sudo pacman-disowned > $HOME/Dropbox/sync/archlinux/non-pkg-$HOST' # Getting a list of files not owned by any package
+alias packimp='sudo pacman-key -r ' #Import a key ID to the pacman keyring
+alias packsign='sudo pacman-key --lsign-key ' #Sign a key ID after importing it to the keyring
+alias packref='sudo pacman-key --refresh-keys' #Refresh the list of master keys
+
+##Yaourt aliases
+alias yaup='yaourt -Syu --devel --aur' # Updates all locally installed repository, AUR and git packages
+alias yadb='yaourt -B $HOME/Dropbox/sync/archlinux' # Backs up the yaourt database
+alias ya='sudo apt-get -t testing install ' # Install packages from AUR/Testing
diff --git a/.zsh.after/export.zsh b/.zsh.after/export.zsh
new file mode 100644
index 0000000..866f20d
--- /dev/null
+++ b/.zsh.after/export.zsh
@@ -0,0 +1,49 @@
+# use xterm-color anywhere. Sane default for color and termite
+if [[ -n $TMUX ]];then
+ export TERM="screen-256color"
+else
+ export TERM="xterm-color"
+fi
+# use de_DE.UTF-8 to get 24h format
+export LC_TIME=de_DE.UTF-8
+
+# browser
+export BROWSER=firefox
+export REPORTTIME=5
+
+# if vimpager is installed, use it instead of less
+if [[ -x /usr/bin/vimpager ]];then
+ export PAGER="vimpager"
+else
+ export PAGER="less -j4"
+fi
+
+export GREP_COLOR="1;33"
+
+# let RVM ignore global ruby
+export rvm_ignore_gemrc_issues=1
+
+# Java
+# font settings/ renderings
+export _JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'
+# non-reparenting windows
+export _JAVA_AWT_WM_NONREPARENTING=1
+
+# GnuPG
+export GPG_TTY=$(tty)
+export GPG_AGENT_INFO=""
+
+# ssh-agent
+export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
+
+# tmux
+if [[ $UID -ne 0 ]]; then
+ export TMUX_TMPDIR="$XDG_RUNTIME_DIR/tmux/"
+fi
+
+# zsh
+if [[ $UID -eq 0 ]]; then
+ export TMOUT=360
+ readonly TMOUT
+ export TMOUT
+fi
diff --git a/.zsh.after/frqrec b/.zsh.after/frqrec
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.zsh.after/frqrec
diff --git a/.zsh.after/functions.zsh b/.zsh.after/functions.zsh
new file mode 100644
index 0000000..deb47ed
--- /dev/null
+++ b/.zsh.after/functions.zsh
@@ -0,0 +1,414 @@
+# < FUNCTIONS
+
+## BACKUP
+ function etcbackup() {
+ BACKUPDIR=$HOME/dropbox/backup
+ HOSTNAME=$(hostname)
+ FILE=$1
+
+ if [ -f $FILE ]
+ then
+ FILENAME=$(echo $FILE | sed 's/\///' | sed 's/\//_/g')
+ cp -v $FILE $BACKUPDIR/$HOSTNAME/$FILENAME
+ else
+ echo $FILE does not exist
+ fi
+ }
+
+## DOTFILES
+ function update_dot() {
+ for i in $HOME/dropbox/dot/[a-zA-Z]*;
+ do
+ if [ -f $i ];
+ then
+ echo file $i
+ base=`basename $i`
+ dst=$HOME/.$base
+ bak=$HOME/.${base}_bak
+
+ case $base in
+ vimrc|zshrc|*tgz)
+ echo nothing $i
+ ;;
+ *)
+ if [ -L $dst ];
+ then
+ rm $dst
+ else
+ mv $dst $bak
+ fi
+ ln -s $i $dst
+ ;;
+ esac
+
+ else
+ if [ -d $i ];
+ then
+ echo dir $i
+ base=`basename $i | sed 's/_/\//'`
+ dst=$HOME/.$base
+ bak=$HOME/.${base}_bak
+
+ case $base in
+ "vim")
+ echo nothing $i
+ ;;
+ *)
+ if [ -e $dst ];
+ then
+ if [ -L $dst ];
+ then
+ rm $dst
+ else
+ mv $dst $bak
+ fi
+ fi
+ ln -s $i $dst
+ ;;
+ esac
+ else
+ echo unknown $i
+ fi
+ fi
+ done
+ }
+
+## PDF/LATEX
+ function mkpdf()
+ {
+ pdflatex -shell-escape $1
+ # latex --output-format=pdf $1
+ name=`echo $1 | sed 's/.tex//'`
+ EXT=(aux log)
+ for i in $EXT;
+ do
+ rm -v $name.$i
+ done
+ }
+
+ function gsmerge()
+ {
+ target=$1
+ echo "target: $target"
+ sleep 1
+ shift
+
+ /usr/bin/gs \
+ -sDEVICE=pdfwrite \
+ -dCompatibilityLevel=1.4 \
+ -dNOPAUSE \
+ -dBATCH \
+ -sPAPERSIZE=a4 \
+ -sOUTPUTFILE=$target $*
+ }
+
+ function gsmerge_medium()
+ {
+ target=$1
+ echo "target: $target"
+ sleep 1
+ shift
+
+ /usr/bin/gs \
+ -sDEVICE=pdfwrite \
+ -dPDFSETTINGS=/ebook \
+ -dCompatibilityLevel=1.4 \
+ -dNOPAUSE \
+ -dBATCH \
+ -sPAPERSIZE=a4 \
+ -sOutputFile=$target $*
+ }
+
+## USABILITY
+ function lvim()
+ {
+ noglob vim $(echo $1 | awk -F":" '{ print $1" +"$2 }' )
+ }
+
+ function mkcd()
+ {
+ mkdir $1
+ cd $1
+ }
+
+ function cpwd()
+ {
+ pwd >! /tmp/pwd
+ }
+
+ function ppwd()
+ {
+ cd "`cat /tmp/pwd`"
+ }
+
+ function cp2wd()
+ {
+ cp $@ "`cat /tmp/pwd`"
+ }
+ function cpmk() {
+ DIR=${*: -1}
+ [ ! -d $DIR ] && mkdir -p $DIR
+ cp $*
+
+ }
+
+ cpmd5(){
+ md5sum $1|cut -d ' ' -f 1|cpx
+ }
+
+
+function publish() {
+ [ -f $1 ] || return
+
+ DIR=`dirname $1`
+ FILE=`basename $1`
+ mute pushd $DIR
+ scp $FILE pool:public_html/
+ echo "http://www-pool.math.tu-berlin.de/~runge/$FILE"
+ echo "http://www-pool.math.tu-berlin.de/~runge/$FILE"|cpx
+ mute popd
+}
+
+function securium {
+ port=44350
+ chromium --proxy-server="socks://localhost:$port" &
+ exit
+}
+
+## ZSH
+refresh() {
+ source $HOME/.zshrc
+}
+
+
+## compress stuff
+tar_tgz() {
+ tar cvfz $1.tgz $1
+}
+tar_tbz() {
+ tar cvfj $1.tbz $1
+}
+tar_tlz() {
+ tar --lzma -cvf $1.tlz $1
+}
+tar_xz() {
+ tar cvfJ $1.tar.xz $1
+}
+
+#Decompress any given compressed file
+ex() {
+if [ -f $1 ] ; then
+ case $1 in
+ *.tar.bz2) tar xvjf $1 ;;
+ *.tar.gz) tar xvzf $1 ;;
+ *.bz2) bunzip2 $1 ;;
+ *.deb) ar vx $1
+ ;;
+ *.rar) unrar x $1 ;;
+ *.pgp) gpg -o ${1%".pgp"} -d $1 ;;
+ *.gpg) gpg -o ${1%".gpg"} -d $1 ;;
+ *.gz) gunzip $1 ;;
+ *.tar) tar xvf $1 ;;
+ *.tbz2) tar xvjf $1 ;;
+ *.tgz) tar xvzf $1 ;;
+ *.xz) tar xvJf $1 ;;
+ *.zip) unzip $1 ;;
+ *.Z) uncompress $1 ;;
+ *.7z) 7z x $1 ;;
+ *) echo "don't know how to extract '$1'..." ;;
+ esac
+else
+ echo "'$1' is not a valid file!"
+fi
+}
+
+ex2() {
+ if [ -f $2 ] ;then
+ echo "Extracting to '$2'"
+ local out = $2
+ else
+ echo "Extracting to '$( pwd )'"
+ local out = $( pwd )
+ fi
+ if [ -f $1 ] ;then
+ echo "'$1'"
+ else
+ echo "'$1' is not a valid file!"
+ fi
+}
+
+
+
+
+##CRYPTSETUP AND LUKS
+#TODO: Add possibility of opening/closing multiple devices at once
+lopen() {
+ case $HOST in
+ "homey")
+ case $1 in
+ "video-backup")
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD153WI_S1UVJ1VZ400797" $1
+ ;;
+ "video")
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD153WI_S1UVJ1VZ400798" $1
+ ;;
+ "photos")
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD501LJ_S0MUJ1FQ104574" $1
+ ;;
+ "music")
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD501LJ_S0MUJ1FPB87663" $1
+ ;;
+ "music-external")
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE152RS" $1
+ ;;
+ "photos-external")
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE457TN" $1
+ ;;
+ esac
+ ;;
+ "dvzrv" | "trvlr")
+ case $1 in
+ "music")
+ if [ -L "/dev/disk/by-uuid/e0b19c7d-9e90-4117-aea1-7e4b321d9d5a" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-uuid/e0b19c7d-9e90-4117-aea1-7e4b321d9d5a" $1
+ elif [ -L "/dev/disk/by-id/ata-ST9500325AS_6VE152RS" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE152RS" $1
+ elif [ -L "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE36KXD-0:0" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE36KXD-0:0" $1
+ else
+ echo "Error! Device $1 is not available"
+ exit 1
+ fi
+ ;;
+ "photos")
+ if [ -L "/dev/disk/by-uuid/b3c5a842-474b-4c2f-a246-abebe1da3450" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-uuid/b3c5a842-474b-4c2f-a246-abebe1da3450" $1
+ elif [ -L "/dev/disk/by-id/ata-ST9500325AS_6VE457TN " ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE457TN" $1
+ elif [ -L "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE4LCR0-0:0" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE4LCR0-0:0" $1
+ else
+ echo "Error! Device $1 is not available"
+ exit 1
+ fi
+ ;;
+ "backup-audio")
+ if [ -L "/dev/disk/by-id/usb-HGST_HTS_725050A7E630_801130168383-0:0" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/usb-HGST_HTS_725050A7E630_801130168383-0:0" $1
+ elif [ -L "/dev/disk/by-id/ata-HGST_HTS725050A7E630_TF755AWHHS9S1M" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-HGST_HTS725050A7E630_TF755AWHHS9S1M" $1
+ else
+ echo "Error! Device $1 is not available"
+ exit 1
+ fi
+ ;;
+ "backup")
+ if [ -L "/dev/disk/by-id/usb-ST950042_0ASG_55DFFFFFFFFF-0:0" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/usb-ST950042_0ASG_55DFFFFFFFFF-0:0" $1
+ else
+ echo "Error! Device $1 is not available"
+ exit 1
+ fi
+ ;;
+ "media")
+ if [ -L "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80088G0" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80088G0" $1
+ elif [ -L "/dev/disk/by-uuid/e5adbc14-732e-43e8-b6e1-febdfe6d1d3c" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-uuid/e5adbc14-732e-43e8-b6e1-febdfe6d1d3c" $1
+ else
+ echo "Error! Device $1 is not available"
+ exit 1
+ fi
+ ;;
+ "video")
+ if [ -L "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80092WW" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80092WW" $1
+ elif [ -L "/dev/disk/by-uuid/5ac700be-e168-495b-b133-42064fa101e4" ]; then
+ sudo cryptsetup luksOpen "/dev/disk/by-uuid/5ac700be-e168-495b-b133-42064fa101e4" $1
+ else
+ echo "Error! Device $1 is not available"
+ exit 1
+ fi
+ ;;
+ *)
+ echo "Error! Device $1 is not available"
+ exit 1
+ ;;
+ esac
+ esac
+ if [[ -e "/dev/mapper/$1" ]]; then
+ sudo mount /dev/mapper/$1 /mnt/$1
+ if [ $1 = "media" ]; then
+ sudo mount --bind /mnt/media/music /mnt/music
+ sudo mount --bind /mnt/media/photos /mnt/photos
+ if [ ! -h ~/.cache/shotwell ]; then
+ ln -s /mnt/photos/shotwell/ ~/.cache/shotwell
+ fi
+ fi
+ else
+ echo "Error: Device /dev/mapper/$1 is not available."
+ exit 1
+ fi
+}
+
+lclose() {
+ notmounted=$(mountpoint /mnt/$1)
+ if [ "$?" -eq 0 ]; then
+ #stop services blocking the umount
+ if [[ $HOST == "homey" ]]; then
+ sudo systemctl stop rpc-{idmapd,mountd} rpcbind
+ fi
+ if [ $1 = "media" ]; then
+ sudo umount /mnt/{music,photos}
+ fi
+ sudo umount /mnt/$1
+ sudo cryptsetup luksClose $1
+ #restart services that blocked the umount
+ if [[ $HOST == "homey" ]]; then
+ sudo systemctl start rpc-{idmapd,mountd} rpcbind
+ fi
+ else
+ echo "/mnt/$1 is not a mountpoint or not mounted."
+ fi
+}
+
+## RSYNC
+
+backupinfo() {
+ log_cyan "INFO"
+ rsync\
+ -r\
+ -n\
+ -t\
+ -p\
+ -o\
+ -g\
+ -v\
+ --progress\
+ --delete\
+ --ignore-existing\
+ --size-only\
+ -s\
+ --exclude 'lost+found'\
+ --exclude '.Trash-1000'\
+ --exclude '$RECYCLEBIN'\
+ --exclude 'System Volume Information'\
+ --exclude '.thumbs'\
+ $1 $2
+ echo "backupfolder path/to/folder/ /path/to/other/folder"
+}
+
+backupfolder() {
+ rsync \
+ -r\
+ -t\
+ -p\
+ -o\
+ -g\
+ -v\
+ --progress\
+ --delete --ignore-existing --size-only -s --exclude 'lost+found' --exclude '.Trash-1000' --exclude '$RECYCLEBIN' --exclude 'System Volume Information' --exclude '.thumbs' $1 $2
+}
+
+
+# FUNCTIONS >
diff --git a/.zsh.after/hostspecific.zsh b/.zsh.after/hostspecific.zsh
new file mode 100644
index 0000000..e088543
--- /dev/null
+++ b/.zsh.after/hostspecific.zsh
@@ -0,0 +1,6 @@
+case $(hostname) in
+ s4|s5|c*)
+ . $HOME/.zsh.after/apt
+ . $HOME/.zsh.after/unixpool
+ ;;
+esac
diff --git a/.zsh.after/key-bindings.zsh b/.zsh.after/key-bindings.zsh
new file mode 100644
index 0000000..300b3c7
--- /dev/null
+++ b/.zsh.after/key-bindings.zsh
@@ -0,0 +1,22 @@
+## OVERRIDE KEY-BINDINGS
+bindkey -s '\e,' '..\n' # [Esc-,] - run command: .. (up directory)
+bindkey '\e.' insert-last-word # [Esc-.] - insert last word
+#bindkey '^[Oc' forward-word # [Ctrl-RightArrow] - move forward one word
+#bindkey '^[OC' forward-word # [Ctrl-RightArrow] - move forward one word
+#bindkey '^[Od' backward-word # [Ctrl-LeftArrow] - move backward one word
+#bindkey '^[OD' backward-word # [Ctrl-LeftArrow] - move backward one word
+
+## URXVT & TMUX
+case $TERM in
+ rxvt-unicode-256color)
+ bindkey '^[Oc' forward-word # [Ctrl-RightArrow] - move forward one word
+ bindkey '^[Od' backward-word # [Ctrl-LeftArrow] - move backward one word
+ ;;
+ screen-256color)
+ bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - tmux: move forward one word
+ bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - tmux: move backward one word
+ ;;
+esac
+
+## NEW KEY-BINDINGS
+bindkey '^K' kill-line
diff --git a/.zsh.after/prompt.zsh b/.zsh.after/prompt.zsh
new file mode 100644
index 0000000..46c9f36
--- /dev/null
+++ b/.zsh.after/prompt.zsh
@@ -0,0 +1,2 @@
+prompt dvzrv
+
diff --git a/.zsh.after/sources.zsh b/.zsh.after/sources.zsh
new file mode 100644
index 0000000..7140d78
--- /dev/null
+++ b/.zsh.after/sources.zsh
@@ -0,0 +1,6 @@
+# Source RVM
+[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
+
+# RVM bash completion
+[[ -r "$HOME/.rvm/scripts/completion" ]] && source "$HOME/.rvm/scripts/completion"
+
diff --git a/.zsh.after/udisks.zsh b/.zsh.after/udisks.zsh
new file mode 100644
index 0000000..3478aea
--- /dev/null
+++ b/.zsh.after/udisks.zsh
@@ -0,0 +1,245 @@
+# EXAMPLES:
+# - mounting devices
+# sdm sdb1 // mount first partition on sdb
+# sdm sdb 1 // mount first partition on sdb
+# sdm sdb // mount all available partitions on sdb
+# sdm // mount all available devices
+# mcm mmcblk0p1 // mount first partition on mmcblk0
+# mcm mmcblk0 1 // mount first partition on mmcblk0
+# mcm mmcblk0 // mount all partitions on mmcblk0
+# mcm // mount all partitions on all mmcblk devices
+# srm 0 // mount first optical drive
+# srm // mount all optical drives
+#
+# - unmounting devices
+# sdu sdb1 // unmount first partition on sdb
+# sdu sdb 1 // unmount first partition on sdb
+# sdu sdb // unmount all available partitions on sdb
+# sdu // unmount all available devices
+# mcu mmcblk0p1 // unmount first partition on mmcblk0
+# mcu mmcblk0 1 // unmount first partition on mmcblk0
+# mcu mmcblk0 // unmount all partitions on mmcblk0
+# mcu // unmount all partitions on all mmcblk devices
+# sru 0 // unmount first optical drive
+# sru // unmount all optical drives
+#
+
+# mount commands:
+mount="udisksctl mount -b"
+unmount="udisksctl unmount -b"
+
+# Path to all devices
+folder="/dev/"
+
+# Devices of the form /dev/sd{b,c,d,e,f,g,h,i,j,k,l,m,n}
+# path
+dev="/dev/sd"
+# Device numbers/names
+devices=( b c d e f g h i j k l m n )
+# Partition numbers
+device_partitions=( 1 2 3 4 5 6 7 8 9 )
+
+# Devices of the form /dev/mmcblk{0,1,2,3,4,5,6,7,8,9}p{1,2,3,4,5,6,7,8,9}
+# path
+mmc="/dev/mmcblk"
+# Device numbers/names
+mmc_devices=( 0 )
+# Partition numbers
+mmc_partitions=( p1 p2 p3 p4 p5 p6 p7 p8 p9 )
+
+# Devices of the form /dev/sr{0,1,2}
+# path
+optical="/dev/sr"
+# Device numbers/names
+optical_devices=( 0 1 2 )
+
+# device functions:
+sdm() {
+ if [[ -n "$2" ]]; then # if 2nd argument is set
+ if [[ "$1" = ?d* ]]; then # check if 1st argument features the letter d
+ if [[ -b $folder$1$2 ]]; then # check if block device $1$2 is available
+ $=mount $folder$1$2
+ fi
+ fi
+ elif [[ -n "$1" ]]; then # if 1st argument is set
+ if [[ "$1" = ?d* ]]; then # check if 1st argument featurs a letter d
+ if [[ -b $folder$1"1" ]]; then #check if first device is available
+ for a in $device_partitions; do # loop through device partitions of first argument
+ echo "$folder$1$a"
+ if [[ -b $folder$1$a ]]; then # checking for each device if available and block device
+ $=mount "$folder$1$a"
+ fi
+ done
+ else
+ echo "Trying to mount: $folder$1"
+ if [[ -b $folder$1 ]]; then # check if 1st argument already is the block device to mount
+ $=mount $folder$1
+ fi
+ fi
+ fi
+ else # here we loop all available block devices and mount them
+ # TODO: check with df if the device is already mounted
+ for a in $devices; do # loop through the list of all devices
+ if [[ -b $dev$a ]]; then # check if first partition of block device is available
+ for b in $device_partitions; do # loop through the list of all partitions
+ if [[ -b $dev$a$b ]]; then # if it's a block device
+ echo "Trying to mount: $dev$a$b"
+ $=mount "$dev$a$b"
+ fi
+ done
+ fi
+ done
+ fi
+}
+
+sdu() {
+ if [[ -n "$2" ]]; then
+ if [[ "$1" = ?d* ]]; then
+ if [[ -b $folder$1$2 ]]; then
+ echo "Trying to unmount: $folder$1$2"
+ $=unmount $folder$1$2
+ fi
+ fi
+ elif [[ -n "$1" ]]; then
+ if [[ "$1" = ?d* ]]; then
+ if [[ -b $folder$1"1" ]]; then
+ for a in $device_partitions; do
+ if [[ -b $folder$1$a ]]; then # checking for each device if available and block device
+ echo "Trying to unmount: $folder$1$a"
+ $=unmount $folder$1$a
+ fi
+ done
+ else
+ if [[ -b $folder$1 ]]; then
+ echo "Trying to unmount: $folder$1"
+ $=unmount $folder$1
+ fi
+ fi
+ fi
+ else # unmount all devices mounted
+ for a in $devices; do
+ if [[ -b $dev$a ]]; then
+ for b in $device_partitions; do
+ if [[ -b $dev$a$b ]]; then # if it's a block device
+ echo "Trying to unmount: $dev$a$b"
+ $=unmount $dev$a$b
+ fi
+ done
+ fi
+ done
+ fi
+}
+
+# mmc functions:
+mcm() {
+ if [[ -n "$2" ]]; then
+ if [[ "$1" = mmcblk* ]]; then
+ if [[ -b $folder$1"p"$2 ]]; then
+ echo "Trying to mount: $folder$1"p"$2"
+ $=mount $folder$1"p"$2
+ fi
+ fi
+ elif [[ -n "$1" ]]; then
+ if [[ "$1" = mmcblk* ]]; then
+ if [[ -b $folder$1"p1" ]]; then
+ for a in $mmc_partitions; do
+ if [[ -b $folder$1$a ]]; then
+ echo "Trying to mount: $folder$1$a"
+ $=mount $folder$1$a
+ fi
+ done
+ else
+ if [[ -b $folder$1 ]]; then
+ echo "Trying to mount: $folder$1"
+ $=mount $folder$1
+ fi
+ fi
+ fi
+ else
+ for a in $mmc_devices; do
+ if [[ -b $mmc$a"p1" ]]; then
+ for b in $mmc_partitions; do
+ if [[ -b $mmc$a$b ]]; then # if it's a block device
+ echo "Trying to mount: $mmc$a$b"
+ $=mount $mmc$a$b
+ fi
+ done
+ fi
+ done
+ fi
+}
+
+mcu() {
+ if [[ -n "$2" ]]; then
+ if [[ "$1" = mmcblk* ]]; then
+ if [[ -b $folder$1"p"$2 ]]; then
+ echo "Trying to unmount: $folder$1"p"$2"
+ $=unmount $folder$1"p"$2
+ fi
+ fi
+ elif [[ -n "$1" ]]; then
+ if [[ "$1" = mmcblk* ]]; then
+ if [[ -b $folder$1"p1" ]]; then
+ for a in $mmc_partitions; do
+ echo "Trying to unmount: $folder$1$a"
+ $=unmount $folder$1$a
+ done
+ else
+ if [[ -b $folder$1 ]]; then
+ echo "Trying to unmount: $folder$1"
+ $=unmount $folder$1
+ fi
+ fi
+ fi
+ else
+ for a in $mmc_devices; do
+ if [[ -b "$mmc$a${mmc_partitions[0]}" ]]; then
+ echo $mmc$a${mmc_partitions[0]}
+ for b in $mmc_partitions; do
+ if [[ -b $mmc$a$b ]]; then # if it's a block device
+ echo "Trying to unmount: $mmc$a$b"
+ $=unmount $mmc$a$b
+ fi
+ done
+ fi
+ done
+ fi
+}
+
+# sr functions:
+srm() {
+ if [[ -n "$1" ]]; then
+ if [[ "$1" = ? ]]; then
+ if [[ -b $optical$1 ]]; then
+ echo "Trying to mount: $optical$1"
+ $=mount $optical$1
+ fi
+ fi
+ else
+ for a in $optical_devices; do
+ if [[ -b $optical$a ]]; then
+ echo "Trying to mount: $optical$a"
+ $=mount $optical$a
+ fi
+ done
+ fi
+}
+
+sru() {
+ if [[ -n "$1" ]]; then
+ if [[ "$1" = ? ]]; then
+ if [[ -b $optical$1 ]]; then
+ echo "Trying to unmount: $optical$1"
+ $=unmount $optical$1
+ fi
+ fi
+ else
+ for a in $optical_devices; do
+ if [[ -b $optical$a ]]; then
+ echo "Trying to unmount: $optical$a"
+ $=unmount $optical$a
+ fi
+ done
+ fi
+}
+
diff --git a/.zsh.after/unixpool b/.zsh.after/unixpool
new file mode 100644
index 0000000..e2edade
--- /dev/null
+++ b/.zsh.after/unixpool
@@ -0,0 +1,125 @@
+# host based zshrc
+# unixpool
+
+HISTFILE=$HOME/.zhistory
+unset MAILCHECK
+
+## PATH and exports
+PATH=${PATH}:/net/local64/bin
+PATH=${PATH}:/net/adm/bin
+PATH=${PATH}:/net/adm/scripts
+PATH=${PATH}:/net/adm/xadm
+PATH=${PATH}:/homes/wheel/wheel/bin
+PATH=${PATH}:/sbin
+PATH=${PATH}:/usr/sbin
+#PATH=/store/s4/android/android-sdk-linux_86/tools:$PATH
+#PATH=/store/s4/android/android-sdk-linux_86/platform-tools:$PATH
+
+#Remove /usr/bin/X11: if it shows up in $PATH
+autoload -U regexp-replace
+regexp-replace PATH '/usr/bin/X11:' ''
+
+export MATLAB_JAVA=/usr/lib/jvm/java-6-sun-1.6.0.26/jre
+
+## aliases
+alias lp_ps1_100='lp -q 100 -d ps1'
+alias lp_ps2_100='lp -q 100 -d ps2'
+alias QW='xterm -geometry 84x41-0+0 -T '\''QWatch'\'' -fn 5x8 -e /homes/misc/lpviewer/lpdisp'
+alias QWbig='xterm -geometry 84x41-0+0 -T '\''QWatch'\'' -e /homes/misc/lpviewer/lpdisp'
+alias QWbighere='/homes/misc/lpviewer/lpdisp'
+alias QWdisplay="watch 'for n in {1..3}; do scli -c \"show printer display\" ps\$n-pool; done'"
+#alias pyadm="/net/adm/pyadm-64ready/start.py"
+alias synergys='synergys -c .config/synergy-$HOST.conf'
+
+# set pulseaudio server to s4
+if [ -f "`which pax11publish`" ];
+then
+ if [ ! $SSH_CLIENT ];
+ then
+ if [ `pax11publish | grep -c s4` -eq 0 ];
+ then
+ echo pulseaudio server set
+ pax11publish -S s4 -e
+ else
+ echo pulseaudio active
+ fi
+ fi
+fi
+
+
+## FUNCTIONS
+function music_update() {
+ echo "updating zip files"
+ for i in */*;
+ do
+ name=`echo $i | sed 's/\ /_/g' | sed 's/\//-/g'`
+ if [ ! -e $name.zip ];
+ then
+ echo "packing $i as $name.zip"
+ zip -r $name.zip $i
+ fi
+ done
+ echo "done"
+}
+
+function makantine() {
+ wget http://personalkantine.personalabteilung.tu-berlin.de/pdf/MA-aktuell.pdf -O /tmp/makantine.$$.pdf >&/dev/null
+ xpdf -cont -z page /tmp/makantine.$$.pdf
+ rm -f /tmp/makantine.$$.pdf
+}
+
+function pxeln() {
+ local instmode host oldumask bopts="" isrc=""
+ while [ -n "$1" ]; do
+ if [[ "$1" == -o* ]]; then
+ [ -z "$bopts" ] && bopts="bootopts=${1:2}" || bopts="${bopts},${1:2}";
+ else
+ if [ -z "$instmode" ]; then instmode="$1";
+ elif [ -z "$host" ]; then host="$1";
+ else echo "Ignoring superfluous argument \"$1\".";
+ fi
+ fi
+
+ shift
+ done
+ if [[ -z "$instmode" || -z "$host" ]]; then
+ echo -e "Missing argument!\nSyntax: pxeln {mode} {host}\n(use tab completion for available modes)" >/dev/stderr
+ return 1
+ fi
+ local IP=$(egrep "^[^,]*,${host}," /net/adm/access/HWlist |cut -d, -f1|cut -d. -f4)
+ local M="01-$(egrep " $IP " /net/adm/access/MAClist 2>/dev/null|sed -e "s/^|[^|]*| \([0-9a-f:]*\) |/\1/" -e "y/:/-/")"
+ if [[ ${#M} -ne 20 ]]; then
+ echo "Unknown host." >/dev/stderr
+ return 1
+ fi
+ shift 2
+ oldumask=$(umask -p)
+ umask 0022
+ local instmodetl=$(tr [:upper:] [:lower:]<<<$instmode)
+ if [ -s /homes/ext15a/tftpboot/pxelinux.cfg/${instmode}.sed ]; then
+ if [ -e /homes/ext15a/tftpboot/pxelinux.cfg/$M ]; then
+ rm -f /homes/ext15a/tftpboot/pxelinux.cfg/$M
+ echo "$host: former PXE diversion removed."
+ fi
+ sed /homes/ext15a/tftpboot/pxelinux.cfg/_template \
+ -f /homes/ext15a/tftpboot/pxelinux.cfg/${instmode}.sed \
+ > /homes/ext15a/tftpboot/pxelinux.cfg/$M
+ echo -n "$host: elected for ${instmode}"
+ if [ -n "$bopts" ]; then
+ sed -i -e "/bootmode=${instmodetl}/ s/$/ ${bopts}/" /homes/ext15a/tftpboot/pxelinux.cfg/$M
+ echo -n " (with extra boot options: \"$bopts\")"
+ fi
+ echo "."
+ elif [ "$instmode" == "remove" ]; then
+ rm -f /homes/ext15a/tftpboot/pxelinux.cfg/$M
+ echo "$host: PXE diversion removed."
+ else
+ echo "Unknown PXE mode." >/dev/stderr
+ fi
+ $oldumask
+ return 0
+}
+
+function mailhighscore() {
+ for i in /homes/wheel/*; do n=`basename $i`; echo `grep $n /var/spool/mail/runge | grep -c From` $n; done | sort -nr
+}
diff --git a/.zsh.before/aliases.zsh b/.zsh.before/aliases.zsh
new file mode 100644
index 0000000..2fc2c1d
--- /dev/null
+++ b/.zsh.before/aliases.zsh
@@ -0,0 +1,10 @@
+# Global aliases
+alias -g ...='../..'
+alias -g ....='../../..'
+alias -g .....='../../../..'
+alias -g C='| wc -l'
+alias -g H='| head'
+alias -g L="| less"
+alias -g N="| /dev/null"
+alias -g S='| sort'
+alias -g G='| grep' # now you can do: ls foo G something
diff --git a/.zsh.before/custom_prompt_path.zsh b/.zsh.before/custom_prompt_path.zsh
new file mode 100644
index 0000000..18e68b9
--- /dev/null
+++ b/.zsh.before/custom_prompt_path.zsh
@@ -0,0 +1,4 @@
+#Load themes from yadr and from user's custom prompts (themes) in ~/.zsh.prompts
+autoload promptinit
+fpath=($HOME/.zsh.prompts $fpath)
+promptinit
diff --git a/.zsh.before/functions.zsh b/.zsh.before/functions.zsh
new file mode 100644
index 0000000..4b2ef1a
--- /dev/null
+++ b/.zsh.before/functions.zsh
@@ -0,0 +1,11 @@
+# Functions
+#
+# (f)ind by (n)ame
+# usage: fn foo
+# to find all files containing 'foo' in the name
+function fn() { ls **/*$1* }
+
+if [ -e $HOME/bin/functions.sh ]
+then
+ . $HOME/bin/functions.sh
+fi
diff --git a/.zsh.before/git.zsh b/.zsh.before/git.zsh
new file mode 100644
index 0000000..c87ec5a
--- /dev/null
+++ b/.zsh.before/git.zsh
@@ -0,0 +1,4 @@
+# Makes git auto completion faster favouring for local completions
+__git_files () {
+ _wanted files expl 'local files' _files
+}
diff --git a/.zsh.before/key-bindings.zsh b/.zsh.before/key-bindings.zsh
new file mode 100644
index 0000000..c1c7d8e
--- /dev/null
+++ b/.zsh.before/key-bindings.zsh
@@ -0,0 +1,10 @@
+# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html
+# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins
+# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets
+
+bindkey -v # Use vi key bindings
+bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
+
+# emacs style
+bindkey '^a' beginning-of-line
+bindkey '^e' end-of-line
diff --git a/.zsh.before/last-command.zsh b/.zsh.before/last-command.zsh
new file mode 100644
index 0000000..9f7486b
--- /dev/null
+++ b/.zsh.before/last-command.zsh
@@ -0,0 +1,7 @@
+# Use Ctrl-x,Ctrl-l to get the output of the last command
+zmodload -i zsh/parameter
+insert-last-command-output() {
+LBUFFER+="$(eval $history[$((HISTCMD-1))])"
+}
+zle -N insert-last-command-output
+bindkey "^X^L" insert-last-command-output
diff --git a/.zsh.before/noglob.zsh b/.zsh.before/noglob.zsh
new file mode 100644
index 0000000..ede67c9
--- /dev/null
+++ b/.zsh.before/noglob.zsh
@@ -0,0 +1,4 @@
+# Don't try to glob with zsh so you can do
+# stuff like ga *foo* and correctly have
+# git add the right stuff
+alias git='noglob git'
diff --git a/.zsh.before/path.zsh b/.zsh.before/path.zsh
new file mode 100644
index 0000000..f87ba45
--- /dev/null
+++ b/.zsh.before/path.zsh
@@ -0,0 +1,19 @@
+# Add $HOME/bin before /usr/local/sbin and /usr/local/bin in $PATH
+# Also works if they are switched
+autoload -U regexp-replace
+if [[ "$PATH" != *dave/bin:/usr/local/sbin* ]];then
+ case "$PATH" in
+ */usr/local/bin:/usr/local/sbin*)
+ regexp-replace PATH '/usr/local/bin:/usr/local/sbin:' '$HOME/bin:/usr/local/sbin:/usr/local/bin:'
+ ;;
+ */usr/local/sbin:/usr/local/bin*)
+ regexp-replace PATH '/usr/local/sbin:/usr/local/bin:' '$HOME/bin:/usr/local/sbin:/usr/local/bin:'
+ ;;
+ esac
+fi
+
+## RASPBERRY PI
+if [[ "$HOST" == *pitheunlord* ]]; then
+ PATH=$PATH:"/opt/vc/bin:/opt/vc/sbin"
+fi
+
diff --git a/.zsh.before/rm.zsh b/.zsh.before/rm.zsh
new file mode 100644
index 0000000..26508a3
--- /dev/null
+++ b/.zsh.before/rm.zsh
@@ -0,0 +1,2 @@
+# Override rm -i alias which makes rm prompt for every action
+alias rm='nocorrect rm'
diff --git a/.zsh.before/vi-mode.zsh b/.zsh.before/vi-mode.zsh
new file mode 100644
index 0000000..4ac7453
--- /dev/null
+++ b/.zsh.before/vi-mode.zsh
@@ -0,0 +1,3 @@
+set -o vi
+export EDITOR=vim
+export VISUAL=vim
diff --git a/.zsh.prompts/prompt_agnoster_setup b/.zsh.prompts/prompt_agnoster_setup
new file mode 100644
index 0000000..16d18c9
--- /dev/null
+++ b/.zsh.prompts/prompt_agnoster_setup
@@ -0,0 +1,141 @@
+# vim:ft=zsh ts=2 sw=2 sts=2
+#
+# agnoster's Theme - https://gist.github.com/3712874
+# A Powerline-inspired theme for ZSH
+#
+# # README
+#
+# In order for this theme to render correctly, you will need a
+# [Powerline-patched font](https://gist.github.com/1595572).
+#
+# In addition, I recommend the
+# [Solarized theme](https://github.com/altercation/solarized/) and, if you're
+# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app -
+# it has significantly better color fidelity.
+#
+# # Goals
+#
+# The aim of this theme is to only show you *relevant* information. Like most
+# prompts, it will only show git information when in a git working directory.
+# However, it goes a step further: everything from the current user and
+# hostname to whether the last call exited with an error to whether background
+# jobs are running in this shell will all be displayed automatically when
+# appropriate.
+
+### Segment drawing
+# A few utility functions to make it easy and re-usable to draw segmented prompts
+
+CURRENT_BG='NONE'
+SEGMENT_SEPARATOR='⮀'
+
+# Customizations
+
+# Checks if working tree is dirty
+# From robbyrussell/oh-my-zsh
+parse_git_dirty() {
+ local SUBMODULE_SYNTAX=''
+ local GIT_STATUS=''
+ local CLEAN_MESSAGE='nothing to commit (working directory clean)'
+ if [[ "$(command git config --get oh-my-zsh.hide-status)" != "1" ]]; then
+ if [[ $POST_1_7_2_GIT -gt 0 ]]; then
+ SUBMODULE_SYNTAX="--ignore-submodules=dirty"
+ fi
+ if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then
+ GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1)
+ else
+ GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1)
+ fi
+ if [[ -n $GIT_STATUS ]]; then
+ echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
+ else
+ echo "$ZSH_THEME_GIT_PROMPT_CLEAN"
+ fi
+ else
+ echo "$ZSH_THEME_GIT_PROMPT_CLEAN"
+ fi
+}
+
+# Takes two arguments, background and foreground. Both can be omitted,
+# rendering default background/foreground.
+prompt_segment() {
+ local bg fg
+ [[ -n $1 ]] && bg="%K{$1}" || bg="%k"
+ [[ -n $2 ]] && fg="%F{$2}" || fg="%f"
+ if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
+ echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} "
+ else
+ echo -n "%{$bg%}%{$fg%} "
+ fi
+ CURRENT_BG=$1
+ [[ -n $3 ]] && echo -n $3
+}
+
+# End the prompt, closing any open segments
+prompt_end() {
+ if [[ -n $CURRENT_BG ]]; then
+ echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
+ else
+ echo -n "%{%k%}"
+ fi
+ echo -n "%{%f%}"
+ CURRENT_BG=''
+}
+
+### Prompt components
+# Each component will draw itself, and hide itself if no information needs to be shown
+
+# Context: user@hostname (who am I and where am I)
+prompt_context() {
+ local user=`whoami`
+
+ if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
+ prompt_segment black default "%(!.%{%F{yellow}%}.)$user@%m"
+ fi
+}
+
+# Git: branch/detached head, dirty status
+prompt_git() {
+ local ref dirty
+ if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
+ ZSH_THEME_GIT_PROMPT_DIRTY='±'
+ dirty=$(parse_git_dirty)
+ ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git show-ref --head -s --abbrev |head -n1 2> /dev/null)"
+ if [[ -n $dirty ]]; then
+ prompt_segment yellow black
+ else
+ prompt_segment green black
+ fi
+ echo -n "${ref/refs\/heads\//⭠ }$dirty"
+ fi
+}
+
+# Dir: current working directory
+prompt_dir() {
+ prompt_segment blue black '%~'
+}
+
+# Status:
+# - was there an error
+# - am I root
+# - are there background jobs?
+prompt_status() {
+ local symbols
+ symbols=()
+ [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘"
+ [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡"
+ [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙"
+
+ [[ -n "$symbols" ]] && prompt_segment black default "$symbols"
+}
+
+## Main prompt
+build_prompt() {
+ RETVAL=$?
+ prompt_status
+ prompt_context
+ prompt_dir
+ prompt_git
+ prompt_end
+}
+
+PROMPT='%{%f%b%k%}$(build_prompt) '
diff --git a/.zsh.prompts/prompt_dvzrv_setup b/.zsh.prompts/prompt_dvzrv_setup
new file mode 100644
index 0000000..4758b7a
--- /dev/null
+++ b/.zsh.prompts/prompt_dvzrv_setup
@@ -0,0 +1,94 @@
+#
+# A theme based on Steve Losh's Extravagant Prompt with vcs_info integration.
+#
+# Authors:
+# Steve Losh <steve@stevelosh.com>
+# Bart Trojanowski <bart@jukie.net>
+# Brian Carper <brian@carper.ca>
+# steeef_simplified <steeef_simplified@gmail.com>
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+#
+# Screenshots:
+# http://i.imgur.com/HyRvv.png
+#
+
+function prompt_steeef_simplified_precmd {
+ # Check for untracked files or updated submodules since vcs_info does not.
+ if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
+ branch_format="(${_prompt_steeef_simplified_colors[1]}%b%f%u%c${_prompt_steeef_simplified_colors[4]}●%f)"
+ else
+ branch_format="(${_prompt_steeef_simplified_colors[1]}%b%f%u%c)"
+ fi
+
+ zstyle ':vcs_info:*:prompt:*' formats "${branch_format}"
+
+ vcs_info 'prompt'
+
+ if (( $+functions[python-info] )); then
+ python-info
+ fi
+
+ # Get ruby information
+# if (( $+functions[ruby-info] )); then
+# ruby-info
+# fi
+}
+
+# Check if this shell is run through ssh
+function ssh_connection {
+ if [[ -n $SSH_CONNECTION ]]; then
+ echo "[%F{red}ssh%f] "
+ fi
+}
+
+function prompt_steeef_simplified_setup {
+ setopt LOCAL_OPTIONS
+ unsetopt XTRACE KSH_ARRAYS
+ prompt_opts=(cr percent subst)
+
+ # Load required functions.
+ autoload -Uz add-zsh-hook
+ autoload -Uz vcs_info
+
+ # Add hook for calling vcs_info before each command.
+ add-zsh-hook precmd prompt_steeef_simplified_precmd
+
+ _prompt_steeef_simplified_colors=(
+ "%F{cyan}"
+ "%F{yellow}"
+ "%F{magenta}"
+ "%F{red}"
+ "%F{green}"
+ )
+
+ # Formats:
+ # %b - branchname
+ # %u - unstagedstr (see below)
+ # %c - stagedstr (see below)
+ # %a - action (e.g. rebase-i)
+ # %R - repository path
+ # %S - path in the repository
+ local branch_format="(${_prompt_steeef_simplified_colors[1]}%b%f%u%c)"
+ local action_format="(${_prompt_steeef_simplified_colors[5]}%a%f)"
+ local unstaged_format="${_prompt_steeef_simplified_colors[2]}●%f"
+ local staged_format="${_prompt_steeef_simplified_colors[5]}●%f"
+
+ # Set vcs_info parameters.
+ zstyle ':vcs_info:*' enable bzr git hg svn
+ zstyle ':vcs_info:*:prompt:*' check-for-changes true
+ zstyle ':vcs_info:*:prompt:*' unstagedstr "${unstaged_format}"
+ zstyle ':vcs_info:*:prompt:*' stagedstr "${staged_format}"
+ zstyle ':vcs_info:*:prompt:*' actionformats "${branch_format}${action_format}"
+ zstyle ':vcs_info:*:prompt:*' formats "${branch_format}"
+ zstyle ':vcs_info:*:prompt:*' nvcsformats ""
+
+ # Set python-info parameters.
+ zstyle ':prezto:module:python:info:virtualenv' format '(%v)'
+
+ # Define prompts.
+ PROMPT="$(ssh_connection)${_prompt_steeef_simplified_colors[3]}%n%f@${_prompt_steeef_simplified_colors[2]}%m%f ${_prompt_steeef_simplified_colors[5]}%~%f "'${vcs_info_msg_0_}'"$ "
+ RPROMPT="%(?..[%F{red}%?%f] )"
+}
+
+prompt_steeef_simplified_setup "$@"
+
diff --git a/.zsh.prompts/prompt_kylewest_setup b/.zsh.prompts/prompt_kylewest_setup
new file mode 100644
index 0000000..c67b5e4
--- /dev/null
+++ b/.zsh.prompts/prompt_kylewest_setup
@@ -0,0 +1,57 @@
+#
+# A theme based on sorin theme
+# * ruby info shown on the right
+# * git info on the left
+# * editor mode as $> or <#
+# * single line prompt
+#
+# Authors:
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+# Kyle West <kswest@gmail.com>
+
+function prompt_kylewest_precmd {
+ setopt LOCAL_OPTIONS
+ unsetopt XTRACE KSH_ARRAYS
+
+ # Get Git repository information.
+ if (( $+functions[git-info] )); then
+ git-info on
+ git-info
+ fi
+
+ # Get ruby information
+ if (( $+functions[ruby-info] )); then
+ ruby-info
+ fi
+}
+
+function prompt_kylewest_setup {
+ setopt LOCAL_OPTIONS
+ unsetopt XTRACE KSH_ARRAYS
+ prompt_opts=(cr percent subst)
+
+ # Load required functions.
+ autoload -Uz add-zsh-hook
+
+ # Add hook for calling git-info before each command.
+ add-zsh-hook precmd prompt_kylewest_precmd
+
+ # editor
+ zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b'
+ zstyle ':prezto:module:editor:info:keymap:primary' format "%B%F{green}$>%f%b"
+ zstyle ':prezto:module:editor:info:keymap:alternate' format "%B%F{magenta}<#%f%b"
+
+ # ruby info (rvm, rbenv)
+ zstyle ':prezto:module:ruby:info:version' format '[ %v ]'
+
+ # vcs
+ zstyle ':prezto:module:git:info:branch' format '%F{yellow}%b%f'
+ zstyle ':prezto:module:git:info:dirty' format '%B%F{red}!%f%b'
+ zstyle ':prezto:module:git:info:keys' format 'prompt' '- %b%D '
+
+ # prompts
+ PROMPT='%F{cyan}%c%f ${git_info[prompt]}${editor_info[keymap]} '
+ RPROMPT='%F{blue}${ruby_info[version]}'
+}
+
+prompt_kylewest_setup "$@"
diff --git a/.zsh.prompts/prompt_skwp_setup b/.zsh.prompts/prompt_skwp_setup
new file mode 100644
index 0000000..c45eb8a
--- /dev/null
+++ b/.zsh.prompts/prompt_skwp_setup
@@ -0,0 +1,74 @@
+#
+# A theme based on steeef theme
+# * RVM/Rbenv info shown on the right
+# * Git branch info on the left
+# * Single line prompt
+#
+# Authors:
+# Steve Losh <steve@stevelosh.com>
+# Bart Trojanowski <bart@jukie.net>
+# Brian Carper <brian@carper.ca>
+# steeef <steeef@gmail.com>
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+# Yan Pritzker <yan@pritzker.ws>
+
+function prompt_skwp_precmd {
+ setopt LOCAL_OPTIONS
+ unsetopt XTRACE KSH_ARRAYS
+
+ # Get Git repository information.
+ if (( $+functions[git-info] )); then
+ git-info on
+ git-info
+ fi
+
+ # Get ruby information
+ if (( $+functions[ruby-info] )); then
+ ruby-info
+ fi
+}
+
+function prompt_skwp_setup {
+ setopt LOCAL_OPTIONS
+ unsetopt XTRACE KSH_ARRAYS
+ prompt_opts=(cr percent subst)
+
+ autoload -Uz add-zsh-hook
+
+ add-zsh-hook precmd prompt_skwp_precmd
+
+ # Use extended color pallete if available.
+ if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
+ __PROMPT_SKWP_COLORS=(
+ "%F{81}" # turquoise
+ "%F{166}" # orange
+ "%F{135}" # purple
+ "%F{161}" # hotpink
+ "%F{118}" # limegreen
+ )
+ else
+ __PROMPT_SKWP_COLORS=(
+ "%F{cyan}"
+ "%F{yellow}"
+ "%F{magenta}"
+ "%F{red}"
+ "%F{green}"
+ )
+ fi
+
+ # git
+ zstyle ':prezto:module:git:info:branch' format "${__PROMPT_SKWP_COLORS[1]}%b%f"
+ zstyle ':prezto:module:git:info:added' format "${__PROMPT_SKWP_COLORS[5]}●%f"
+ zstyle ':prezto:module:git:info:deleted' format "${__PROMPT_SKWP_COLORS[2]}●%f"
+ zstyle ':prezto:module:git:info:modified' format "${__PROMPT_SKWP_COLORS[4]}●%f"
+ zstyle ':prezto:module:git:info:untracked' format "${__PROMPT_SKWP_COLORS[3]}●%f"
+ zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%d%a%m%u)'
+
+ # ruby info (rvm, rbenv)
+ zstyle ':prezto:module:ruby:info:version' format '[%v]'
+
+ PROMPT="${__PROMPT_SKWP_COLORS[3]}%n%f@${__PROMPT_SKWP_COLORS[2]}%m%f ${__PROMPT_SKWP_COLORS[5]}%~%f "'$git_info[prompt]'"$ "
+ RPROMPT='%F{blue}${ruby_info[version]}'
+}
+
+prompt_skwp_setup "$@"
diff --git a/.zsh.prompts/prompt_steeef_simplified_setup b/.zsh.prompts/prompt_steeef_simplified_setup
new file mode 100644
index 0000000..14b16da
--- /dev/null
+++ b/.zsh.prompts/prompt_steeef_simplified_setup
@@ -0,0 +1,98 @@
+#
+# A theme based on Steve Losh's Extravagant Prompt with vcs_info integration.
+#
+# Authors:
+# Steve Losh <steve@stevelosh.com>
+# Bart Trojanowski <bart@jukie.net>
+# Brian Carper <brian@carper.ca>
+# steeef_simplified <steeef_simplified@gmail.com>
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+#
+# Screenshots:
+# http://i.imgur.com/HyRvv.png
+#
+
+function prompt_steeef_simplified_precmd {
+ # Check for untracked files or updated submodules since vcs_info does not.
+ if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
+ branch_format="(${_prompt_steeef_simplified_colors[1]}%b%f%u%c${_prompt_steeef_simplified_colors[4]}●%f)"
+ else
+ branch_format="(${_prompt_steeef_simplified_colors[1]}%b%f%u%c)"
+ fi
+
+ zstyle ':vcs_info:*:prompt:*' formats "${branch_format}"
+
+ vcs_info 'prompt'
+
+ if (( $+functions[python-info] )); then
+ python-info
+ fi
+
+ # Get ruby information
+ if (( $+functions[ruby-info] )); then
+ ruby-info
+ fi
+}
+
+function prompt_steeef_simplified_setup {
+ setopt LOCAL_OPTIONS
+ unsetopt XTRACE KSH_ARRAYS
+ prompt_opts=(cr percent subst)
+
+ # Load required functions.
+ autoload -Uz add-zsh-hook
+ autoload -Uz vcs_info
+
+ # Add hook for calling vcs_info before each command.
+ add-zsh-hook precmd prompt_steeef_simplified_precmd
+
+ # Use extended color pallete if available.
+ if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
+ _prompt_steeef_simplified_colors=(
+ "%F{81}" # Turquoise
+ "%F{166}" # Orange
+ "%F{135}" # Purple
+ "%F{161}" # Hotpink
+ "%F{118}" # Limegreen
+ )
+ else
+ _prompt_steeef_simplified_colors=(
+ "%F{cyan}"
+ "%F{yellow}"
+ "%F{magenta}"
+ "%F{red}"
+ "%F{green}"
+ )
+ fi
+
+ # Formats:
+ # %b - branchname
+ # %u - unstagedstr (see below)
+ # %c - stagedstr (see below)
+ # %a - action (e.g. rebase-i)
+ # %R - repository path
+ # %S - path in the repository
+ local branch_format="(${_prompt_steeef_simplified_colors[1]}%b%f%u%c)"
+ local action_format="(${_prompt_steeef_simplified_colors[5]}%a%f)"
+ local unstaged_format="${_prompt_steeef_simplified_colors[2]}●%f"
+ local staged_format="${_prompt_steeef_simplified_colors[5]}●%f"
+
+ # Set vcs_info parameters.
+ zstyle ':vcs_info:*' enable bzr git hg svn
+ zstyle ':vcs_info:*:prompt:*' check-for-changes true
+ zstyle ':vcs_info:*:prompt:*' unstagedstr "${unstaged_format}"
+ zstyle ':vcs_info:*:prompt:*' stagedstr "${staged_format}"
+ zstyle ':vcs_info:*:prompt:*' actionformats "${branch_format}${action_format}"
+ zstyle ':vcs_info:*:prompt:*' formats "${branch_format}"
+ zstyle ':vcs_info:*:prompt:*' nvcsformats ""
+
+ # Set python-info parameters.
+ zstyle ':prezto:module:python:info:virtualenv' format '(%v)'
+
+ # Define prompts.
+ PROMPT="${_prompt_steeef_simplified_colors[3]}%n%f@${_prompt_steeef_simplified_colors[2]}%m%f ${_prompt_steeef_simplified_colors[5]}%~%f "'${vcs_info_msg_0_}'"$ "
+ RPROMPT='%F{blue}${ruby_info[version]}'
+}
+
+prompt_steeef_simplified_setup "$@"
+
diff --git a/.zshenv b/.zshenv
new file mode 100644
index 0000000..2b13503
--- /dev/null
+++ b/.zshenv
@@ -0,0 +1,12 @@
+#
+# Defines environment variables.
+#
+# Authors:
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+#
+
+# Ensure that a non-login, non-interactive shell has a defined environment.
+if [[ "$SHLVL" -eq 1 && ! -o LOGIN && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then
+ source "${ZDOTDIR:-$HOME}/.zprofile"
+fi
+
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 0000000..a3c98d7
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,16 @@
+#
+# Executes commands at the start of an interactive session.
+#
+# Authors:
+# Sorin Ionescu <sorin.ionescu@gmail.com>
+#
+
+# Source Prezto.
+if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
+ source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
+fi
+
+# Customize to your needs...
+
+for config_file ($HOME/.zsh.before/*.zsh) source $config_file
+for config_file ($HOME/.zsh.after/*.zsh) source $config_file
diff --git a/bin/adjust_dpms b/bin/adjust_dpms
new file mode 100755
index 0000000..c8e8a0f
--- /dev/null
+++ b/bin/adjust_dpms
@@ -0,0 +1,55 @@
+#!/bin/bash
+# Script to adjust dpms settings when running certain programs,
+# that don't use fullscreen, but should not be "blanked" in between.
+# Programs are defined in separate config file ~/.config/dpms
+# Run as timed user script (i.e. adjust_dpms@.service) with systemd
+# from /etc/systemd/system/timer-minutely.target.wants
+
+export DISPLAY=:0.0
+
+config="/home/$(whoami)/.config/dpms"
+blankoff=0
+
+# check for config file existence
+if [[ -f $config ]];then
+ . /home/dave/.config/dpms
+else
+ echo "Config file not readable $config"
+ exit 1
+fi
+
+# loop all programs and check for running instances
+for i in "${programs[@]}"
+do
+ pid=$(pidof -x $i)
+ re='^[0-9]+$'
+ if [[ $pid =~ $re ]]; then
+ echo "$i running ($pid)"
+ blankoff=1
+ fi
+done
+
+# if valuable programs are running, don't use screen blanking
+if [ $blankoff -gt 0 ]; then
+ echo "Some program requires screensaver to be off."
+ # print currently set values for screensaver timeout to tmp file
+ echo "s $(xset q|grep timeout|awk '{print $2}') $(xset q|grep timeout|awk '{print $4}')" > $adjust_dpms
+ echo "dpms $(xset q|grep Standby|awk '{print $2}') $(xset q|grep Standby|awk '{print $4}') $(xset q|grep Standby|awk '{print $6}')" >> $adjust_dpms
+ # disable screensaver and dpms
+ xset s off
+ xset -dpms
+else
+ xsetq=$(xset q|grep timeout|awk '{print $2}')
+ # if the timeout is still 0, set it to its former value, or just switch on screensaver/dpms again
+ if [[ $xsetq -eq 0 ]];then
+ if [[ -f "$adjust_dpms" ]];then
+ xset $(head -n1 $adjust_dpms)
+ xset $(tail -n1 $adjust_dpms)
+ rm -rf $adjust_dpms
+ else
+ xset +dpms
+ xset s on
+ fi
+ fi
+fi
+
diff --git a/bin/androidbackup.sh b/bin/androidbackup.sh
new file mode 100755
index 0000000..ee95f01
--- /dev/null
+++ b/bin/androidbackup.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+
+if [ -e $HOME/bin/functions.sh ]
+then
+ . $HOME/bin/functions.sh
+else
+ exit 0
+fi
+
+## CONFIGURATION
+ADB=adb
+
+function help()
+{
+ echo "Android data backup/restore"
+ echo "Usage:"
+ echo -e "\t [backup|restoredata|restoreapk] [device]"
+ exit 0
+}
+
+function _backup()
+{
+ adb -s $DEVICE pull /data/system/packages.list .
+ cat packages.list | while read line
+ do
+ read name dir <<< $(echo $line | awk '{ print $1 " " $4 }')
+ #echo $dir
+ apk=$($ADB shell bash -c "ls /data/app/${name}* 2> /dev/null")
+ if [ -n $exists ]
+ then
+ echo $name $apk
+ else
+ echo LALALALALAAA $name
+ fi
+ echo ""
+ done
+}
+
+function _restoreapk() {
+ mkdir -p done skipped
+ apps=$(ls -1 | grep -c apk)
+ num=1
+ for i in *.apk
+ do
+ if [ $i = "done" -o $i = "skipped" ]
+ then
+ continue
+ fi
+ echo_green "Application $i ($num/$apps)"
+
+ name=$(echo $i | sed 's/-[0-9].apk//')
+ existing=$($ADB shell sh -c "ls /data/app*/${name}* 2> /dev/null")
+ echo $existing
+ if [ -n "$existing" ]
+ then
+ echo $i already installed
+ mv $i skipped
+ continue
+ fi
+ echo " Restore apk? [1|0] (default 1)"
+ echo -en " "
+ read inst
+ inst=${inst:=1}
+
+ if [ $inst -eq 1 ]
+ then
+ $ADB install $i
+ mv $i done
+ else
+ echo -e " Skipping...\n\n"
+ mv $i skipped
+ fi
+ let num=num+1
+ done
+}
+
+function _restoredata()
+{
+ mkdir -p done skipped
+ apps=$(ls -l | grep -v skipped | grep -v done | grep -c '^d')
+ num=1
+ for i in *
+ do
+ if [ $i = "done" -o $i = "skipped" ]
+ then
+ continue
+ fi
+
+ echo_green "Application $i ($num/$apps)"
+ if [ $(adb shell ls -l /data/data | grep -c $i) -lt 1 ]
+ then
+ echo_red " not installed, skipping.\n\n"
+ mv $i skipped
+ continue
+ fi
+
+ echo " Restore data? [1|0] (default 0)"
+ echo -en " "
+ read inst
+ inst=${inst:=0}
+
+ if [ $inst -eq 1 ]
+ then
+ if [ $i = "com.android.providers.telephony" ]
+ then
+ echo -e "SMS/CALLS"
+ $ADB push $i/databases/mmssms.db /data/data/$i/databases
+ $ADB shell chmod 660 /data/data/$i/databases/mmssms.db
+ $ADB shell toolbox chown 1001:1001 /data/data/$i/databases/mmssms.db
+ $ADB shell killall system_server
+ mv $i done
+ else
+ own=$($ADB shell ls -l /data/data/ | grep $i | head -n 1 | awk '{ print $3}')
+ echo -e " User $own\n\n"
+ mute $ADB push $i /data/data/$i
+ mute $ADB shell chown $own:$own /data/data/$i/*
+ mute $ADB shell chown $own:$own /data/data/$i/*/*
+ mute $ADB shell chown $own:$own /data/data/$i/*/*/*
+ mv $i done
+ fi
+ else
+ echo -e " Skipping...\n\n"
+ mv $i skipped
+ fi
+ let num=num+1
+ done
+}
+
+case $1 in
+ backup)
+ _backup
+ ;;
+ restoredata)
+ _restoredata
+ ;;
+ restoreapk)
+ _restoreapk
+ ;;
+ *)
+ help
+ exit 0
+ ;;
+esac
diff --git a/bin/atmux b/bin/atmux
new file mode 100755
index 0000000..7601693
--- /dev/null
+++ b/bin/atmux
@@ -0,0 +1,122 @@
+#!/bin/bash
+
+if [ -e $HOME/bin/functions.sh ]
+then
+ . $HOME/bin/functions.sh
+else
+ echo "functions.sh not found"
+ exit 0
+fi
+
+# override tmux
+tmux='tmux'
+
+## CONFIGURATION
+# session name
+sn=${1:-atmux}
+
+# try to attach earlier session
+tmux attach-session -t $sn && exit 0
+#or continue
+
+# default path
+case $sn in
+ # window definitions
+ # path:command:custom-name
+ "thesis")
+ dpath=/home/konni/dropbox/documents/uni/12ss/BA/breite-quellen/thesis
+ windows="-:-"
+ windows+="matlab:echo bla"
+ ;;
+ "mako")
+ dpath=/extra/src/cyanogenmod-10.1
+ dcmd=". environment_mako"
+ windows="-:-"
+ windows+="-:-"
+ windows+=" device/lge/mako:-"
+ windows+=" out/target/product/mako:-"
+ ;;
+ "ville_dev")
+ dpath=/extra/src/cyanogenmod-10.1
+ dcmd=". environment_ville"
+ windows="-:-"
+ windows+=" -:-"
+ windows+=" device/htc/ville:-"
+ windows+=" device/htc/msm8960-common:-"
+ windows+=" kernel/htc/msm8960:-"
+ windows+=" vendor/htc:-"
+ windows+=" out/target/product/ville:-"
+ ;;
+ "ville")
+ dpath=/extra/src/cyanogenmod-jellybean
+ dcmd=". environment_ville"
+ windows="-:-"
+ windows+=" -:-"
+ windows+=" device/htc/ville:-"
+ windows+=" device/htc/msm8960-common:-"
+ windows+=" kernel/htc/msm8960:-"
+ windows+=" vendor/htc:-"
+ windows+=" out/target/product/ville:-"
+ ;;
+ *)
+ dpath=$HOME
+ windows="-:-"
+esac
+
+
+# enter default path
+mute pushd $dpath
+
+# prepare windows
+num=1
+for window in $windows
+do
+ # parse configuration
+ read wpath wcmd <<< $(echo $window | sed 's/:/\ /g')
+
+ # set path
+ unset tpath
+ if [ $wpath != "-" ]
+ then
+ tpath=$wpath
+ fi
+
+
+ if [ $num -eq 1 ]
+ then
+ # start new session
+ $tmux new-session -d -s "$sn" $tname
+ # set default path for new windows
+ $tmux set-option -t "$sn" default-path $dpath
+ else
+ # create new window in session
+ $tmux new-window -t "$sn:$num" $tname
+ fi
+
+ # execute default command
+ if [ -n "$dcmd" ]
+ then
+ $tmux send-keys -t "$n:$num" "$dcmd" C-m
+ fi
+
+ # change path
+ if [ -n "$tpath" ]
+ then
+ $tmux send-keys -t "$n:$num" "cd $tpath" C-m
+ fi
+
+ # execute custom command
+ unset tcmd
+ if [ "$wcmd" != "-" ]
+ then
+ tcmd=$wcmd
+ $tmux send-keys -t "$n:$num" "$tcmd" C-m
+ fi
+
+ let num=num+1
+done
+
+# select window #1 and attach to session
+$tmux select-window -t "$sn:1"
+$tmux attach-session -t "$sn"
+
diff --git a/bin/autostart b/bin/autostart
new file mode 100755
index 0000000..9d70ad0
--- /dev/null
+++ b/bin/autostart
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Auto starting various programs post lightdm
+
+export DISPLAY=:0
+export XAUTHORITY=/home/dave/.Xauthority
+
+KERNEL_NAME=$(uname -r)
+if [[ "$KERNEL_NAME" != *rt* ]]; then
+ pid=$(pidof dropbox)
+ re='^[0-9]+$'
+ if [[ $pid =~ $re ]];then
+ echo "Dropbox alread running. Restarting..."
+ dropbox stop && dropbox start &
+ else
+ dropbox start &
+ fi
+# pulseaudio --start &
+# nm-applet &
+# firewall-applet &
+else
+ pulseaudio --kill &
+ qjackctl &
+fi
diff --git a/bin/backup-settings b/bin/backup-settings
new file mode 100755
index 0000000..1a9cc12
--- /dev/null
+++ b/bin/backup-settings
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+etcTMP=/tmp/etc.tgz
+etcIF=/etc
+OF=/home/dave/ownCloud/backup/settings
+gpgEND=.gpg
+
+echo "Backing up /etc directory."
+tar cfPz $etcTMP $etcIF
+echo "Encrypting compressed directory."
+su - dave -c "gpg -e -r 'David Runge <david.runge@frqrec.com>' $etcTMP"
+echo "Changing permissions on file."
+chown dave:dave $etcTMP$gpgEND
+echo "Moving backup to ownCloud."
+mv -f $etcTMP$gpgEND $OF
+echo "Cleaning up."
+rm $etcTMP
+echo "Done."
+
diff --git a/bin/check-rt b/bin/check-rt
new file mode 100755
index 0000000..5dc04cd
--- /dev/null
+++ b/bin/check-rt
@@ -0,0 +1,11 @@
+#!/bin/env bash
+#Check if the kernel name has -rt in it (we're running Realtime Kernel)
+
+if [[ $(uname -r) == *-rt* ]];then
+ echo "Success: Running $(uname -r)."
+ exit 0
+else
+ echo "Failure: Running $(uname -r)."
+ exit 1
+fi
+
diff --git a/bin/check-vanilla b/bin/check-vanilla
new file mode 100755
index 0000000..6b4bdd4
--- /dev/null
+++ b/bin/check-vanilla
@@ -0,0 +1,11 @@
+#!/bin/env bash
+#Check if the kernel name has -rt in it (we're running Realtime Kernel)
+
+if [[ $(uname -r) == *-rt* ]];then
+ echo "Failure: Running $(uname -r)."
+ exit 1
+else
+ echo "Success: Running $(uname -r)."
+ exit 0
+fi
+
diff --git a/bin/checkip b/bin/checkip
new file mode 100755
index 0000000..0e9d345
--- /dev/null
+++ b/bin/checkip
@@ -0,0 +1,4 @@
+#!/bin/bash
+#echo "$(curl -s http://checkip.dyndns.org | sed 's/[a-zA-Z/<> :]//g')
+#wget -qO- http://ipecho.net/plain ; echo
+dig +short myip.opendns.com @resolver1.opendns.com
diff --git a/bin/connect_to_jack b/bin/connect_to_jack
new file mode 100644
index 0000000..e17ccc2
--- /dev/null
+++ b/bin/connect_to_jack
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+case "$HOSTNAME" in
+ "pitheunlord")
+ jack_connect SuperCollider:out_1 alsa_out:playback_1 &
+ jack_connect SuperCollider:out_2 alsa_out:playback_2 &
+ ;;
+ "beagleclone")
+ ;;
+ "dvzrv")
+ ;;
+esac
diff --git a/bin/flac2mp3 b/bin/flac2mp3
new file mode 100755
index 0000000..9dd970b
--- /dev/null
+++ b/bin/flac2mp3
@@ -0,0 +1,19 @@
+find -name *.flac -print0 | while read -d $'\0' a
+
+
+do
+OUTF=`echo "$a" | sed s/\.flac$/.mp3/g`
+
+ARTIST=`metaflac "$a" --show-tag=ARTIST | sed s/.*=//g`
+TITLE=`metaflac "$a" --show-tag=TITLE | sed s/.*=//g`
+ALBUM=`metaflac "$a" --show-tag=ALBUM | sed s/.*=//g`
+GENRE=`metaflac "$a" --show-tag=GENRE | sed s/.*=//g`
+TRACKNUMBER=`metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g`
+DATE=`metaflac "$a" --show-tag=DATE | sed s/.*=//g`
+
+flac -c -d "$a" | lame -m j -q 0 --vbr-new -V 0 -s 44.1 - "$OUTF"
+id3 -t "$TITLE" -T "${TRACKNUMBER:-0}" -a "$ARTIST" -A "$ALBUM" -y "$DATE" -g "${GENRE:-12}" "$OUTF"
+
+done
+
+
diff --git a/bin/functions.sh b/bin/functions.sh
new file mode 100755
index 0000000..951def5
--- /dev/null
+++ b/bin/functions.sh
@@ -0,0 +1,176 @@
+#!/bin/bash
+# some functions
+
+# zsh color output
+# echo "$FG[46]$FX[blink]Hello, World"
+
+function echo_green() {
+ echo -e '\E[1;32m'$*'\E[0m'
+}
+
+function echo_red() {
+ echo -e '\E[1;31m'$*'\E[0m'
+}
+
+function echo_magenta() {
+ echo -e '\E[1;35m'$*'\E[0m'
+}
+
+function echo_cyan() {
+ echo -e '\E[1;36m'$*'\E[0m'
+}
+
+# log text ...
+function log() {
+ date=`date "+%Y-%m-%d %H:%M:%S"`
+ if [ -n $VERBOSE ]
+ then
+ echo $date $@ | tee -a $LOGFILE
+ fi
+ [ -n $LOGFILE ] && echo $date $@ >> $LOGFILE
+}
+
+function log_green() {
+ date=`date "+%Y-%m-%d %H:%M:%S"`
+ if [ -n $VERBOSE ]
+ then
+ echo_green $date $@
+ fi
+ [ -n $LOGFILE ] && echo $date $@ >> $LOGFILE
+}
+
+function log_red() {
+ date=`date "+%Y-%m-%d %H:%M:%S"`
+ if [ -n $VERBOSE ]
+ then
+ echo_red $date $@
+ fi
+ [ -n $LOGFILE ] && echo $date $@ >> $LOGFILE
+}
+
+function log_magenta() {
+ date=`date "+%Y-%m-%d %H:%M:%S"`
+ if [ -n $VERBOSE ]
+ then
+ echo_magenta $date $@
+ fi
+ [ -n $LOGFILE ] && echo $date $@ >> $LOGFILE
+}
+
+function log_cyan() {
+ date=`date "+%Y-%m-%d %H:%M:%S"`
+ if [ -n $VERBOSE ]
+ then
+ echo_cyan $date $@
+ fi
+ [ -n $LOGFILE ] && echo $date $@ >> $LOGFILE
+}
+
+function notify() {
+ title="$1"
+ text="$2"
+ echo 'naughty.notify({title = "'$title'", text = "'$text'"})' | awesome-client
+}
+
+# mute command
+function mute() {
+ $@ > /dev/null 2> /dev/null
+}
+
+# run pidfile command
+function run() {
+ pidfile=$1
+ shift
+ command=$@
+
+ exec $command > /dev/null 2> /dev/null &
+ pid=$!
+ sleep 0.25
+ npid=$(pidof -s $1)
+ if [ -n "$npid" ] && [ $npid -ne $pid ]
+ then
+ pid=$npid
+ fi
+ echo $pid > $pidfile
+ log_green executed $command"\n"
+}
+
+# run_once $pidfile $command[]
+function run_once() {
+ pidfile=/tmp/run/lock/$1
+ shift
+ command=$@
+
+ mkdir -p $(dirname $pidfile)
+
+ if [ -f $pidfile ];
+ then
+ pid=`head -n 1 $pidfile`
+ running=$(ps -u $(whoami) -p $pid | grep '^[ ]*'$pid)
+ if [ -z "$running" ]
+ then
+ log_cyan stale pidfile found
+ rm -f $pidfile
+
+ npid=$(pidof -s $1)
+ if [ -n "$npid" ]
+ then
+ log_green "pidfile updated\n"
+ echo $npid > $pidfile
+ else
+ run $pidfile $command
+ fi
+
+ else
+ log_cyan "active pidfile found\n"
+ fi
+ else
+ pid=`ps | grep "$command" | grep -v grep | head -n 1 | awk '{ print $1 }'`
+ if [ -z "$pid" ]
+ then
+ log_green not running
+ run $pidfile $command
+ else
+ log_cyan "pidfile updated\n"
+ echo $pid > $pidfile
+ fi
+ fi
+}
+
+# run_auto $file
+function run_auto() {
+ file=$1
+ . $file
+
+ cur_host=`hostname`
+ case $cur_host in
+ annoyance|silence|remembrance)
+ cur_area=private
+ ;;
+ c*|s*)
+ cur_area=unixpool
+ ;;
+ esac
+
+ if [ $area != $cur_area -a $area != "any" ]
+ then
+ log_magenta invalid_area $(basename $file)"\n"
+ return
+ fi
+
+ if [ $host != $cur_host -a $host != "any" ]
+ then
+ log_magenta invalid_host $(basename $file)"\n"
+ return
+ fi
+
+ if [ $allow_multiple -eq 1 ]
+ then
+ log_green run $(basename $file)
+ run /dev/null $command
+ else
+ log_green run_once $(basename $file)
+ run_once `basename $file` $command
+ fi
+}
+
diff --git a/bin/gpg2mutt b/bin/gpg2mutt
new file mode 100755
index 0000000..d9db27b
--- /dev/null
+++ b/bin/gpg2mutt
@@ -0,0 +1,69 @@
+#!/bin/bash
+# ~/.mutt/generate_pgp_auto
+# Generate mutt pgp_auto* send-hooks from gpg pubring.
+# Redirect output to file and source that in muttrc.
+# Add the global hook _before_ sourcing the list:
+# send-hook . 'reset pgp_autoencrypt'
+# -=*# created by erAck #*=- CopyLeft Eike Rathke 2008-01-08T01:36+0100
+
+# At least in an UTF-8 environment sed gets confused by 8-bit characters in
+# real names and doesn't match the address anymore, an empty LANG variable
+# works around.
+LANG=
+
+# Output file
+output="$HOME/.mutt/gpg-auto.rc"
+
+# if the file exists, delete it
+if [ -f "${output}" ]; then
+ rm "${output}"
+fi
+
+# 2nd gpg colon field:
+# d := disabled (deprecated - use the 'D' in field 12 instead)
+# e := expired
+# r := revoked
+
+# Note that the following lines are part of the sed script passed by the shell
+# and may not contain the ' character! Hence the double backslash in mail
+# addresses to escape the regex . dot meta character for Mutt.
+#gpg --list-keys --with-colons --fixed-list-mode --no-secmem-warning
+gpg --list-keys --with-colons --fixed-list-mode --no-secmem-warning | sed -ne '
+
+:START
+
+# ignore d|e|r keys
+/^pub:[der]:/ b IGNORE
+
+# ignore disabled keys, D in last field (12)
+/^pub:.*D[^:]*:$/ b IGNORE
+
+# take keys with encryption capability (E in last field), ignore without and
+# other records like ^tru:
+#/^pub:.*E[^:]*:$/ ! b IGNORE
+
+# extract uids and convert address to mutt hook and print
+:EXTRACT
+# ignore non-uid or no address
+/^uid:[^der]:[^<]*<\([^:>]\+@[^:>]\+\)>/ ! b NUSKIP
+# extract address
+# somehow the colon part after \)> is needed to not produce a trailing : in output
+# sed buffer problem?
+s/^uid:[^der]:[^<]*<\([^:>]\+@[^:>]\+\)>[^:]*:/\1/
+# escape dot meta characters, with escaped backslash for mutt
+s/\./\\\\./g
+# print hook
+s/\(.*\)/send-hook "!~l ~t \1" "set crypt_autoencrypt"/p
+:NUSKIP
+n
+/^pub:/ b START
+b EXTRACT
+
+# ignore entire key with uid/sub/... until next pub is encountered
+:IGNORE
+n
+/^pub:/ b START
+b IGNORE
+
+' | egrep -v 'WhatYouDontWantInThisList@example\\\\\.org' | sort -u > ${output}
+# Note the triple escaped backslash!
diff --git a/bin/letter b/bin/letter
new file mode 100644
index 0000000..87e2c34
--- /dev/null
+++ b/bin/letter
@@ -0,0 +1,71 @@
+#!/bin/bash
+# Create a letter
+
+# Configuration
+template=~/documents/letter_template.tex
+dir=~/documents/`date +%Y`
+texdir=$dir/tex
+editor=/usr/bin/vim
+reader=/usr/bin/mupdf
+
+function mkpdf () {
+ pdflatex -shell-escape $1.tex
+ EXT=(aux log)
+ for i in ${EXT[*]}
+ do
+rm -v $1.$i
+ done
+}
+
+# Preparation
+mkdir -p $dir
+mkdir -p $texdir
+
+named=0
+while [ $named -eq 0 ]
+do
+read -p "Enter document name: " REPLY
+ docname=`echo $REPLY | sed 's/\ /_/g'`
+ docdate="`date +%Y-%m-%d`"
+ doc=$dir/${docdate}_${docname}
+ tex=$dir/${docdate}_${docname}.tex
+ pdf=$dir/${docdate}_${docname}.pdf
+ if [ -e $pdf ]
+ then
+read -p "Document already exists. Overwrite? (y/N) " REPLY
+ [ "$REPLY" == "y" ] || continue
+fi
+
+read -p "Create document \"$pdf\"? (Y/n) " REPLY
+ [ "$REPLY" == "y" -o x"$REPLY" == x ] && named=1
+done
+
+cd $dir
+cp $template $tex
+
+$editor $tex
+mkpdf $doc
+$reader $pdf
+
+finished=0
+while [ $finished -eq 0 ]
+do
+read -p "Finished editing? (Y/n) " REPLY
+ if [ "$REPLY" == "y" -o x"$REPLY" == x ]
+ then
+finished=1
+ else
+ $editor $tex
+ mkpdf $doc
+ $reader $pdf
+ fi
+done
+
+read -p "Keep a copy of the .tex file? (Y/n) " REPLY
+if [ "$REPLY" == "y" -o x"$REPLY" == x ]
+then
+mv $tex $texdir
+else
+rm $tex
+fi
+
diff --git a/bin/lid-switch-action b/bin/lid-switch-action
new file mode 100755
index 0000000..a2779b7
--- /dev/null
+++ b/bin/lid-switch-action
@@ -0,0 +1,198 @@
+#!/bin/bash
+# What action to take on closing the laptop lid,
+# depending on whether a screen is attached or not.
+# This implies setting HandleLidSwitch=ignore in /etc/systemd/logind.conf
+# Call this script from /etc/acpi/handler.sh (or other properly set up script
+# for handling button/lid acpi event) with parameter 0 and 1 for close and open respectively
+
+set -e -u
+
+# Find current Xsession user through loginctl list-sessions (excluding lightdm)
+# TODO: make available for desktop manager, too!
+declare x_user="$(loginctl list-sessions --no-legend| sed -e 's/\s\{2,\}/ /g;s/^[[:space:]]*//' | \
+ cut -d ' ' -f 3| grep -v "lightdm"|uniq)"
+
+# Fail if there is no user set
+if [ -z "$x_user" ]; then
+ echo "error no user!"
+ exit 1
+fi
+
+# Export Xorg DISPLAY and XAUTHORITY
+# TODO: Get number of X DISPLAY from tmp
+#declare x_display="/tmp/.X11-unix/X*"
+export DISPLAY=:0
+export XAUTHORITY=/home/$x_user/.Xauthority
+
+# Define the log file
+declare log="/home/$x_user/.cache/$(basename $0)"
+if [[ ! -w "$log" ]]; then
+ touch "$log"
+ chown ${x_user}:${x_user} "$log"
+# exec > "$log" 2>&1
+fi
+
+declare -a arguments=( )
+declare -a connections=( )
+declare -a active_connections=( )
+declare -a available_connections=( )
+declare -a non_primary=( "eDP1" )
+declare -a pan=( "DP2-1" "eDP1" )
+declare -a pan_vertical=( 'empty' 'empty' ) # with empty placeholders!
+declare internal="eDP1"
+declare current_primary=""
+declare action=""
+
+# declare keywords (xrandr arguments)
+declare pre_output=" --output "
+declare post_auto=" --auto "
+declare post_primary=" --primary "
+declare post_pos_rightof=" --right-of"
+declare post_pos_leftof=" --left-of"
+declare post_off=" --off "
+
+function setup_xscreen()
+{
+ local outputs=( )
+ local connection_counter=0
+ case "$action" in
+ "open")
+ if [ ${#available_connections[@]} -gt 1 ]; then
+ for connection in ${pan[@]}
+ do
+ echo "$connection" >> $log
+ set +e
+ find_component_in "$connection" ${available_connections[@]}
+ if [ $? -eq 0 ]; then
+ echo "$connection is amongst the available outputs." >> $log
+ # adding --output argument
+ outputs=( ${outputs[@]:+${outputs[@]}} "$pre_output" )
+ # adding name of output
+ outputs=( ${outputs[@]:+${outputs[@]}} "$connection" )
+ # check whether output should not be primary in a multi output setup
+ find_component_in "$connection" ${non_primary[@]}
+ if [ $? -eq 0 ]; then
+ echo "$connection is setup for non-primary." >> $log
+ else
+ echo "$connection is NOT setup for non-primary." >> $log
+ # adding --primary argument
+ outputs=( ${outputs[@]:+${outputs[@]}} "$post_primary" )
+ fi
+ if [ $connection_counter -gt 0 ]; then
+ # adding a --right-of <connection before this one> argument
+ outputs=( ${outputs[@]:+${outputs[@]}} "$post_pos_rightof" "${pan[$((connection_counter-1))]}" )
+ fi
+ # adding --auto argument
+ outputs=( ${outputs[@]:+${outputs[@]}}"$post_auto" )
+ connection_counter=$(( $connection_counter + 1 ))
+ fi
+ set -e
+ done
+ fi
+ ;;
+ "close")
+ if [ ${#available_connections[@]} -gt 1 ]; then
+ for connection in ${pan[@]}
+ do
+ echo "$connection" >> $log
+ set +e
+ find_component_in "$connection" ${available_connections[@]}
+ if [ $? -eq 0 ]; then
+ echo "$connection is amongst the available outputs." >> $log
+ # adding --output argument
+ outputs=( ${outputs[@]:+${outputs[@]}} "$pre_output" )
+ # adding name of output
+ outputs=( ${outputs[@]:+${outputs[@]}} "$connection" )
+ # if the connection is not the internal output
+ if [ $connection != $internal ]; then
+ # check whether output should not be primary in a multi output setup
+ find_component_in "$connection" ${non_primary[@]}
+ if [ $? -eq 0 ]; then
+ echo "$connection is setup for non-primary." >> $log
+ else
+ echo "$connection is NOT setup for non-primary." >> $log
+ # adding --primary argument
+ outputs=( ${outputs[@]:+${outputs[@]}} "$post_primary" )
+ fi
+ if [ $connection_counter -gt 0 ]; then
+ # adding a --right-of <connection before this one> argument
+ outputs=( ${outputs[@]:+${outputs[@]}} "$post_pos_rightof" "${pan[$((connection_counter-1))]}" )
+ fi
+ # adding --auto argument
+ outputs=( ${outputs[@]:+${outputs[@]}}"$post_auto" )
+ connection_counter=$(( $connection_counter + 1 ))
+ else
+ # adding a --off argument for the interal screen
+ outputs=( ${outputs[@]:+${outputs[@]}} "$post_off" )
+ fi
+ fi
+ set -e
+ done
+ fi
+ ;;
+ esac
+echo "Calling: xrandr ${outputs[@]}" >> $log
+xrandr ${outputs[@]}
+}
+
+function find_component_in()
+{
+ local -r component=$1
+ shift
+ local value
+ for value in "$@"
+ do
+ [[ $value == "$component" ]] && return 0
+ done
+ return 1
+}
+
+function get_current_x_information()
+{
+ # get current xrandr settings
+ current_xrandr=$(xrandr)
+ # get current primary output from xrandr
+ current_primary=$(echo "$current_xrandr" | \
+ grep -wE '(\bconnected.*primary.*[0-9]{1,5}\x[0-9]{1,5}\+[0-9]{1,5}\+[0-9]{1,5})' | \
+ cut -d ' ' -f 1)
+ echo "Current primary output: $current_primary" >> $log
+ # get all current active connections
+ active_connections=( "${active_connections[@]:+${active_connections[@]}}" $(echo "$current_xrandr" | \
+ grep -wE '(\bconnected.*[0-9]{1,5}\x[0-9]{1,5}\+[0-9]{1,5}\+[0-9]{1,5})' | cut -d ' ' -f 1) )
+ echo "Current active connections: ${active_connections[@]}" >> $log
+ # get all currently available connections
+ available_connections=( "${available_connections[@]:+${available_connections[@]}}" $(echo "$current_xrandr" | \
+ grep -wE '(\bconnected.*)' | cut -d ' ' -f 1) )
+ echo "Currently available connections: ${available_connections[@]}" >> $log
+ # get all available connections
+ connections=( "${connections[@]:+${connections[@]}}" $(echo "$current_xrandr"| grep -v 'Screen' | cut -d ' ' -f 1))
+ echo "All current connections: ${connections[@]}" >> $log
+}
+
+function get_action()
+{
+ arguments=( "${arguments[@]:+${arguments[@]}}" "${@:+$@}" )
+# echo "${@:+$@}" >> $log
+# echo "${arguments[@]:+${arguments[@]}}" >> $log
+ if [ ${#arguments[@]} -gt 0 ];then
+ if [ "${arguments[0]}" = "button/lid" ]; then
+ case "${arguments[2]}" in
+ "open")
+ action="open"
+ ;;
+ "close")
+ action="close"
+ ;;
+ esac
+ elif [ "${arguments[0]}" = "login" ]; then
+ action="open"
+ fi
+ fi
+ echo "Action set: $action" >> $log
+}
+
+# pass arguments to the script to the get_action function
+get_action "${@:+$@}"
+get_current_x_information
+setup_xscreen
+
diff --git a/bin/lightdm-display-setup b/bin/lightdm-display-setup
new file mode 100755
index 0000000..94ce0a5
--- /dev/null
+++ b/bin/lightdm-display-setup
@@ -0,0 +1,4 @@
+#!/bin/bash
+# Script to run as lightdm "display-setup-script"
+
+runuser -l dave -c 'autorandr -c'
diff --git a/bin/lowercase b/bin/lowercase
new file mode 100755
index 0000000..09273b0
--- /dev/null
+++ b/bin/lowercase
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# lowerext.sh
+
+while read f; do
+ if [[ "$f" = *.* ]]; then
+ # Extract the basename
+ b="${f%.*}"
+
+ # Extract the extension
+ x="${f##*.}"
+
+ # Convert the extension to lower case
+ # Note: this only works in recent versions of Bash
+ l="${x,,}"
+
+ if [[ "$x" != "$l" ]]; then
+ mv "$f" "$b.$l"
+ fi
+ else
+ continue
+ fi
+done
diff --git a/bin/mirssi b/bin/mirssi
new file mode 100755
index 0000000..6a9ceaa
--- /dev/null
+++ b/bin/mirssi
@@ -0,0 +1,12 @@
+#!/bin/bash
+# start notification daemon
+# connect to server and open port
+# kill notification daemon
+
+PATH=$HOME/bin/:$PATH
+notify_irssi_server.pl &> /dev/null &
+pid=$!
+
+ssh -R 7090:localhost:7090 sleepmap
+
+kill $pid
diff --git a/bin/monitor-hotplug b/bin/monitor-hotplug
new file mode 100755
index 0000000..6c2d1d6
--- /dev/null
+++ b/bin/monitor-hotplug
@@ -0,0 +1,7 @@
+#!/bin/bash
+# Script to be called upon hotplug (change) udev event, to acquire correct resolution for connected screens
+
+export DISPLAY=:0
+export XAUTHORITY=/home/dave/.Xauthority
+
+/usr/bin/autorandr -c &
diff --git a/bin/notify_irssi_server.pl b/bin/notify_irssi_server.pl
new file mode 100755
index 0000000..e1c7b80
--- /dev/null
+++ b/bin/notify_irssi_server.pl
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+#
+use IO::Socket;
+my $sock = new IO::Socket::INET (
+ LocalHost => '127.0.0.1',
+ LocalPort => '7090',
+ Proto => 'tcp',
+ Listen => 1,
+ Reuse => 1,
+);
+die "Could not create socket: $!\n" unless $sock;
+
+while(true) {
+ my $new_sock = $sock->accept();
+ while(<$new_sock>) {
+ my ($server, $channel, $text, $active) = split(/:::/);
+ #print "$_\n";
+ my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
+ # zero padding
+ if ($hour < 10) {
+ $hour = "0$hour";
+ }
+ if ($minute < 10) {
+ $minute = "0$minute";
+ }
+ if ($channel =~ m/#/ ) {
+ $timeout = 10;
+ }
+ else {
+ if ($channel =~ m/bitlbee/ ) {
+ $timeout = 10;
+ }
+ else {
+ $timeout = 5;
+ }
+ }
+
+ ## filter invalid chars
+ # allowed: [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
+ $text =~ s/[^\x01-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]//go;
+ # # restricted:[#x1-#x8][#xB-#xC][#xE-#x1F][#x7F-#x84][#x86-#x9F]
+ $text =~ s/[\x01-\x08\x0B-\x0C\x0E-\x1F\x7F-\x84\x86-\x9F]//go;
+
+ ## replace otr information
+ $text =~ s/^03/OTR:\ /;
+
+ ## remove '
+ $text =~ s/\'//g;
+
+ ## remove "
+ $text =~ s/\"//g;
+
+ print "message({action=\"new\", timeout=$timeout, active=$active, title=\"$hour:$minute $channel\", text=\"$text\"})\n";
+ ## AWESOME custom function
+ system("echo 'message({action=\"new\", timeout=$timeout, active=$active, title=\"$hour:$minute $channel\", text=\"$text\"})' | awesome-client");
+ ## AWESOME
+ # system("echo 'notify_irssi=naughty.notify({timeout = $timeout, title = \"$hour:$minute $channel\", text = \"$text\"})' | awesome-client");
+ ## NOTIFY-SEND timeout in ms
+ # system("notify-send -t $timeout*1000 \"$hour:$minute $channel\" \"$text\"");
+ }
+}
+close($sock);
diff --git a/bin/notify_mpd b/bin/notify_mpd
new file mode 100755
index 0000000..8bdcf8c
--- /dev/null
+++ b/bin/notify_mpd
@@ -0,0 +1,42 @@
+#!/bin/bash
+# TODO: notify-send on non availabilty of mpc
+mpc "$@" > /dev/null
+lines=`mpc | wc -l`
+
+if [ $lines -gt 1 ];
+then
+ line1="`mpc | head -n 1`"
+ line2="`mpc | head -n 3 | tail -n 2 | sed 's/[a-z]*\:\ off//g'`"
+
+ status="`echo $line2 | awk '{ print $1 }'`"
+ position="`echo $line2 | awk '{ print $3 }'`"
+ position="($position)"
+ volume="[`echo $line2 | awk '{ print $5 $6 }' | sed 's/volume\://' | sed 's/repeat\://'`]"
+
+ repeat="`echo $line2 | grep -c 'repeat: on' | sed 's/1/r/' | sed 's/0//'`"
+ random="`echo $line2 | grep -c 'random: on' | sed 's/1/z/' | sed 's/0//'`"
+ single="`echo $line2 | grep -c 'single: on' | sed 's/1/s/' | sed 's/0//'`"
+ consume="`echo $line2 | grep -c 'consume: on' | sed 's/1/c/' | sed 's/0//'`"
+ flags="[$repeat$random$single$consume]"
+
+ title="$line1"
+ text="$status $position $flags $volume"
+
+else
+ line="`mpc | sed 's/[a-z]*\:\ off//g'`"
+
+ volume="[`echo $line | awk '{ print $2 }'`]"
+
+ repeat="`echo $line | grep -c 'repeat: on' | sed 's/1/r/' | sed 's/0//'`"
+ random="`echo $line | grep -c 'random: on' | sed 's/1/z/' | sed 's/0//'`"
+ single="`echo $line | grep -c 'single: on' | sed 's/1/s/' | sed 's/0//'`"
+ consume="`echo $line | grep -c 'consume: on' | sed 's/1/c/' | sed 's/0//'`"
+ flags="[$repeat$random$single$consume]"
+
+ title="not playing"
+ text="$flags $volume"
+fi
+
+## NOTIFY-SEND
+notify-send -t 2000 "$title" "$text"
+
diff --git a/bin/nouveau2nvidia b/bin/nouveau2nvidia
new file mode 100755
index 0000000..a71e6b7
--- /dev/null
+++ b/bin/nouveau2nvidia
@@ -0,0 +1,57 @@
+#!/bin/bash
+# nouveau -> nvidia
+
+set -e
+# check if root
+if [[ $EUID -ne 0 ]]; then
+ echo "You must be root to run this script. Aborting...";
+ exit 1;
+fi
+
+echo "Switching MODULES line in /etc/mkinitcpio.conf"
+sed -i 's/MODULES="dm-mod nouveau"/#MODULES="dm-mod nouveau"/' /etc/mkinitcpio.conf
+sed -i 's/#*MODULES="dm-mod nvidia"/MODULES="dm-mod nvidia"/' /etc/mkinitcpio.conf
+
+echo "Uninstalling nouveau drivers, installing nvidia drivers."
+
+declare -i NVIDIAINSTALL
+NVIDIART=$(pacman -Qi|grep Name|grep linux-rt)
+
+if [[ -n "$NVIDIART" ]]; then
+ NVIDIAINSTALL=$NVIDIAINSTALL+1
+ echo "Seems that linux-rt is installed. Marking nvidia-rt for installation."
+fi
+
+pacman -Rdds --noconfirm nouveau-dri xf86-video-nouveau mesa-libgl lib32-nouveau-dri lib32-mesa-libgl
+
+case $NVIDIAINSTALL in
+ 0)
+ pacman -S --noconfirm nvidia lib32-nvidia-libgl
+ ;;
+ 1)
+ pacman -S --noconfirm nvidia lib32-nvidia-libgl
+ aura -A --noconfirm nvidia-rt
+ ;;
+esac
+
+echo "Switching X11 settings."
+NVIDIACONF="/etc/X11/xorg.conf.d/20-nvidia.conf"
+NOUVEAUCONF="/etc/X11/xorg.conf.d/20-nouveau.conf"
+BKP=".bkp"
+
+if [[ -f $NOUVEAUCONF ]]; then
+ mv $NOUVEAUCONF "$NOUVEAUCONF$BKP"
+fi
+
+if [ -f "$NVIDIACONF$BKP" ]; then
+ mv "$NVIDIACONF$BKP" $NVIDIACONF
+fi
+
+
+echo "Building new initramfs images."
+mkinitcpio -p linux
+
+if [[ -f "/etc/mkinitcpio.d/linux-rt.preset" ]]; then
+ mkinitcpio -p linux-rt
+fi
+
diff --git a/bin/nvidia2nouveau b/bin/nvidia2nouveau
new file mode 100755
index 0000000..e862d8c
--- /dev/null
+++ b/bin/nvidia2nouveau
@@ -0,0 +1,58 @@
+#!/bin/bash
+# nvidia -> nouveau
+
+set -e
+# check if root
+if [[ $EUID -ne 0 ]]; then
+ echo "You must be root to run this script. Aborting...";
+ exit 1;
+fi
+
+echo "Switching MODULES line in /etc/mkinitcpio.conf"
+sed -i 's/#*MODULES="dm-mod nouveau"/MODULES="dm-mod nouveau"/' /etc/mkinitcpio.conf
+sed -i 's/MODULES="dm-mod nvidia"/#MODULES="dm-mod nvidia"/' /etc/mkinitcpio.conf
+
+echo "Uninstalling nvidia drivers, installing nouveau drivers."
+
+declare -i NVIDIAINSTALL
+NVIDIART=$(pacman -Qi|grep Name|grep nvidia-rt)
+
+if [[ -n "$NVIDIART" ]]; then
+ NVIDIAINSTALL=$NVIDIAINSTALL+1
+ echo "Seems that nvidia-rt is installed. Marked for removal."
+fi
+
+case $NVIDIAINSTALL in
+ 0)
+ pacman -Rdds --noconfirm nvidia nvidia-libgl lib32-nvidia-libgl
+ ;;
+ 1)
+ pacman -Rdds --noconfirm nvidia nvidia-rt nvidia-libgl lib32-nvidia-libgl
+ ;;
+esac
+
+pacman -S --noconfirm nouveau-dri xf86-video-nouveau lib32-nouveau-dri
+
+echo "Switching X11 settings."
+NVIDIACONF="/etc/X11/xorg.conf.d/20-nvidia.conf"
+NOUVEAUCONF="/etc/X11/xorg.conf.d/20-nouveau.conf"
+BKP=".bkp"
+
+if [ -f $NVIDIACONF ]; then
+ mv $NVIDIACONF "$NVIDIACONF$BKP"
+fi
+
+if [[ -f "$NOUVEAUCONF$BKP" ]]; then
+ mv "$NOUVEAUCONF$BKP" $NOUVEAUCONF
+fi
+
+echo "Building new initramfs images."
+mkinitcpio -p linux
+
+if [[ -f "/etc/mkinitcpio.d/linux-rt.preset" ]]; then
+ mkinitcpio -p linux-rt
+fi
+
+if [[ -f "/etc/mkinitcpio.d/linux-mainline.preset" ]]; then
+ mkinitcpio -p linux-rt
+fi
diff --git a/bin/nvsetup b/bin/nvsetup
new file mode 100755
index 0000000..23adeb5
--- /dev/null
+++ b/bin/nvsetup
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+SCREENCONNECTED=$(xrandr|grep DP-1)
+if [[ -n "$(lsmod|grep nouveau)" ]]; then
+ if [[ "$SCREENCONNECTED" == *connected* && "$SCREENCONNECTED" != *disconnected* ]]; then
+ echo "Setup DP-1"
+# sleep 5
+ xrandr --output DP-1 --auto --primary --output LVDS-1 --auto --right-of DP-1
+ fi
+fi
diff --git a/bin/pacman-disowned b/bin/pacman-disowned
new file mode 100755
index 0000000..df1b5da
--- /dev/null
+++ b/bin/pacman-disowned
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$
+db=$tmp/db
+fs=$tmp/fs
+
+mkdir "$tmp"
+trap 'rm -rf "$tmp"' EXIT
+
+pacman -Qlq | sort -u > "$db"
+
+find /bin /etc /lib /sbin /usr \
+ ! -name lost+found \
+ \( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
+
+comm -23 "$fs" "$db"
diff --git a/bin/pacoptpd b/bin/pacoptpd
new file mode 100755
index 0000000..30e09ec
--- /dev/null
+++ b/bin/pacoptpd
@@ -0,0 +1,14 @@
+#!/bin/bash
+#
+# list optional dependencies of installed packages
+#
+
+for i in $(pacman -Qq)
+do
+ deps="$(pacman -Qi ${i} | awk '/Optional/,/Required/' | grep -v "Required" | sed -e 's/Optional Deps[ ]*://g' -e 's/^[ ]*/ /')"
+ if [ "$deps" != " None" ]; then
+ echo "$i"
+ echo "$deps"
+ echo ""
+ fi
+done
diff --git a/bin/pass2msmtp b/bin/pass2msmtp
new file mode 100755
index 0000000..5ba07fa
--- /dev/null
+++ b/bin/pass2msmtp
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+pass Mail/$1
diff --git a/bin/pass2offlineimap b/bin/pass2offlineimap
new file mode 100644
index 0000000..72f5829
--- /dev/null
+++ b/bin/pass2offlineimap
@@ -0,0 +1,5 @@
+#! /usr/bin/env python2
+from subprocess import check_output
+
+def get_pass(account):
+ return check_output("pass Mail/" + account, shell=True).rstrip()
diff --git a/bin/pass2vdirsyncer b/bin/pass2vdirsyncer
new file mode 100755
index 0000000..6b21577
--- /dev/null
+++ b/bin/pass2vdirsyncer
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+pass show owncloud/$1@$2
+
diff --git a/bin/rmcache b/bin/rmcache
new file mode 100755
index 0000000..acba953
--- /dev/null
+++ b/bin/rmcache
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+USERDIR=$1
+
+echo "rmcache cleaning up: $USERDIR"
+
+caches=".cache/chromium"
+caches+=" .cache/thumbnails"
+## take care of the whitespace!
+caches+=" .config/chromium/Default/*Index*"
+caches+=" .thumbnails"
+caches+=" .opera/cache4"
+caches+=" .opera/cache"
+caches+=" .java/deployment/cache"
+caches+=" .local/share/Trash"
+caches+=" .gnome2/epiphany/mozilla/epiphany/Cache"
+caches+=" .adobe/Acrobat/*/Cache"
+caches+=" .adobe/Acrobat/*/Temp"
+caches+=" .macromedia/Flash_Player/*"
+caches+=" .adobe/Flash_Player/AssetCache"
+caches+=" .java/deployment/cache"
+
+pushd $USERDIR > /dev/null
+
+for cache in $caches
+do
+ echo "removing $cache"
+ rm -Rf "$cache"
+ [ $? -eq 0 ] || exit 1
+done
+
+popd > /dev/null
diff --git a/bin/rollback-profile b/bin/rollback-profile
new file mode 100755
index 0000000..81386b3
--- /dev/null
+++ b/bin/rollback-profile
@@ -0,0 +1,69 @@
+#!/bin/bash
+#
+# Rollback a thunderbird or firefox profile backup from store location while gpg decrypting
+#
+
+# Checking if firefox and/ or thunderbird are running.
+firefoxPID=`ps -C firefox -o pid=`
+thunderbirdPID=`ps -C thunderbird -o pid=`
+
+firefoxTMP=/tmp/firefox.tgz
+thunderbirdTMP=/tmp/thunderbird.tgz
+firefoxIF=~/.mozilla/firefox/
+thunderbirdIF=~/.thunderbird/
+profileName=dvzrv
+backupEND=-rollback
+OF=~/ownCloud/backup/web/
+gpgEND=.gpg
+tgzEND=.tgz
+
+case $1 in
+ "thunderbird")
+ if [[ -z "$thunderbirdPID" ]]
+ then
+ echo "Thunderbird is not running."
+ echo "Rolling back profile backup."
+ echo "Copying backup to /tmp and moving old profile to rollback location."
+ cp $OF$1$tgzEND$gpgEND $thunderbirdTMP$gpgEND
+ mv $thunderbirdIF$profileName $thunderbirdIF$profileName$backupEND
+ echo "Decrypting file."
+ gpg -o $thunderbirdTMP -d $thunderbirdTMP$gpgEND
+ echo "Extracting files from tar."
+ tar xzvf $thunderbirdTMP -C $thunderbirdIF
+ echo "Cleaning up."
+ rm $thunderbirdTMP $thunderbirdTMP$gpgEND
+ echo "Done."
+ else
+ echo "Thunderbird is still running."
+ echo "Skipping rollback."
+ fi
+ ;;
+ "firefox")
+ if [[ -z "$firefoxPID" ]]
+ then
+ echo "Firefox is not running."
+ psdStopped=`systemctl status psd |grep inactive`
+ if [[ ! -z "$psdStopped" ]]; then
+ echo "Psd daemon is inactive."
+ echo "Rolling back profile backup."
+ echo "Copying backup to /tmp and moving old profile to rollback location."
+ cp $OF$1$tgzEND$gpgEND $firefoxTMP$gpgEND
+ mv $firefoxIF$profileName $firefoxIF$profileName$backupEND
+ echo "Decrypting file."
+ gpg -o $firefoxTMP -d $firefoxTMP$gpgEND
+ echo "Extracting files from tar."
+ tar xzvf $firefoxTMP -C $firefoxIF
+ echo "Cleaning up."
+ rm $firefoxTMP $firefoxTMP$gpgEND
+ echo "Done."
+ else
+ echo "Psd service is still running!"
+ echo "Disable it using: 'systemctl stop psd'."
+ echo "Skipping rollback."
+ fi
+ else
+ echo "Firefox is still running."
+ echo "Skipping rollback."
+ fi
+ ;;
+esac
diff --git a/bin/run_once b/bin/run_once
new file mode 100755
index 0000000..3829f7e
--- /dev/null
+++ b/bin/run_once
@@ -0,0 +1,4 @@
+#!/bin/bash
+#Alternative
+pgrep $@ > /dev/null || ($@ &)
+
diff --git a/bin/sclang b/bin/sclang
new file mode 100755
index 0000000..a34f4ea
--- /dev/null
+++ b/bin/sclang
@@ -0,0 +1,10 @@
+#!/bin/sh
+# If not running my laptop (with X screen), run sclang in a xvfb environment.
+# This ensures getting around a bug with QPixmaps that needs a X server to run.
+if [[ $HOSTNAME == *dvzrv* ]]; then
+ echo "/usr/bin/sclang"
+ /usr/bin/sclang "$@"
+else
+ echo "/usr/bin/sclang in fake X screen"
+ /usr/bin/xvfb-run -s "-screen 1, 1280x800x24" -a -e ~/.log/xvfb-run-sclang.error /usr/bin/sclang "$@"
+fi
diff --git a/bin/screensetup b/bin/screensetup
new file mode 100755
index 0000000..b15d63e
--- /dev/null
+++ b/bin/screensetup
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+#set dpms and screen blanking
+xset +dpms
+xset s 360 360
+
+# Setup screens
+
+# get info from xrandr
+IFS=$'\r\n' connectedOutputs=($(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"))
+
+#if more than one screen, setup both, using the external left of the internal as primary
+if [ ${#connectedOutputs[@]} -gt 1 ]; then
+ xrandr --output "${connectedOutputs[0]}" --auto --output "${connectedOutputs[1]}" --auto --primary --left-of "${connectedOutputs[0]}"
+fi
+
+
diff --git a/bin/secret b/bin/secret
new file mode 100755
index 0000000..27391ff
--- /dev/null
+++ b/bin/secret
@@ -0,0 +1,41 @@
+#!/bin/bash
+#
+# Open and write to a gpg encrypted file
+# Will create the file for you if it's not there yet
+#
+# secret <path/to/file>
+
+writeback () {
+ gpg --yes -eq -r "$gpgkey" -o $1 $tmpfile
+ echo "Encrypted file using gpg public key: $gpgkey"
+ chmod 600 $1
+ echo "Finished working on file: $1."
+ rm $tmpfile
+ echo "Removed temp file $tmpfile"
+}
+
+filetotmp () {
+ gpg --yes -o $tmpfile -d $1
+}
+
+tmpfile=$(mktemp)
+gpgkey="David Runge <david.runge@frqrec.com>"
+
+# if file is available, use it, else create it
+if [[ -f "$1" ]];then
+ filetotmp $1
+ echo "File $1 now in $tmpfile ."
+fi
+
+echo "Opening file in $EDITOR"
+# edit decrypted file in /tmp
+$EDITOR $tmpfile
+if [[ $? -gt 0 ]];then
+ echo "Something went wrong with $EDITOR ."
+ echo "Aborting."
+ rm $tmpfile
+ echo "Deleted $tmpfile ."
+else
+ # write back the file
+ writeback $1
+fi
diff --git a/bin/set_backlight b/bin/set_backlight
new file mode 100755
index 0000000..c110321
--- /dev/null
+++ b/bin/set_backlight
@@ -0,0 +1,56 @@
+#!/bin/bash
+# Script to set backlight on startup on Lenovo W540 using
+# /sys/class/backlight/intel_backlight/brightness
+# This must be run as root.
+
+# check if root
+if [[ $EUID -ne 0 ]];then
+ echo "This must be run as root."
+else
+ # get current and maximum brightness, set maximum steps allowed
+ brightness_current=$(cat /sys/class/backlight/intel_backlight/brightness)
+ brightness_max=$(cat /sys/class/backlight/intel_backlight/max_brightness)
+ brightness_max=$(($brightness_max-1000))
+ brightness_steps=20
+ brightness_steps_width=$(($brightness_max/$brightness_steps))
+ brightness_new=0
+ # if first parameter to this script is a number
+ re='^[0-9]+$'
+ if [[ $1 =~ $re ]]; then
+ echo "Direct step called"
+ if [[ $1 -gt brightness_steps && $1 -ne 0 ]];then
+ brightness_new=$(($1*brightness_steps_width))
+ fi
+ elif [[ $1 == "up" || $1 == "down" ]];then
+ brightness_calc=$(($brightness_current / $brightness_steps_width))
+ case $1 in
+ "up" )
+ brightness_calc=$((($brightness_calc+1) * $brightness_steps_width))
+ echo "brightness_calc: $brightness_calc"
+ echo "brightness_max: $brightness_max"
+ if [[ $brightness_max -gt $brightness_calc ]];then
+ echo "true"
+ brightness_new=$brightness_calc
+ else
+ echo "false"
+ brightness_new=$brightness_current
+ fi
+ ;;
+ "down" )
+ brightness_calc=$((($brightness_calc-1) * $brightness_steps_width))
+ echo "brightness_calc: $brightness_calc"
+ if [[ $brightness_calc -gt 0 ]];then
+ brightness_new=$brightness_calc
+ else
+ brightness_new=$brightness_current
+ fi
+ ;;
+ esac
+ echo "Step called with: $1"
+ fi
+ echo $brightness_current
+ echo $brightness_new
+ # set to 234 (around 4th step)
+ #echo 234 > /sys/class/backlight/intel_backlight/brightness
+ echo $brightness_new > /sys/class/backlight/intel_backlight/brightness
+fi
diff --git a/bin/set_volume b/bin/set_volume
new file mode 100755
index 0000000..1652312
--- /dev/null
+++ b/bin/set_volume
@@ -0,0 +1,142 @@
+#!/usr/bin/env bash
+
+FUNCTIONS=$HOME/bin/functions.sh
+[ -e $FUNCTIONS ] || exit 1
+. $FUNCTIONS
+
+state_muted="/tmp/$(whoami)/state_muted"
+state_muted_headphone=""
+state_muted_speaker=""
+state_bt_headphone=""
+name_bt_headphone="bluez_sink.00_1B_66_02_36_41"
+cardselector=""
+card_icon="/usr/share/icons/gnome/48x48/devices/audio-speakers.png" # gnome-icon-theme
+
+function increase_volume()
+{
+ mute amixer $cardselector sset Master 5%+
+ local state_master=$(amixer $cardselector sget Master |grep "%" | cut -d'%' -f1 | cut -d '[' -f2 | uniq)
+ #update pactl bluetooth audio to same level if present
+ if [ $state_bt_headphone = "[on]" ];then
+ pactl set-sink-volume $name_bt_headphone "$state_master%"
+ fi
+ print_volumes $state_master
+}
+
+function decrease_volume()
+{
+ mute amixer $cardselector sset Master 5%-
+ local state_master=$(amixer $cardselector sget Master |grep "%" | cut -d'%' -f1 | cut -d '[' -f2 | uniq)
+ #update pactl bluetooth audio to same level if present
+ if [ $state_bt_headphone = "[on]" ];then
+ pactl set-sink-volume $name_bt_headphone "$state_master%"
+ fi
+ print_volumes $state_master
+}
+
+function print_volumes()
+{
+ local state_master=$1
+ local state_headphone=$(amixer $cardselector sget Headphone |grep "%" | cut -d'%' -f1 | cut -d '[' -f2 | uniq)
+ local state_speaker=$(amixer $cardselector sget Speaker |grep "%" | cut -d'%' -f1 | cut -d '[' -f2 | uniq)
+ if [ $state_bt_headphone = "[on]" ]; then
+ send_notify "Master: $state_master% \nHeadphone: $state_headphone% \nSpeaker: $state_speaker%\nBT Headphone: $state_master%"
+ else
+ send_notify "Master: $state_master% \nHeadphone: $state_headphone% \nSpeaker: $state_speaker%"
+ fi
+}
+
+function toggle_volume()
+{
+ local state_master=$(amixer $cardselector sget Master | grep -o '\[o[n|f]*\]' | head -n 1)
+ local state_headphone=$(amixer $cardselector sget Headphone | grep -o '\[o[n|f]*\]' | head -n 1)
+ local state_speaker=$(amixer $cardselector sget Speaker | grep -o '\[o[n|f]*\]' | head -n 1)
+ case "$state_master" in
+ "[on]")
+ mute amixer $cardselector sset Master mute
+ state_master="[off]"
+ # if headphones are off already, don't mute, instead save state to tmp file
+ if [ "$state_headphone" = "[off]" ];then
+ echo "headphone [off]" >> "$state_muted"
+ else
+ mute amixer $cardselector sset Headphone mute
+ state_headphone="[off]"
+ fi
+ # if speakers are off already, don't mute, instead save state to tmp file
+ if [ "$state_speaker" = "[off]" ];then
+ echo "speaker [off]" >> "$state_muted"
+ else
+ mute amixer $cardselector sset Speaker mute
+ state_speaker="[off]"
+ fi
+ # if present, also mute bluetooth headphone
+ if [ $state_bt_headphone = "[on]" ]; then
+ pactl set-sink-mute $name_bt_headphone 1
+ fi
+ ;;
+ "[off]")
+ mute amixer $cardselector sset Master unmute
+ state_master="[on]"
+ # if headphones are meant to be off, don't unmute them again
+ if [ "$state_muted_headphone" != "[off]" ];then
+ mute amixer $cardselector sset Headphone unmute
+ state_headphone="[on]"
+ fi
+ # if headphones are meant to be off, don't unmute them again
+ if [ "$state_muted_speaker" != "[off]" ];then
+ mute amixer $cardselector sset Speaker unmute
+ state_speaker="[on]"
+ fi
+ # if present, also unmute bluetooth headphone
+ if [ $state_bt_headphone = "[on]" ]; then
+ pactl set-sink-mute $name_bt_headphone 0
+ fi
+ ;;
+ esac
+ if [ $state_bt_headphone = "[on]" ]; then
+ send_notify "Master: $state_master \nHeadphone: $state_headphone \nSpeaker: $state_speaker\nBT Headphone: $state_master" 2000
+ else
+ send_notify "Master: $state_master \nHeadphone: $state_headphone \nSpeaker: $state_speaker" 2000
+ fi
+}
+
+function send_notify()
+{
+ # allow timeout to be set by 2nd argument
+ local timeout=500
+ if [ $2 -gt 0 ]; then
+ timeout=$2
+ fi
+ notify-send -t $timeout \
+ -i /usr/share/icons/gnome/48x48/devices/audio-speakers.png \
+ "Volume" "$1"
+}
+
+if [ $HOSTNAME = "dvzrv" ];then
+ cardselector=" -M -c 1 "
+ if [ -n "$(pactl list sinks short | grep $name_bt_headphone)" ]; then
+ state_bt_headphone="[on]"
+ fi
+ #TODO: also check pactl for JACK sink
+fi
+
+case "$1" in
+ increase)
+ increase_volume
+ ;;
+ decrease)
+ decrease_volume
+ ;;
+ toggle)
+ if [ -f "$state_muted" ]; then
+ state_muted_headphone=$(cat "$state_muted" | grep headphone | cut -d' ' -f2)
+ state_muted_speaker=$(cat "$state_muted" | grep speaker | cut -d' ' -f2)
+ rm "$state_muted"
+ else
+ touch "$state_muted"
+ fi
+ toggle_volume
+ ;;
+ *)
+ ;;
+esac
diff --git a/bin/stikked b/bin/stikked
new file mode 100644
index 0000000..b209208
--- /dev/null
+++ b/bin/stikked
@@ -0,0 +1,115 @@
+#! /usr/bin/env python2
+
+import argparse
+import os
+import sys
+import pycurl
+import StringIO
+import subprocess
+import urllib
+
+## CONFIGURATION {
+user='example-user'
+apiurl='http://paste.giev.de/api/create'
+## }
+
+
+def main():
+ global verbose
+
+ # parse arguments
+ parser = argparse.ArgumentParser(prog='stikked')
+ parser.add_argument('-V', '--version', action='version', version='%(prog)s 0.1')
+ parser.add_argument('-v', '--verbose', action='store_true', dest='verbose', help='verbose mode', default=False)
+ parser.add_argument('-s', dest='syntax', action='store', help='syntax to highlight', default='text')
+ parser.add_argument('-p', dest='private', action='store_true', help='set paste to private', default=False)
+ parser.add_argument('-t', dest='title', action='store', help='set title of paste')
+ parser.add_argument('fname', metavar='FILE|-', help='file to paste or - for stdin')
+ args = parser.parse_args()
+ if args.verbose:
+ verbose = args.verbose
+ print args
+
+ # private
+ private = '1' if args.private else '0'
+
+ # from stdin
+ if args.fname == '-':
+ title = args.title if args.title else 'stdin'
+ text=sys.stdin.read()
+ syntax=args.syntax
+
+ # from file
+ else:
+ fname = args.fname
+
+ if not os.path.isfile(fname):
+ print "No such file: {0}".format(fname)
+ sys.exit(1)
+ else:
+ title = args.title if args.title else os.path.split(fname)[1]
+
+ if args.syntax == 'text':
+ ext = os.path.splitext(fname)[1][1:]
+ syntax = _detect_syntax(ext)
+ else:
+ syntax = args.syntax
+
+ fopen = file(fname, 'r')
+ text = fopen.read()
+
+ _paste(text, title, syntax, private)
+
+
+# send paste to server
+def _paste(text, title, syntax, private):
+ postparams = [
+ ('text', text),
+ ('name', user),
+ ('title', title),
+ ('lang', syntax),
+ ('private', private)]
+
+ postfields=urllib.urlencode(postparams)
+
+ curl = pycurl.Curl()
+ curl.setopt(pycurl.URL, apiurl)
+ curl.setopt(pycurl.POST, True)
+ curl.setopt(pycurl.POSTFIELDS, postfields)
+ # Fixes the HTTP/1.1 417 Expectation Failed Bug
+ header = []
+ header.append("Expect: ")
+ curl.setopt(pycurl.HTTPHEADER, header)
+ curl.setopt(pycurl.NOPROGRESS, True)
+ b = StringIO.StringIO()
+ curl.setopt(pycurl.WRITEFUNCTION, b.write)
+ curl.perform()
+ print b.getvalue();
+
+ # copy to primary clipboard
+ xsel_proc = xsel_proc = subprocess.Popen(['xsel', '-pi'], stdin=subprocess.PIPE)
+ xsel_proc.communicate(b.getvalue())
+
+
+# more possible of course
+def _detect_syntax(ext):
+ if ext == 'h':
+ syntax='c'
+ elif ext == 'log':
+ syntax='logcat'
+ elif ext == "py":
+ syntax = 'python'
+ elif ext == "pl":
+ syntax = 'perl'
+ elif ext == "patch":
+ syntax = 'diff'
+ elif ext == 'c' or ext == 'cpp' or ext == 'java' or ext == 'sh':
+ syntax=ext
+ else:
+ syntax='text'
+
+ return syntax
+
+
+if __name__ == '__main__':
+ main()
diff --git a/bin/stop_jack b/bin/stop_jack
new file mode 100755
index 0000000..f07b6be
--- /dev/null
+++ b/bin/stop_jack
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+jack_control stop
+sleep 3
+jack_control exit
+
+
+exit 0
+
+#kill $(pidof jackd)
+#case "$HOSTNAME" in
+# "beagleclone")
+# kill $(pidof jackd)
+# kill $(pidof xvfb-run)
+# ;;
+#esac
diff --git a/bin/switch_wfs_os b/bin/switch_wfs_os
new file mode 100755
index 0000000..c243826
--- /dev/null
+++ b/bin/switch_wfs_os
@@ -0,0 +1,91 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+IFS=$'\n\t'
+
+os_new="arch-rt"
+os_old="ubuntu-studio"
+os_current=""
+os_set=""
+
+syslinux_location_arch="/boot/syslinux/syslinux.cfg"
+syslinux_location_ubuntu="/mnt/boot/syslinux/syslinux.cfg"
+syslinux_location=""
+
+reboot_cmd_arch="sudo systemctl reboot"
+reboot_cmd_ubuntu="/usr/bin/sudo /sbin/reboot -q"
+reboot_cmd=""
+
+hostnames_arch=( "wfs-master" "wfs-node1" "wfs-node2" )
+hostnames_ubuntu=( "wfs" "n101" "n102" )
+host=$(hostname)
+
+if [ $UID -ne 0 ]; then
+ echo "You need to be root or call this script with sudo to do this."
+ exit 1
+fi
+
+echo "Host: $host."
+
+if [ -f /etc/arch-release ]; then
+ os_current=$os_new
+ syslinux_location=$syslinux_location_arch
+ reboot_cmd=$reboot_cmd_arch
+else
+ os_current=$os_old
+ syslinux_location=$syslinux_location_ubuntu
+ reboot_cmd=$reboot_cmd_ubuntu
+fi
+echo "Currently running: $os_current"
+
+if [ -f "${syslinux_location}" ]; then
+ os_set=$(sed -ne '/^DEFAULT/p' $syslinux_location| cut -d' ' -f2)
+ echo "Currently set up for next boot: $os_set"
+else
+ echo "Error: Syslinux configuration does not exist ($syslinux_location)"
+ exit 1
+fi
+
+if [ "$os_set" == "${os_new}" ] && [ "$os_current" == "${os_new}" ]; then
+ if [[ " ${hostnames_arch[@]} " =~ " $host " ]]; then
+ echo "Switching to: $os_old"
+ sed -i 's/^DEFAULT .*/DEFAULT '${os_old}'/' $syslinux_location
+ if [[ "${hostnames_arch[0]}" == "$host" ]]; then
+ echo "Calling script on nodes:"
+ set +e
+ ssh wfs@${hostnames_arch[1]} "/usr/bin/sudo bin/$(basename $0)"
+ ssh wfs@${hostnames_arch[2]} "/usr/bin/sudo bin/$(basename $0)"
+ set -e
+ fi
+ else
+ echo "Error: Script is not supposed to be running on this host!"
+ echo "$(hostname) is not one of the following: ${hostnames_arch[@]}"
+ echo "Exiting."
+ exit 1
+ fi
+elif [ "$os_set" == "${os_old}" ] && [ "$os_current" == "${os_old}" ]; then
+ if [[ " ${hostnames_ubuntu[@]} " =~ " $host " ]]; then
+ echo "Switching to: $os_new"
+ sed -i 's/^DEFAULT .*/DEFAULT '${os_new}'/' $syslinux_location
+ if [[ "${hostnames_ubuntu[0]}" == "$host" ]]; then
+ echo "Calling script on nodes:"
+ ssh wfs@${hostnames_ubuntu[1]} "/usr/bin/sudo bin/$(basename $0)"
+ ssh wfs@${hostnames_ubuntu[2]} "/usr/bin/sudo bin/$(basename $0)"
+ fi
+ else
+ echo "Error: Script is not supposed to be running on this host!"
+ echo "$host is not one of the following: ${hostnames_ubuntu[@]}"
+ echo "Exiting."
+ exit 1
+ fi
+else
+ echo "Error: Current OS ($os_current) and OS to be booted ($os_set) are not the same."
+ echo "Fix this manually in $syslinux_location or just reboot (into the other OS)."
+ echo "Exiting."
+ exit 1
+fi
+
+
+echo "Rebooting."
+eval $reboot_cmd
+exit 0
diff --git a/bin/syncmpdpl b/bin/syncmpdpl
new file mode 100644
index 0000000..85cf723
--- /dev/null
+++ b/bin/syncmpdpl
@@ -0,0 +1,209 @@
+#! /usr/bin/env python2
+# -*- coding: utf-8 -*-
+#
+# script to sync a mpd playlist to a mass storage audio player
+#
+# needs
+# - python-sqlite2
+# - eyed3
+# - python-argparser
+# - python-mpd
+
+import argparse
+import os
+import sys
+import hashlib
+import subprocess
+
+#from time import time
+import time
+from mpd import (MPDClient, CommandError)
+
+import shutil
+
+# set encoding to utf-8
+reload(sys)
+sys.setdefaultencoding( "utf-8" )
+
+config_dir = '/home/konni/.config/pmsync'
+music = '/net/media/music'
+playlist = 'sync'
+mpdhost = 'innocence'
+destination = '/run/media/konni/ville/music'
+verbose = False
+
+def _recode(string):
+ string = string.replace('"','')
+ # byte2utf8
+ # string = unicode( string, "utf-8", errors="ignore" )
+ # utf2byte
+ string = string.encode('utf-8')
+ return string
+
+def main():
+ global verbose, playlist, mpdhost, destination
+ parser = argparse.ArgumentParser(prog='pmsync')
+
+ parser.add_argument('--version', action='version', version='%(prog)s 0.1')
+ parser.add_argument('-v', '--verbose', action='store_true', dest='verbose', help='verbose mode', default=False)
+
+ parser.add_argument('action', metavar='sync | list | import')
+
+ parser.add_argument('-m', dest='host', metavar='mpdhost', action='store', help='mpd host', default=mpdhost)
+ parser.add_argument('-p', dest='pl', metavar='playlist', action='store', help='playlist to use', default=playlist)
+ parser.add_argument('-d', dest='dest', metavar='destination', action='store', help='destination', default=destination)
+ parser.add_argument('-e', dest='exact', action='store_true', help='exact checking (slow)', default=False)
+
+ args = parser.parse_args()
+ if args.verbose:
+ verbose = args.verbose
+ print args
+
+ ## action sync
+ if args.action == 'sync':
+ print '>> syncing \"{0}/{1}\"to \"{2}\"'.format(args.host, args.pl, args.dest)
+ _sync(args.host, args.pl, args.dest, args.exact)
+
+ ## action list
+ elif args.action == 'list':
+ print '>> listing from \"{0}/{1}\"'.format(args.host, args.pl)
+ _list(args.host, args.pl)
+
+ ## action import
+ elif args.action == 'import':
+ print '>> importing from \"{0}\" to playlist \"{1}/{2}\"'.format(args.dest, args.host, args.pl)
+ port='6600'
+ CON_ID = {'host':args.host, 'port':port}
+ client = MPDClient()
+ mpdConnect(client, CON_ID)
+ playlistinfo = client.listplaylistinfo(playlist)
+ for dirname, dirnames, filenames in os.walk(args.dest):
+ for filename in filenames:
+ destfile = os.path.join(dirname, filename)
+ path=destfile.replace(args.dest+"/","")
+ found = False
+ for item in playlistinfo:
+ if item['file'] == path:
+ found = True
+ if not found:
+ print '[x] {0}'.format(path)
+ client.add(path)
+ client.rm(args.pl)
+ client.save(args.pl)
+
+ ## show help if no action called
+ else:
+ parser.print_help()
+
+def _sync(host, pl, dest, exact):
+ _checkdir(dest)
+ port='6600'
+ CON_ID = {'host':host, 'port':port}
+ client = MPDClient()
+ mpdConnect(client, CON_ID)
+ playlistinfo = client.listplaylistinfo(pl)
+
+ ## copy files
+ print '> copy files'
+ for item in playlistinfo:
+ path = item['file']
+ srcfile=os.path.join(music, path)
+ destfile=os.path.join(dest, path)
+ destdir=os.path.dirname(destfile)
+
+ if not os.path.isdir(destdir):
+ print '[^] {0}'.format(destdir)
+ os.makedirs(destdir)
+ if not os.path.isfile(destfile):
+ shutil.copyfile(srcfile,destfile)
+ print '[+] {0}'.format(path)
+ else:
+ ## hash based on md5sum or just file size
+ if exact:
+ srchash = hashlib.md5(open(srcfile, 'rb').read()).hexdigest()
+ desthash = hashlib.md5(open(destfile, 'rb').read()).hexdigest()
+ else:
+ srchash = os.path.getsize(srcfile)
+ desthash = os.path.getsize(destfile)
+
+ if srchash != desthash:
+ shutil.copyfile(srcfile,destfile)
+ print '[o] {0}'.format(path)
+ else:
+ if verbose:
+ print '[ ] {0}'.format(path)
+
+ print 'done'
+
+ ## clean files
+ print '> clean files and directories'
+ for dirname, dirnames, filenames in os.walk(dest):
+ for filename in filenames:
+ destfile = os.path.join(dirname, filename)
+ path=destfile.replace(dest+"/","")
+ found = False
+ for item in playlistinfo:
+ if item['file'] == path:
+ found = True;
+
+ if not found:
+ try:
+ os.remove(destfile)
+ print '[-] {0}'.format(path)
+ except OSError:
+ print 'error removing {0}'.format(destfile)
+
+ ## clean directories
+ for dirname, dirnames, filenames in os.walk(dest,topdown=False):
+ if os.listdir(dirname) == [] and dirname != dest:
+ try:
+ os.rmdir(dirname)
+ print '[v] {0}'.format(destdir)
+ except OSError:
+ print 'error removing {0} '.format(dirname)
+ print 'done'
+
+ print '> writing filesystem changes'
+ subprocess.call("/bin/sync")
+
+
+def _list(host, pl):
+ port='6600'
+ CON_ID = {'host':host, 'port':port}
+ client = MPDClient()
+ mpdConnect(client, CON_ID)
+ playlistinfo = client.listplaylistinfo(pl)
+
+ ## output
+ print '> copy files'
+ prev_album = ''
+ for item in playlistinfo:
+ artist = item['artist']
+ album = item['album']
+
+ if album != prev_album:
+ print '{0}/{1}'.format(artist, album)
+ prev_album = album
+
+def _output(artist, album, track, title, symbol='', extra=''):
+ output_format = '{symbol:4}{artist:20.20} :: {album:20.20} :: {track:2d} - {title:25.25} {extra}'
+ print output_format.format(symbol=symbol, artist=artist, album=album, track=track, title=title, extra=extra)
+
+
+def mpdConnect(client, con_id):
+ """
+Simple wrapper to connect MPD.
+"""
+ try:
+ client.connect(**con_id)
+ except SocketError:
+ return False
+ return True
+
+def _checkdir(dir):
+ if not os.path.isdir(dir):
+ print "destination not mounted"
+ sys.exit(1)
+
+if __name__ == '__main__':
+ main()
diff --git a/bin/tex2pdf b/bin/tex2pdf
new file mode 100755
index 0000000..71718f0
--- /dev/null
+++ b/bin/tex2pdf
@@ -0,0 +1,33 @@
+#!/bin/bash
+logdestination="$HOME/.log/tex2pdf.log"
+already_open=$(ps aux | grep "$1.pdf" | grep -v "grep")
+rm -rf $logdestination
+touch $logdestination
+echo "tex2pdf called with $1.tex">>$logdestination
+echo "#####################################################">>$logdestination
+echo "################## pdflatex, run #1 #################">>$logdestination
+echo "#####################################################">>$logdestination
+pdflatex -interaction=nonstopmode $1.tex>>$logdestination
+echo "bibtex:">>$logdestination
+bibtex $1.aux>>$logdestination
+echo "#####################################################">>$logdestination
+echo "################## pdflatex, run #2 #################">>$logdestination
+echo "#####################################################">>$logdestination
+pdflatex -interaction=nonstopmode $1.tex>>$logdestination
+echo "####### ##############################################">>$logdestination
+echo "################## pdflatex, run #3 #################">>$logdestination
+echo "#####################################################">>$logdestination
+pdflatex -interaction=nonstopmode $1.tex>>$logdestination
+echo "#####################################################">>$logdestination
+echo "Launching mupdf with $1.pdf.">>$logdestination
+
+if [ -n "$already_open" ]; then
+ kill "$(echo $already_open | awk '{print $2}')"
+ echo "Killing pid $(echo $already_open | awk '{print $2}'), which has $1.pdf open already." >>$logdestination
+fi
+mupdf $1.pdf &
+
+echo "#####################################################">>$logdestination
+echo "Removing aux,bbl,blg,dvi,lof,log,lot,nav,out,snm,toc.">>$logdestination
+echo "Current directory: $(pwd) and children of depth 1.">>$logdestination
+rm -f *.{aux,bbl,blg,dvi,lof,log,lot,nav,out,snm,toc} */*.{aux,bbl,blg,dvi,lof,log,lot,nav,out,snm,toc}
diff --git a/bin/texcount.pl b/bin/texcount.pl
new file mode 100755
index 0000000..1f47025
--- /dev/null
+++ b/bin/texcount.pl
@@ -0,0 +1,1391 @@
+#! /usr/bin/env perl
+use strict;
+use warnings;
+use Term::ANSIColor;
+use Encode;
+use POSIX qw(locale_h);
+use locale;
+setlocale(LC_CTYPE,"no_NO");
+
+my $versionnumber="2.2";
+my $versiondate="2009 Apr 30";
+
+###### Set CMD specific settings and variables
+
+# Options and states
+my $verbose=0;
+my $showcodes=1;
+my $showstates=0;
+my $showsubcounts=0;
+my $htmlstyle=0;
+my $includeTeX=0;
+my $briefsum=0;
+my @sumweights;
+my $utf8flag=0;
+
+# Global variables
+my $blankline=0;
+my $errorcount=0;
+
+# CMD specific global variables
+my $totalflag=0;
+my @filelist;
+my $workdir;
+my $globalworkdir="";
+
+###### Set global settings and variables
+
+### Macros for headers
+# Macros that identify headers: i.e. following token or
+# {...} is counted as header. The =>[2] indicates transition to
+# state 2 which is used within headers (although the value is
+# actually never used). This is copied to %TeXmacro and the
+# only role of defining it here is that the counter for the number
+# of headers is incremented by one.
+my %TeXheader=('\title'=>[2],'\part'=>[2],'\chapter'=>[2],
+ '\section'=>[2],'\subsection'=>[2],'\subsubsection'=>[2],
+ '\paragraph'=>[2],'\subparagraph'=>[2]);
+
+### How many tokens to gobble after macro
+# Each macro is assumed to gobble up a given number of
+# tokens (or {...} groups), as well as options [...] before, within
+# and after. The %TeXmacro hash gives a link from a macro
+# (or beginNAME for begin-end groups without the backslash)
+# to either an integer giving the number of tokens to ignore
+# or to an array (specified as [num,num,...]) of length N where
+# N is the number of tokens to be read with the macro and the
+# array values tell how each is to be interpreted (see the status
+# values: 0=ignore, 1=count, etc.). Thus specifying a number N is
+# equivalent to specifying an array [0,...,0] of N zeros.
+#
+# For macros not specified here, the default value is 0: i.e.
+# no tokens are excluded, but [...] options are. Header macros
+# specified in %TeXheader are automatically included here.
+my %TeXmacro=(%TeXheader,
+ '\documentclass'=>1,'\documentstyle'=>1,'\usepackage'=>1, '\hyphenation'=>1,
+ '\pagestyle'=>1,'\thispagestyle'=>1, '\pagenumbering'=>1,'\markboth'=>1, '\markright'=>1,
+ '\newcommand'=>[-3,-3],'\renewcommand'=>[-3,-3],
+ '\newenvironment'=>[-3,-3,-3], 'renewenvironment'=>[-3,-3,-3],
+ '\newfont'=>2,'\newtheorem'=>2,'\bibliographystyle'=>1, '\bibliography'=>1,
+ '\parbox'=>1, '\marginpar'=>[3],'\makebox'=>0, '\raisebox'=>1, '\framebox'=>0,
+ '\newsavebox'=>1, '\sbox'=>1, '\savebox'=>2, '\usebox'=>1,'\rule'=>2,
+ '\footnote'=>[3],'\label'=>1, '\ref'=>1, '\pageref'=>1, '\bibitem'=>1,
+ '\cite'=>1, '\citep'=>1, '\citet'=>1, '\citeauthor'=>1, '\citealt'=>1, '\nocite'=>1,
+ '\eqlabel'=>1, '\eqref'=>1,'\hspace'=>1, '\vspace'=>1, '\addvspace'=>1,
+ '\input'=>1, '\include'=>1, '\includeonly'=>1,'\includegraphics'=>1,
+ '\newlength'=>1, '\setlength'=>2, '\addtolength'=>2,'\settodepth'=>2,
+ '\settoheight'=>2, '\settowidth'=>2,'\newcounter'=>1, '\setcounter'=>2,
+ '\addtocounter'=>2,'\stepcounter'=>1, '\refstepcounter'=>1, '\usecounter'=>1,
+ '\alph'=>1, '\arabic'=>1, '\fnsymbol'=>1, '\roman'=>1, '\value'=>1,
+ '\cline'=>1, '\multicolumn'=>3,'\typeout'=>1, '\typein'=>1,
+ 'beginlist'=>2, 'beginminipage'=>1, 'begintabular'=>1,
+ 'beginthebibliography'=>1,'beginlrbox'=>1,
+ '\begin'=>1,'\end'=>1,'\title'=>[2]);
+
+### Macros that should be counted as one or more words
+# Macros that represent text may be declared here. The value gives
+# the number of words the macro represents.
+my %TeXmacroword=('\LaTeX'=>1,'\TeX'=>1);
+
+### Macros that are counted within the preamble
+# The preamble is the text between \documentclass and \begin{document}.
+# Text and macros in the preamble is ignored unless specified here. The
+# value is the status (1=text, 2=header, etc.) they should be interpreted as.
+# Note that only the first unit (token or {...} block) is counted.
+my %TeXpreamble=('\title'=>[2],
+ '\newcommand'=>[-3,-3],'\renewcommand'=>[-3,-3],
+ '\newenvironment'=>[-3,-3,-3], 'renewenvironment'=>[-3,-3,-3],
+ );
+
+### Begin-End groups
+# Identified as begin-end groups, and define =>state. The
+# states used corresponds to the elements of the count array, and
+# are:
+# 0: Not included
+# 1: Text, word included in text count
+# 2: Header, words included in header count
+# 3: Float caption, words included in float caption count
+# 6: Inline mathematics, words not counted
+# 7: Displayed mathematics, words not counted
+# -1: Float, not included, but looks for captions
+#
+# 4 and 5 are used to count number of headers and floats
+# and are not used as states.
+#
+# Groups that are not defined will be counted as the surrounding text.
+#
+# Note that some environments may only exist within math-mode, and
+# therefore need not be defined here: in fact, they should not as it
+# is not clear if they will be in inlined or displayed math.
+#
+my %TeXgroup=('document'=>1,'letter'=>1,'titlepage'=>0,
+ 'center'=>1,'flushleft'=>1,'flushright'=>1,
+ 'abstract'=>1,'quote'=>1,'quotation'=>1,'verse'=>1,'minipage'=>1,'verbatim'=>1,
+ 'description'=>1,'enumerate'=>1,'itemize'=>1,'list'=>1,
+ 'theorem'=>1,'lemma'=>1,'definition'=>1,'corollary'=>1,'example'=>1,
+ 'math'=>6,'displaymath'=>7,'equation'=>7,'eqnarray'=>7,'align'=>7,
+ 'figure'=>-1,'float'=>-1,'picture'=>-1,'table'=>-1,
+ 'tabbing'=>0,'tabular'=>0,'thebibliography'=>0,'lrbox'=>0);
+
+### In floats: include only specific macros
+# Macros used to identify caption text within floats.
+my %TeXfloatinc=('\caption'=>[3]);
+
+### Macros for including tex files
+# Allows \macro{file} or \macro file. If the value is 0, the filename will
+# be used as is; if it is 1, the filetype .tex will be added if the
+# filename is without filetype; if it is 2, the filetype .tex will be added.
+my %TeXfileinclude=('\input'=>1,'\include'=>2);
+
+### Count labels
+# Labels used to describe the counts
+my @countlabel=('Files','Words in text','Words in headers',
+ 'Words in float captions','Number of headers','Number of floats',
+ 'Number of math inlines','Number of math displayed');
+
+### Break points
+# Definition of macros that define break points that start a new subcount.
+# The values given are used as labels.
+my %BreakPointsOptions;
+$BreakPointsOptions{'none'}={};
+$BreakPointsOptions{'part'}={%{$BreakPointsOptions{'none'}},'\part'=>'Part'};
+$BreakPointsOptions{'chapter'}={%{$BreakPointsOptions{'part'}},'\chapter'=>'Chapter'};
+$BreakPointsOptions{'section'}={%{$BreakPointsOptions{'chapter'}},'\section'=>'Section'};
+$BreakPointsOptions{'subsection'}={%{$BreakPointsOptions{'section'}},'\subsection'=>'Subsection'};
+$BreakPointsOptions{'default'}=$BreakPointsOptions{'subsection'};
+my %BreakPoints=%{$BreakPointsOptions{'none'}};
+
+### Print styles
+# Definition of different print styles: maps of class labels
+# to ANSI codes. Class labels are as used by HTML styles.
+my @STYLES=();
+my %STYLE;
+$STYLES[0]={'error'=>'bold red'};
+$STYLES[1]={%{$STYLES[0]},
+ 'word1'=>'blue','word2'=>'bold blue','word3'=>'blue',
+ 'grouping'=>'red','document'=>'red','mathgroup'=>'magenta',
+ 'state'=>'cyan underline','sumcount'=>'yellow'};
+$STYLES[2]={%{$STYLES[1]},
+ 'command'=>'green','exclcommand'=>'yellow','exclgroup'=>'yellow','exclmath'=>'yellow',
+ 'ignore'=>'cyan'};
+$STYLES[3]={%{$STYLES[2]},
+ 'tc'=>'bold yellow','comment'=>'yellow','option'=>'yellow',
+ 'fileinclude'=>'bold green'};
+$STYLES[4]={%{$STYLES[3]}};
+
+### Word regexp pattern list
+# List of regexp patterns that should be analysed as words.
+# Use @ to represent a letter, will be substituted with $LetterPattern.
+my @WordPatterns=('(@+\.)+@+\.?','@+([\-\']@+)*');
+my $specialchars='\\\\(ae|AE|o|O|aa|AA)';
+my $modifiedchars='\\\\[\'\"\`\~\^\=](\w|\{\w\})';
+my $LetterPattern='\w';
+my $LetterPatternRelaxed='([\w\-\']|'.$modifiedchars.'|'.$specialchars.'(\{\})?|\{'.$specialchars.'\}|\{\w\})';
+my %NamedWordPattern;
+$NamedWordPattern{'chinese'}='\p{script=Han}';
+$NamedWordPattern{'japanese'}='(\p{script=Han}|\p{script=Hiragana}|\p{script=Katakana})';
+
+### Macro option regexp list
+# List of regexp patterns to be gobbled as macro option in and after
+# a macro.
+my @MacroOptionPatterns=('\[(\w|[,\-\s\~\.\:\;\+\?\*\_\=])*\]');
+my @MacroOptionPatternsRelaxed=('\[[^\[\]\n]*\]');
+
+###### Main script
+
+
+###################################################
+
+MAIN(@ARGV);
+
+###################################################
+
+
+#########
+######### Main routines
+#########
+
+# MAIN ROUTINE: Handle arguments, then parse files
+sub MAIN {
+ my @args=@_;
+ my @toplevelfiles=Parse_Arguments(@args);
+ Apply_Options();
+ if (scalar(@toplevelfiles)==0) {
+ conditional_print_help_style()
+ || print_error("No files specified.","p","error");
+ } else {
+ conditional_print_help_style();
+ my $totalcount=parse_file_list(@toplevelfiles);
+ conditional_print_total($totalcount);
+ }
+ Report_ErrorCount();
+ Close_Output();
+}
+
+# Checks arguments, exits on exit condition
+sub Check_Arguments {
+ my @args=@_;
+ if (!@args) {
+ print_version();
+ print_syntax();
+ print_reference();
+ exit;
+ } elsif ($args[0]=~/^(\-?\-(h|\?|help)|\/(\?|h))$/) {
+ print_help();
+ exit;
+ } elsif ($args[0]=~/^\-?\-(ver|version)$/) {
+ print_version();
+ exit;
+ } elsif ($args[0]=~/^\-?\-(lic|license)$/) {
+ print_license();
+ exit;
+ }
+ return 1;
+}
+
+# Parses arguments, sets options (global) and returns file list
+sub Parse_Arguments {
+ my @args=@_;
+ Check_Arguments(@args);
+ my @files;
+ foreach my $arg (@ARGV) {
+ if (Parse_Option($arg)) {next;}
+ if ($arg=~/^\-/) {
+ print 'Invalid opton '.$arg."\n";
+ print_syntax();
+ exit;
+ }
+ $arg=~s/\\/\//g;
+ push @files,$arg;
+ }
+ return @files;
+}
+
+# Parse individual option parameters
+sub Parse_Option {
+ my $arg=shift @_;
+ return parse_options_parsing($arg)
+ || parse_options_sums($arg)
+ || parse_options_output($arg)
+ || parse_options_format($arg)
+ ;
+}
+
+sub parse_options_parsing {
+ my $arg=shift @_;
+ if ($arg eq '-inc') {$includeTeX=1;}
+ elsif ($arg eq '-noinc') {$includeTeX=0;}
+ elsif ($arg eq '-dir') {$globalworkdir=undef;}
+ elsif ($arg=~/^-dir=(.*)$/) {$globalworkdir=$1;}
+ elsif ($arg=~/^-(utf8|unicode)$/) {$utf8flag=1;}
+ elsif ($arg=~/^-(ch|chinese|zhongwen)$/) {
+ $utf8flag=1;
+ @WordPatterns=($NamedWordPattern{'chinese'},@WordPatterns);
+ }
+ elsif ($arg=~/^-(jp|japanese)$/) {
+ $utf8flag=1;
+ @WordPatterns=($NamedWordPattern{'japanese'},@WordPatterns);
+ }
+ elsif ($arg eq '-relaxed') {
+ @MacroOptionPatterns=@MacroOptionPatternsRelaxed;
+ $LetterPattern=$LetterPatternRelaxed;
+ }
+ else {return 0;}
+ return 1;
+}
+
+sub parse_options_sums {
+ my $arg=shift @_;
+ if ($arg=~/^-sum(=(.+))?$/) {option_sum($2);}
+ elsif ($arg=~/^-(sub|subcounts?)(=(.+))?$/) {option_subcount($3);}
+ else {return 0;}
+ return 1;
+}
+
+sub option_subcount {
+ my $arg=shift @_;
+ $showsubcounts=1;
+ if (!defined $arg) {
+ %BreakPoints=%{$BreakPointsOptions{'default'}};
+ } elsif (my $option=$BreakPointsOptions{$arg}) {
+ %BreakPoints=%{$option};
+ } else {
+ print STDERR "Warning: Option value ".$arg." not valid, using default instead.\n";
+ %BreakPoints=%{$BreakPointsOptions{'default'}};
+ }
+}
+
+sub option_sum {
+ my $arg=shift @_;
+ if (!defined $arg) {
+ @sumweights=(1,1,1,0,0,1,1);
+ } elsif ($arg=~/^(\d+(,\d+){0,6})$/) {
+ @sumweights=split(',',$1);
+ } else {
+ print STDERR "Warning: Option value ".$arg." not valid, ignoring option.\n";
+ }
+}
+
+sub parse_options_format {
+ my $arg=shift @_;
+ if ($arg eq '-brief') {$briefsum=1;}
+ elsif ($arg eq '-total') {$totalflag=1;}
+ elsif ($arg eq '-1') {$briefsum=1;$totalflag=1;$verbose=-1;}
+ elsif ($arg eq "-html" ) {option_no_colours();$htmlstyle = 2;}
+ elsif ($arg eq "-htmlcore" ) {option_no_colours();$htmlstyle = 1;}
+ elsif ($arg=~/^\-(nocol|nc$)/) {option_no_colours();}
+ elsif ($arg eq '-codes') {
+ $showcodes=2;
+ if ($verbose==0) {$verbose=3;}
+ }
+ elsif ($arg eq '-nocodes') {$showcodes=0;}
+ else {return 0;}
+ return 1;
+}
+
+sub parse_options_output {
+ my $arg=shift @_;
+ if ($arg eq "-v0") {$verbose=0;}
+ elsif ($arg eq "-v1") {$verbose=1;}
+ elsif ($arg eq '-vv' || $arg eq '-v2') {$verbose=2;}
+ elsif ($arg eq '-vvv' || $arg eq '-v3' || $arg eq '-v') {$verbose=3;}
+ elsif ($arg eq '-vvvv' || $arg eq '-v4') {$verbose=3; $showstates=1;}
+ elsif ($arg =~ /^\-showstates?$/ ) {$showstates=1;}
+ elsif ($arg =~ /^-(q|-?quiet)$/ ) {$verbose=-1;}
+ else {return 0;}
+ return 1;
+}
+
+# Parse file list and return total count
+sub parse_file_list {
+ my @filelist=@_;
+ my $listtotalcount=new_count("TOTAL COUNT");
+ for my $file (<@filelist>) {
+ my $filetotalcount=parse_file($file);
+ add_count($listtotalcount,$filetotalcount);
+ }
+ return $listtotalcount;
+}
+
+# Parse file and included files, and return total count
+sub parse_file {
+ my $file=shift @_;
+ $workdir=$globalworkdir;
+ if (!defined $workdir) {
+ $workdir=$file;
+ $workdir =~ s/^((.*[\\\/])?)[^\\\/]+$/$1/;
+ }
+ @filelist=($file);
+ if ($htmlstyle) {print "\n<div class='filegroup'>\n";}
+ my $filetotalcount=new_count("SUM COUNT FOR ".$file);
+ foreach my $f (@filelist) {
+ my $tex=TeXfile($f);
+ my $fpath=$f;
+ $fpath=~s/^((.*[\\\/])?)[^\\\/]+$/$1/;
+ if (!defined $tex) {
+ print STDERR "File not found or not readable: ".$f."\n";
+ formatprint("File not found or not readable: ".$f."\n","p","error");
+ } else {
+ parse($tex);
+ my $filecount=add_subcount($tex);
+ if (!$totalflag) {
+ print_count($filecount);
+ print "\n";
+ }
+ add_count($filetotalcount,$filecount);
+ }
+ }
+ if ($htmlstyle) {print "</div>\n\n";}
+ return $filetotalcount;
+}
+
+
+######
+###### Subroutines
+######
+
+###### CMD specific implementations
+
+
+sub add_file_to_list {
+ my $fname=shift @_;
+ push @filelist,$workdir.$fname;
+}
+
+sub print_with_style {
+ my ($text,$style,$colour)=@_;
+ #if ($utf8flag || $htmlstyle) {utf8::encode($text);}
+ if ($htmlstyle) {
+ print "<span class='".$style."'>".$text."</span>";
+ } else {
+ print Term::ANSIColor::colored($text,$colour);
+ }
+}
+
+sub option_no_colours {
+ $ENV{'ANSI_COLORS_DISABLED'} = 1;
+}
+
+# Print count (total) if conditions are met
+sub conditional_print_total {
+ my $sumcount=shift @_;
+ if ($totalflag || get_count($sumcount,0)>1) {
+ if ($totalflag && $briefsum && @sumweights) {
+ print total_count($sumcount);
+ } else {
+ if ($htmlstyle) {
+ formatprint("Total word count",'h2');
+ }
+ print_count($sumcount);
+ }
+ }
+}
+
+###### Option handling
+
+
+# Apply options to set values
+sub Apply_Options {
+ %STYLE=%{$STYLES[$verbose]};
+ if ($utf8flag) {binmode STDOUT,':utf8';}
+ if ($htmlstyle>1) {html_head();}
+ foreach (@WordPatterns) {
+ s/\@/$LetterPattern/g;
+ }
+}
+
+
+###### TeX code handle
+
+
+sub TeXfile {
+ my $filename=shift @_;
+ my $file=read_file($filename) || return undef;
+ return TeXcode($file,$filename);
+}
+
+sub read_file {
+ my $filename=shift @_;
+ if ($utf8flag) {
+ open(FH,"<:utf8",$filename) || return undef;
+ } else {
+ open(FH,"<".$filename) || return undef;
+ }
+ if ($verbose>0) {
+ formatprint("File: ".$filename."\n",'h2');
+ $blankline=0;
+ }
+ my @text=<FH>;
+ close(FH);
+ my $latexcode=join('',@text);
+ if ($utf8flag) {
+ $latexcode =~ s/^\x{feff}//;
+ }
+ return $latexcode;
+}
+
+###### Parsing routines
+
+
+# Make TeXcode handle
+sub TeXcode {
+ my ($texcode,$filename,$title)=@_;
+ my %TeX=();
+ $TeX{'filename'}=$filename;
+ if (!defined $filename) {
+ $TeX{'filepath'}='';
+ } elsif ($filename=~/^(.*[\\\/])[^\\\/]+$/) {
+ $TeX{'filepath'}=$1;
+ } else {
+ $TeX{'filepath'}='';
+ }
+ if (defined $title) {}
+ elsif (defined $filename) {$title="FILE: ".$filename;}
+ else {$title="Word count";}
+ $TeX{'line'}=$texcode;
+ $TeX{'next'}=undef;
+ $TeX{'type'}=undef;
+ $TeX{'style'}=undef;
+ $TeX{'printstate'}=undef;
+ $TeX{'eof'}=0;
+ my $countsum=new_count($title);
+ $TeX{'countsum'}=$countsum;
+ my $count=new_count("_top_");
+ $TeX{'count'}=$count;
+ inc_count(\%TeX,0);
+ my @countlist=();
+ $TeX{'countlist'}=\@countlist;
+ $countsum->{'subcounts'}=\@countlist;
+ return \%TeX;
+}
+
+# Parse LaTeX document
+sub parse {
+ my ($tex)=@_;
+ if ($htmlstyle && $verbose) {print "<p class=parse>\n";}
+ while (!($tex->{'eof'})) {
+ parse_unit($tex,1);
+ }
+ if ($htmlstyle && $verbose) {print "</p>\n";}
+}
+
+# Parse one block or unit
+sub parse_unit {
+ # Status:
+ # 0 = exclude from count
+ # 1 = text
+ # 2 = header text
+ # 3 = float text
+ # -1 = float (exclude)
+ # -2 = strong exclude, ignore begin-end groups
+ # -3 = stronger exclude, do not parse macro parameters
+ # -9 = preamble (between \documentclass and \begin{document})
+ my ($tex,$status,$end)=@_;
+ if (!defined $status) {
+ print_error("CRITICAL ERROR: Undefined parser status!");
+ exit;
+ } elsif (ref($status) eq 'ARRAY') {
+ print_error("CRITICAL ERROR: Invalid parser status!");
+ exit;
+ }
+ my $substat;
+ if ($showstates) {
+ if (defined $end) {
+ $tex->{'printstate'}=':'.$status.':'.$end.':';
+ } else {
+ $tex->{'printstate'}=':'.$status.':';
+ }
+ flush_next($tex);
+ }
+ while (defined (my $next=next_token($tex))) {
+ # parse next token; or tokens until match with $end
+ set_style($tex,"ignore");
+ if ((defined $end) && ($end eq $next)) {
+ # end of unit
+ return;
+ } elsif (!defined $next) {
+ print_error("ERROR: End of file while waiting for ".$end);
+ return;
+ }
+ if ($status==-9 && $next eq '\begin' && $tex->{'line'}=~/^\{\s*document\s*\}/) {
+ # \begin{document}
+ $status=1;
+ }
+ if ($next eq '\documentclass') {
+ # starts preamble
+ set_style($tex,'document');
+ gobble_option($tex);
+ gobble_macro_parms($tex,1);
+ while (!($tex->{'eof'})) {
+ parse_unit($tex,-9);
+ }
+ } elsif ($tex->{'type'}==666) {
+ # parse TC instructions
+ parse_tc($tex);
+ } elsif ($tex->{'type'}==1) {
+ # word
+ if ($status>0) {
+ inc_count($tex,$status);
+ set_style($tex,'word'.$status);
+ }
+ } elsif ($next eq '{') {
+ # {...}
+ parse_unit($tex,$status,'}');
+ } elsif ($tex->{'type'}==3 && $status==-3) {
+ set_style($tex,'ignore');
+ } elsif ($tex->{'type'}==3) {
+ # macro call
+ parse_macro($tex,$next,$status,$substat);
+ } elsif ($next eq '$') {
+ # math inline
+ parse_math($tex,$status,6,'$');
+ } elsif ($next eq '$$') {
+ # math display (unless already in inlined math)
+ if (!(defined $end && $end eq '$')) {
+ parse_math($tex,$status,7,'$$');
+ }
+ }
+ if (!defined $end) {return;}
+ }
+}
+
+sub parse_macro {
+ my ($tex,$next,$status,$substat)=@_;
+ if (my $label=$BreakPoints{$next}) {
+ if ($tex->{'line'}=~ /^[*]?(\s*\[.*?\])*\s*\{(.+?)\}/ ) {
+ $label=$label.': '.$2;
+ }
+ add_subcount($tex,$label);
+ }
+ set_style($tex,$status>0?'command':'exclcommand');
+ if ($next eq '\begin' && $status!=-2) {
+ parse_begin_end($tex,$status);
+ } elsif (($status==-1) && ($substat=$TeXfloatinc{$next})) {
+ # text included from float
+ set_style($tex,'command');
+ gobble_macro_parms($tex,$substat);
+ } elsif ($status==-9 && defined ($substat=$TeXpreamble{$next})) {
+ # parse preamble include macros
+ set_style($tex,'command');
+ if (defined $TeXheader{$next}) {inc_count($tex,4);}
+ gobble_macro_parms($tex,$substat,1);
+ } elsif ($status<0) {
+ # ignore
+ gobble_option($tex);
+ } elsif ($next eq '\(') {
+ # math inline
+ parse_math($tex,$status,6,'\)');
+ } elsif ($next eq '\[') {
+ # math display
+ parse_math($tex,$status,7,'\]');
+ } elsif ($next eq '\def') {
+ # ignore \def...
+ $tex->{'line'} =~ s/^([^\{]*)\{/\{/;
+ flush_next($tex);
+ print_style($1.' ','ignore');
+ parse_unit($tex,-2);
+ } elsif (defined (my $addsuffix=$TeXfileinclude{$next})) {
+ # include file: queue up for parsing
+ parse_include_file($tex,$status,$addsuffix);
+ } elsif (defined ($substat=$TeXmacro{$next})) {
+ # macro: exclude options
+ if (defined $TeXheader{$next}) {inc_count($tex,4);}
+ gobble_macro_parms($tex,$substat,$status);
+ } elsif (defined ($substat=$TeXmacroword{$next})) {
+ # count macro as word (or a given number of words)
+ inc_count($tex,$status,$substat);
+ set_style($tex,'word'.$status);
+ } elsif ($next =~ /^\\[^\w\_]/) {
+ } else {
+ gobble_option($tex);
+ }
+}
+
+sub parse_tc {
+ my ($tex)=@_;
+ my $next=$tex->{'next'};
+ set_style($tex,'tc');
+ flush_next($tex);
+ if (!($next=~s/^\%+TC:\s*(\w+)\s*// )) {
+ print_error('Warning: TC command should have format %TC:instruction [macro] [parameters]');
+ return;
+ };
+ my $instr=$1;
+ if ($instr=~/^(break)$/) {
+ if ($instr eq 'break') {add_subcount($tex,$next);}
+ } elsif ($next=~/^([\\]*\w+)\s+([^\s\n]+)(\s+([0-9]+))?/) {
+ # Format = TC:word macro
+ my $macro=$1;
+ my $param=$2;
+ my $option=$4;
+ if ($param=~/^\[([0-9,]+)\]$/) {$param=[split(',',$1)];}
+ if (($instr eq 'macro') || ($instr eq 'exclude')) {$TeXmacro{$macro}=$param;}
+ elsif ($instr eq 'header') {$TeXheader{$macro}=$param;$TeXmacro{$macro}=$param;}
+ elsif ($instr eq 'macroword') {$TeXmacroword{$macro}=$param;}
+ elsif ($instr eq 'preambleinclude') {$TeXpreamble{$macro}=$param;}
+ elsif ($instr eq 'group') {
+ $TeXmacro{'begin'.$macro}=$param;
+ $TeXgroup{$macro}=$option;
+ }
+ elsif ($instr eq 'floatinclude') {$TeXfloatinc{$macro}=$param;}
+ elsif ($instr eq 'fileinclude') {$TeXfileinclude{$macro}=$param;}
+ elsif ($instr eq 'breakmacro') {$BreakPoints{$macro}=$param;}
+ else {print_error("Warning: Unknown TC command: ".$instr);}
+ } elsif ($instr eq 'ignore') {
+ tc_ignore_input($tex);
+ } else {
+ print_error("Warning: Invalid TC command format: ".$instr);
+ }
+}
+
+sub tc_ignore_input {
+ my ($tex)=@_;
+ set_style($tex,'ignore');
+ parse_unit($tex,-3,"%TC:endignore");
+ set_style($tex,'tc');
+ flush_next($tex);
+}
+
+sub parse_math {
+ my ($tex,$status,$substat,$end)=@_;
+ my $localstyle=$status>0 ? 'mathgroup' : 'exclmath';
+ if ($status>0) {inc_count($tex,$substat);}
+ set_style($tex,$localstyle);
+ parse_unit($tex,0,$end);
+ set_style($tex,$localstyle);
+}
+
+sub parse_begin_end {
+ my ($tex,$status)=@_;
+ my $localstyle=$status>0 ? 'grouping' : 'exclgroup';
+ flush_style($tex,$localstyle);
+ gobble_option($tex);
+ my $groupname;
+ if ($tex->{'line'} =~ s/^\{\s*([^\{\}]+)\s*\*?\}[ \t\r\f]*//) {
+ # gobble group type
+ $groupname=$1;
+ print_style('{'.$1.'}',$localstyle);
+ my $next='begin'.$1;
+ if (defined (my $substat=$TeXmacro{$next})) {
+ gobble_macro_parms($tex,$substat);
+ }
+ } else {
+ print_error("Warning: BEGIN group without type.");
+ }
+ # find group status (or leave unchanged)
+ my $substat;
+ defined ($substat=$TeXgroup{$1}) || ($substat=$status);
+ if ($status<=0 && $status<$substat) {$substat=$status;}
+ if (($status>0) && ($substat==-1)) {
+ # Count float
+ inc_count($tex,5);
+ }
+ if ($status>0 and $substat>3) {
+ # count item, exclude contents
+ inc_count($tex,$substat);
+ $substat=0;
+ }
+ parse_unit($tex,$substat,'\end');
+ if ($tex->{'line'} =~ s/^\{\s*([^\{\}]+)\s*\}[ \t\r\f]*//) {
+ # gobble group type
+ flush_style($tex,$localstyle);
+ print_style('{'.$1.'}',$localstyle);
+ } else {
+ print_error("Warning: END group without type while waiting to end ".$groupname.".");
+ }
+}
+
+sub parse_include_file {
+ my ($tex,$status,$addsuffix)=@_;
+ $tex->{'line'} =~ s/^\{([^\{\}\s]+)\}// ||
+ $tex->{'line'} =~ s/^\s*([^\{\}\%\\\s]+)// ||
+ return;
+ flush_next($tex);
+ if ($status>0) {
+ print_style($&,'fileinclude');
+ my $fname=$1;
+ if ($addsuffix==2) {$fname.='.tex';}
+ elsif ($addsuffix==1 && ($fname=~/^[^\.]+$/)) {$fname.='.tex';}
+ if ($includeTeX) {add_file_to_list($fname);}
+ } else {
+ print_style($&,'ignored');
+ }
+}
+
+sub gobble_option {
+ my $tex=shift @_;
+ flush_next($tex);
+ foreach my $pattern (@MacroOptionPatterns) {
+ if ($tex->{'line'}=~s/^($pattern)//) {
+ print_style($1,'option');
+ return $1;
+ }
+ }
+ return undef;
+}
+
+sub gobble_options {
+ while (gobble_option(@_)) {}
+}
+
+sub gobble_macro_modifier {
+ my $tex=shift @_;
+ flush_next($tex);
+ if ($tex->{'line'} =~ s/^\*//) {
+ print_style($1,'option');
+ return $1;
+ }
+ return undef;
+}
+
+sub gobble_macro_parms {
+ my ($tex,$parm,$oldstat)=@_;
+ my $i;
+ if (ref($parm) eq 'ARRAY') {
+ $i=scalar @{$parm};
+ } else {
+ $i=$parm;
+ $parm=[0,0,0,0,0,0,0,0,0];
+ }
+ if ($i>0) {gobble_macro_modifier($tex);}
+ gobble_options($tex);
+ for (my $j=0;$j<$i;$j++) {
+ parse_unit($tex,new_status($parm->[$j],$oldstat));
+ gobble_options($tex);
+ }
+}
+
+sub new_status {
+ my ($substat,$old)=@_;
+ if (!defined $old) {return $substat;}
+ if ($old==-3 || $substat==-3) {return -3;}
+ if ($old==-2 || $substat==-2) {return -2;}
+ if ($old==0 || $substat==0) {return 0;}
+ if ($old==-9 || $substat==-9) {return -9;}
+ if ($old>$substat) {return $old;}
+ return $substat;
+}
+
+sub next_token {
+ my $tex=shift @_;
+ my ($next,$type);
+ if (defined $tex->{'next'}) {print_style($tex->{'next'}.' ',$tex->{'style'});}
+ $tex->{'style'}=undef;
+ while (defined ($next=get_next_token($tex))) {
+ $type=$tex->{'type'};
+ if ($type==0) {
+ print_style($next,'comment');
+ } elsif ($type==9) {
+ if ($verbose>0) {line_return(1,$tex);}
+ } else {
+ return $next;
+ }
+ }
+ return $next;
+}
+
+
+sub get_next_token {
+ # Token (or token group) category:
+ # 0: comment
+ # 1: word (or other forms of text or text components)
+ # 2: symbol (not word, e.g. punctuation)
+ # 3: macro
+ # 4: curly braces {}
+ # 5: brackets []
+ # 6: maths
+ # 9: line break in file
+ # 999: end of line or blank line
+ # 666: TeXcount instruction (%TC:instruction)
+ my $tex=shift @_;
+ my $next;
+ (defined ($next=get_token($tex,'\%+TC:\s*endignore\b[^\r\n]*',666))) && return "%TC:endignore";
+ (defined ($next=get_token($tex,'\%+TC:[^\r\n]*',666))) && return $next;
+ (defined ($next=get_token($tex,'\%[^\r\n]*',0))) && return $next;
+ (defined ($next=get_token($tex,'(\r|\n|\r\n)',9))) && return $next;
+ (defined ($next=get_token($tex,'\\\\[\{\}]',2))) && return $next;
+ foreach my $pattern (@WordPatterns) {
+ (defined ($next=get_token($tex,$pattern,1))) && return $next;
+ }
+ (defined ($next=get_token($tex,'[\"\'\`:\.,\(\)\[\]!\+\-\*=/\^\_\@\<\>\~\#\&]',2))) && return $next;
+ (defined ($next=get_token($tex,'\\\\([a-zA-Z_]+|[^a-zA-Z_])',3))) && return $next;
+ (defined ($next=get_token($tex,'[\{\}]',4))) && return $next;
+ (defined ($next=get_token($tex,'[\[\]]',5))) && return $next;
+ (defined ($next=get_token($tex,'\$\$',6))) && return $next;
+ (defined ($next=get_token($tex,'\$',6))) && return $next;
+ (defined ($next=get_token($tex,'.',999))) && return $next;
+ (defined ($next=get_token($tex,'[^\s]+',999))) && return $next;
+ $tex->{'eof'}=1;
+ return undef;
+}
+
+sub get_token {
+ my ($tex,$regexp,$type)=@_;
+ if (!defined $regexp) {print_error("ERROR in get_token: undefined regex.");}
+ if (!defined $tex->{'line'}) {print_error("ERROR in get_token: undefined tex-line. ".$tex->{'next'});}
+ if ( $tex->{'line'} =~ s/^($regexp)[ \t\r\f]*// ) {
+ $tex->{'next'}=$1;
+ $tex->{'type'}=$type;
+ return $1;
+ }
+ return undef;
+}
+
+###### Count handling routines
+
+
+sub new_count {
+ my ($title)=@_;
+ my @cnt=(0,0,0,0,0,0,0,0);
+ my %count=('count'=>\@cnt,'title'=>$title);
+ # files, text words, header words, float words,
+ # headers, floats, math-inline, math-display;
+ return \%count;
+}
+
+sub inc_count {
+ my ($tex,$type,$value)=@_;
+ my $count=$tex->{'count'};
+ if (!defined $value) {$value=1;}
+ ${$count->{'count'}}[$type]+=$value;
+}
+
+sub get_count {
+ my ($count,$type)=@_;
+ return ${$count->{'count'}}[$type];
+}
+
+sub total_count {
+ my ($count)=@_;
+ my $sum=0;
+ for (my $i=scalar(@sumweights);$i-->0;) {
+ $sum+=get_count($count,$i+1)*$sumweights[$i];
+ }
+ return $sum;
+}
+
+sub print_count {
+ my ($count,$header)=@_;
+ if ($briefsum && @sumweights) {
+ print_count_total($count,$header);
+ } elsif ($briefsum) {
+ if ($htmlstyle) {print "<p class='briefcount'>";}
+ print_count_brief($count,$header);
+ if ($htmlstyle) {print "</p>\n";}
+ } else {
+ print_count_details($count,$header);
+ }
+}
+
+sub print_count_with_header {
+ my ($count,$header)=@_;
+ if (!defined $header) {$header=$count->{'title'};}
+ if (!defined $header) {$header="";}
+ return $count,$header;
+}
+
+sub print_count_total {
+ my ($count,$header)=print_count_with_header(@_);
+ if ($htmlstyle) {print "<p class='count'>".$header;}
+ print total_count($count);
+ if ($htmlstyle) {print "</p>\n";}
+ else {print ": ".$header;}
+}
+
+sub print_count_brief {
+ my ($count,$header)=print_count_with_header(@_);
+ my $cnt=$count->{'count'};
+ print ${$cnt}[1]."+".${$cnt}[2]."+".${$cnt}[3].
+ " (".${$cnt}[4]."/".${$cnt}[5]."/".${$cnt}[6]."/".${$cnt}[7].") ".
+ $header;
+}
+
+sub print_count_details {
+ my ($count,$header)=print_count_with_header(@_);
+ if ($htmlstyle) {print "<dl class='count'>\n";}
+ if (defined $header) {
+ formatprint($header."\n",'dt','header');
+ }
+ if (get_count($count,0)>1) {
+ formatprint($countlabel[0].': ','dt');
+ formatprint(get_count($count,0)."\n",'dd');
+ }
+ if (@sumweights) {
+ formatprint('Sum count: ','dt');
+ formatprint(total_count($count)."\n",'dd');
+ }
+ for (my $i=1;$i<8;$i++) {
+ formatprint($countlabel[$i].': ','dt');
+ formatprint(get_count($count,$i)."\n",'dd');
+ }
+ my $subcounts=$count->{'subcounts'};
+ if ($showsubcounts && defined $subcounts && scalar(@{$subcounts})>1) {
+ formatprint("Subcounts: text+headers+captions (#headers/#floats/#inlines/#displayed)\n",'dt');
+ foreach my $subcount (@{$subcounts}) {
+ if ($htmlstyle) {print "<dd class='briefcount'>";}
+ print_count_brief($subcount);
+ if ($htmlstyle) {print "</dd>";}
+ print "\n";
+ }
+ }
+ if ($htmlstyle) {print "</dl>\n";}
+}
+
+sub add_count {
+ my ($a,$b)=@_;
+ for (my $i=0;$i<8;$i++) {
+ ${$a->{'count'}}[$i]+=${$b->{'count'}}[$i];
+ }
+}
+
+sub add_subcount {
+ my ($tex,$title)=@_;
+ add_count($tex->{'countsum'},$tex->{'count'});
+ push @{$tex->{'countlist'}},$tex->{'count'};
+ $tex->{'count'}=new_count($title);
+ return $tex->{'countsum'};
+}
+
+###### Printing routines
+
+
+sub set_style {
+ my ($tex,$style)=@_;
+ if (!(($tex->{'style'}) && ($tex->{'style'} eq '-'))) {$tex->{'style'}=$style;}
+}
+
+sub flush_style {
+ my ($tex,$style)=@_;
+ set_style($tex,$style);
+ flush_next($tex);
+}
+
+sub line_return {
+ my ($blank,$tex)=@_;
+ if ($blank>$blankline) {
+ if ((defined $tex) && @sumweights) {
+ my $num=total_count($tex->{'count'});
+ print_style(" [".$num."]","sumcount");
+ }
+ linebreak();
+ $blankline++;
+ }
+}
+
+sub linebreak {
+ if ($htmlstyle) {print "<br>\n";} else {print "\n";}
+}
+
+sub print_style {
+ my ($text,$style,$state)=@_;
+ (($verbose>=0) && (defined $text) && (defined $style)) || return 0;
+ my $colour;
+ ($colour=$STYLE{$style}) || return;
+ if (($colour) && !($colour eq '-')) {
+ print_with_style($text,$style,$colour);
+ if ($state) {
+ print_style($state,'state');
+ }
+ $blankline=-1;
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+sub print_error {
+ my $text=shift @_;
+ $errorcount++;
+ if ($verbose>=0) {
+ line_return(1);
+ print_style("!!! ".$text." !!!",'error');
+ line_return(1);
+ }
+}
+
+sub formatprint {
+ my ($text,$tag,$class)=@_;
+ my $break=($text=~s/\n$//);
+ if ($htmlstyle && defined $tag) {
+ print '<'.$tag;
+ if ($class) {print " class='".$class."'";}
+ print '>'.$text.'</'.$tag.'>';
+ } else {
+ print $text;
+ }
+ if ($break) {print "\n";}
+}
+
+sub flush_next {
+ my $tex=shift @_;
+ if (defined $tex->{'next'}) {
+ print_style($tex->{'next'}.' ',$tex->{'style'},$tex->{'printstate'});
+ }
+ $tex->{'printstate'}=undef;
+ $tex->{'style'}='-';
+}
+
+
+# Close the output, e.g. adding HTML tail
+sub Close_Output {
+ if ($htmlstyle>1) {
+ html_tail();
+ }
+}
+
+
+# Report if there were any errors occurring during parsing
+sub Report_ErrorCount {
+ if ($errorcount==0) {return;}
+ if ($briefsum && $totalflag) {print " ";}
+ if ($htmlstyle) {
+ print_error("Errors:".$errorcount,"p","error");
+ } else {
+ print "(errors:".$errorcount.")";
+ }
+}
+
+
+sub print_help_style {
+ if ($verbose<=0) {return;}
+ formatprint("Format/colour codes of verbose output:","h2");
+ print "\n\n";
+ if ($htmlstyle) {print "<p class='stylehelp'>";}
+ help_style_line('Text which is counted',"word1","counted as text words");
+ help_style_line('Header and title text',"word2","counted as header words");
+ help_style_line('Caption text and footnotes',"word3","counted as caption words");
+ help_style_line("Ignored text or code","ignore","excluded or ignored");
+ help_style_line('\documentclass',"document","document start, beginning of preamble");
+ help_style_line('\macro',"command","macro not counted, but parameters may be");
+ help_style_line('\macro',"exclcommand","macro in excluded region");
+ help_style_line("[Macro options]","option","not counted");
+ help_style_line('\begin{group} \end{group}',"grouping","begin/end group");
+ help_style_line('\begin{group} \end{group}',"exclgroup","begin/end group in excluded region");
+ help_style_line('$ $',"mathgroup","counted as one equation");
+ help_style_line('$ $',"exclmath","equation in excluded region");
+ help_style_line('% Comments',"comment","not counted");
+ help_style_line('%TC:TeXcount instructions',"tc","not counted");
+ help_style_line("File to include","fileinclude","not counted but file may be counted later");
+ if ($showstates) {
+ help_style_line('[state]',"state","internal TeXcount state");
+ }
+ if (@sumweights) {
+ help_style_line('[sumcount]',"sumcount","cumulative sum count");
+ }
+ help_style_line("ERROR","error","TeXcount error message");
+ if ($htmlstyle) {print "</p>";}
+ print "\n\n";
+}
+
+sub help_style_line {
+ my ($text,$style,$comment)=@_;
+ if ($htmlstyle) {
+ $comment="&nbsp;&nbsp;....&nbsp;&nbsp;".$comment;
+ } else {
+ $comment=" .... ".$comment;
+ }
+ if (print_style($text,$style)) {
+ print $comment;
+ linebreak();
+ }
+}
+
+# Print output style codes if conditions are met
+sub conditional_print_help_style {
+ if ($showcodes) {print_help_style();}
+ return $showcodes;
+}
+
+###### HTML routines
+
+
+
+sub html_head {
+ print "<html>\n<head>";
+ if ($utf8flag) {
+ print "\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">";
+ }
+ print '
+<style>
+<!--
+body {width:auto;padding:5;margin:5;}
+.error {font-weight:bold;color:#f00;font-style:italic;}
+.word1,.word2,.word3 {color: #009;}
+.word2 {font-weight: 700;}
+.word3 {font-style: italic;}
+.command {color: #c00;}
+.exclcommand {color: #f99;}
+.option {color: #cc0;}
+.grouping, .document {color: #900; font-weight:bold;}
+.mathgroup {color: #090;}
+.exclmath {color: #6c6;}
+.ignore {color: #999;}
+.exclgroup {color:#c66;}
+.tc {color: #999; font-weight:bold;}
+.comment {color: #999; font-style: italic;}
+.state {color: #990; font-size: 70%;}
+.sumcount {color: #999; font-size: 80%;}
+.fileinclude {color: #696; font-weight:bold;}
+dl.count {background: #cfc; color: 009;}
+dl.count dt.header {font-weight: bold; font-style: italic; float: none;}
+dl.count dt {clear: both; float: left; margin-right: .5em;}
+dl.count dd {font-weight: bold;}
+dl.count dd.briefcount {font-weight: 700; clear: both; font-size:80%; font-weight:normal; margin-left:8pt;}
+.warning {color: #c00; font-weight: 700;}
+.parse, .count, .stylehelp, .filegroup {border: solid 1px #999; margin: 0pt; padding: 4pt;}
+.parse {font-size: 80%; background: #eef;}
+.parse {border-bottom:none;}
+.stylehelp {font-size: 80%; background: #ffc; margin-bottom: 8pt;}
+.filegroup {background: #efe; margin-bottom: 8pt;}
+-->
+</style>
+</head>
+<body>
+<h1>LaTeX word count</h1>
+';
+}
+
+sub html_tail {
+ print '</body></html>';
+}
+
+###### Help routines
+
+
+
+sub print_version {
+ print "TeXcount version ".$versionnumber.", ".$versiondate.'.';
+}
+
+sub print_syntax {
+ print '
+Syntax: TeXcount.pl [options] files
+
+Options:
+ -relaxed Uses relaxed rules for word and option handling:
+ i.e. allows more general cases to be counted as
+ either words or macros.
+ -v Verbose (same as -v3)
+ -v0 Do not present parsing details
+ -v1 Verbose: print parsed words, mark formulae
+ -v2 More verbose: also print ignored text
+ -v3 Even more verbose: include comments and options
+ -v4 Same as -v3 -showstate
+ -showstate Show internal states (with verbose)
+ -brief Only prints a brief, one line summary of counts
+ -q, -quiet Quiet mode, no error messages (use is discouraged!)
+ -sum, -sum= Make sum of all word and equation counts. May also
+ use -sum=#[,#] with up to 7 numbers to indicate how
+ each of the counts (text words, header words, caption
+ words, #headers, #floats, #inlined formulae,
+ #displayed formulae) are summed. The default sum (if
+ only -sum is used) is the same as -sum=1,1,1,0,0,1,1.
+ -sub, -sub= Generate subcounts. Option values are none, part,
+ chapter, section or subsection. Default (-sub) is set
+ to subsection, whereas unset is none. (Alternative
+ option name is -subcount.)
+ -nc, -nocol No colours (colours require ANSI)
+ -html Output in HTML format
+ -htmlcore Only HTML body contents
+ -inc Include tex files included in the document
+ -noinc Do not include included tex files (default)
+ -total Do not give sums per file, only total sum.
+ -1 Same as -brief and -total. Ensures there is only one
+ line of output. If used in conjunction with -sum, the
+ output will only be the total number. (NB: Character
+ is the number one, not the letter L.)
+ -dir, -dir= Specify the working directory using -dir=path.
+ Remember that the path must end with \ or /. If only
+ -dir is used, the directory of the parent file is used.
+ -utf8, -unicode Turns on Unicode (UTF-8) for input and output. This
+ is automatic with -chinese, and is required to handle
+ e.g. Korean text. Note that the TeX file must be save
+ in UTF-8 format (not e.g. GB2312 or Big5), or the
+ result will be unpredictable.
+ -ch, -chinese, -zhongwen Turns on support for Chinese characters.
+ TeXcount will then count each Chinese character as a
+ word. Automatically turns on -utf8.
+ -jp, -japanese Turns on support for Japanese characters. TeXcount
+ will count each Japanese character (kanji, hiragana,
+ and katakana) as one word, i.e. not do any form of
+ word segmentation. Automatically turns on -utf8.
+ -codes Display output style code overview and explanation.
+ This is on by default.
+ -nocodes Do not display output style code overview.
+ -h, -?, --help, /? Help
+ --version Print version number
+ --license License information
+';
+}
+
+sub print_help {
+ print '
+***************************************************************
+* TeXcount.pl '.$versionnumber.', '.$versiondate.'
+*
+
+Count words in TeX and LaTeX files, ignoring macros, tables,
+formulae, etc.
+';
+ print_syntax();
+ print '
+The script counts words as either words in the text, words in
+headers/titles or words in floats (figure/table captions).
+Macro options (i.e. \marco[...]) are ignored; macro parameters
+(i.e. \macro{...}) are counted or ignored depending on the
+macro, but by default counted. Begin-end groups are by default
+ignored and treated as \'floats\', though some (e.g. center) are
+counted.
+
+Unless -nocol (or -nc) has been specified, the output will be
+colour coded. Counted text is coloured blue with headers are in
+bold and in HTML output caption text is italicised.
+
+Mathematical formulae are not counted as words, but are instead
+counted separately with separate counts for inlined formulae
+and displayed formulae. Similarly, the number of headers and
+the number of \'floats\' are counted. Note that \'float\' is used
+here to describe anything defined in a begin-end group unless
+explicitly recognized as text or mathematics.
+
+The verbose options (-v1, -v2, -v3, showstate) produces output
+indicating how the text has been interpreted. Check this to
+ensure that words in the text has been interpreted as such,
+whereas mathematical formulae and text/non-text in begin-end
+groups have been correctly interpreted.
+
+Parsing instructions may be passed to TeXcount using comments
+in the LaTeX files on the format
+ %TC:instruction arguments
+where valid instructions for setting parsing rules, typically
+set at the start of the document (applies globally), are:
+ %TC:macro [macro] [param.states]
+ macro handling rule, no. of and rules for parameters
+ %TC:macroword [macro] [number]
+ macro counted as a given number of words
+ %TC:header [macro] [param.states]
+ header macro rule, as macro but counts as one header
+ %TC:breakmacro [macro] [label]
+ macro causing subcount break point
+ %TC:group [name] [parsing-state]
+ begin-end-group handling rule
+ %TC:floatinclude [macro] [param.states]
+ as macro, but also counted inside floats
+ %TC:preambleinclude [macro] [param.states]
+ as macro, but also counted inside the preamble
+ %TC:fileinclue [macro] [rule]
+ file include, add .tex if rule=2, not if rule=0
+The [param.states] is used to indicate the number of parameters
+used by the macro and the rules of handling each of these: format
+is [#,#,...,#] with one number for each parameter, and main rules
+are 0 to ignore and 1 to count as text. Parsing instructions
+which may be used anywhere are:
+ %TC:ignore start block to ignore
+ %TC:endignore end block to ignore
+ %TC:break [title] add subcount break point here
+See the documentation for more details.
+
+Unix hint: Use \'less -r\' instead of just \'less\' to view output:
+the \'-r\' option makes less treat text formating codes properly.
+
+Windows hint: If your Windows interprets ANSI colour codes, lucky
+you! Otherwise, use the -nocol (or -nc) option with the verbose
+options or the output will be riddled with colour codes. Instead,
+you can use -html to produce HTML code, write this to file and
+view with your favourite browser.
+';
+ print_reference();
+}
+
+sub print_reference {
+ print '
+The TeXcount script is copyright of Einar Andreas Rødland (2008)
+and published under the LaTeX Project Public License.
+
+For more information about the script, e.g. news, updates, help,
+usage tips, known issues and short-comings, go to
+ http://folk.uio.no/einarro/Comp/texwordcount.html
+or go to
+ http://folk.uio.no/einarro/Services/texcount.html
+to access the script as a web service. Feedback such as problems
+or errors can be reported to einarro@ifi.uio.no.
+';
+}
+
+sub print_license {
+ print 'TeXcount version '.$versionnumber.'
+
+Copyright 2008 Einar Andreas Rødland
+
+The TeXcount script is published under the LaTeX Project Public
+License (LPPL)
+ http://www.latex-project.org/lppl.txt
+which grants you, the user, the right to use, modify and distribute
+the script. However, if the script is modified, you must change its
+name or use other technical means to avoid confusion.
+
+The script has LPPL status "maintained" with Einar Andreas
+Rødland being the current maintainer.
+';
+}
+
diff --git a/bin/torrentSort.py b/bin/torrentSort.py
new file mode 100644
index 0000000..e284a88
--- /dev/null
+++ b/bin/torrentSort.py
@@ -0,0 +1,220 @@
+#! /usr/bin/python
+# simple python script to sort torrents
+# modifications by xkonni
+# - added folder sorting
+# - added htdigest authorisation
+# - fixed some minor glitches
+#
+# original version by jonassw from
+# http://forum.xbmc.org/showthread.php?t=60749
+
+# << DOCUMENTATION
+#
+# i) lighttpd configuration for htdigest
+# server.modules += ( "mod_auth" )
+# auth.backend = "htdigest"
+# auth.backend.htdigest.userfile = "/etc/lighttpd/auth"
+# auth.debug = 2
+# auth.require = ( "/RPC2" =>
+# (
+# "method" => "digest",
+# "realm" => "REALM",
+# "require" => "valid-user"
+# )
+# )
+# ii) i recommend starting this with a basic cron job you may find other
+# suggestions like when rtorrent finishes hashing, but for me this caused
+# lockups when starting rtorrent (as all downloads return hash_ok)
+#
+# */5 * * * * for i in /mnt/torrent/tv/*; do torrentSort.py $i > /dev/null; done
+#
+# DOCUMENTATION >>
+
+
+import xmlrpclib, os, sys, re, shutil
+
+
+class HTTPSDigestTransport(xmlrpclib.SafeTransport):
+ """
+Transport that uses urllib2 so that we can do Digest authentication.
+Based upon code at http://bytes.com/topic/python/answers/509382-solution-xml-rpc-over-proxy
+"""
+
+ def __init__(self, username, pw, realm, verbose = None, use_datetime=0):
+ self.__username = username
+ self.__pw = pw
+ self.__realm = realm
+ self.verbose = verbose
+ self._use_datetime = use_datetime
+
+ def request(self, host, handler, request_body, verbose):
+ import urllib2
+
+ url='https://'+host+handler
+ if verbose or self.verbose:
+ print "ProxyTransport URL: [%s]"%url
+
+ request = urllib2.Request(url)
+ request.add_data(request_body)
+ # Note: 'Host' and 'Content-Length' are added automatically
+ request.add_header("User-Agent", self.user_agent)
+ request.add_header("Content-Type", "text/xml") # Important
+
+ # setup digest authentication
+ authhandler = urllib2.HTTPDigestAuthHandler()
+ authhandler.add_password(self.__realm, url, self.__username, self.__pw)
+ opener = urllib2.build_opener(authhandler)
+
+ #proxy_handler=urllib2.ProxyHandler()
+ #opener=urllib2.build_opener(proxy_handler)
+ f=opener.open(request)
+ return(self.parse_response(f))
+
+
+def adoptionCandidates(basedir, filename):
+ dirs = filter(lambda x : os.path.isdir(os.path.join(basedir, x)), os.listdir(basedir))
+
+ #set filename to lowercase for string comparisons
+ filename=filename.lower()
+
+ ignoredPhrases = ['-','_']
+
+ candidates = []
+ for dir in dirs:
+ dirParts = dir.split()
+ score = 0
+ requiredScore = 0
+
+ for part in dirParts:
+ if ignoredPhrases.count(part) > 0:
+ continue
+ requiredScore = requiredScore + 1
+
+ #force lower case for string comparison.
+ part=part.lower()
+ # replace "'" with "" and add word to list
+ repPart = part.replace('\'','')
+ if repPart != part:
+ dirParts.append(repPart)
+ requiredScore -= 1
+ if filename.find(part) >= 0:
+ score = score + 1
+ if score == requiredScore:
+ candidates.append( (os.path.join(basedir, dir), score) )
+
+ return candidates
+
+def getSeasonNumber(filename):
+ patterns = [
+ '.*S(\d+)E(\d+).*',
+ '.*S(\d+)(\.)?E(\d+).*', # hopefully matches series.s01.e05.avi
+ '(\d+)x(\d+).*',
+ '(\d+)(\d+)(\d+).*'
+ # commented out regex thought below Season was '4' not 14. Def better way of doing that
+ #top_gear.14x04.720p_hdtv_x264-fov.mkv
+ #'.*(\d+)x(\d+).*'
+ ]
+
+ for pattern in patterns:
+ p = re.compile(pattern, re.I)
+ g = p.findall(orphanFile)
+ if len(g) > 0:
+ season = int(g[0][0])
+ return season
+ return None
+
+
+def getRtorrentId(filename):
+ downloads = rtorrent.download_list('')
+ for dl in downloads:
+ rfile = rtorrent.d.get_base_filename(dl)
+ if rfile == filename:
+ return dl
+
+# << CONFIGURATION
+# i) FOLDER SETTINGS
+showLocations = ['/mnt/media/tv']
+allowedSourceLocation = '/mnt/media/torrent/complete/tv'
+
+# ii) CONNECTION SETTINGS
+# - using htdigest authorisation
+digestTransport = HTTPSDigestTransport("username", "password", "realm")
+rtorrent = xmlrpclib.ServerProxy('http://localhost',transport=digestTransport)
+# - not using authorisation
+# rtorrent = xmlrpclib.ServerProxy('http://localhost')
+
+# CONFIGURATION >>
+
+print '--------------- BEGIN ---------------'
+orphanFile = sys.argv[1]
+if os.path.isdir(orphanFile):
+ (fpath, fname) = os.path.split(orphanFile)
+ fname = os.path.relpath(orphanFile, allowedSourceLocation)
+
+else:
+ (fpath, fname) = os.path.split(orphanFile)
+print 'File path: %s' % fpath
+print 'File name: %s' % fname
+
+candidates = []
+
+if not orphanFile.startswith(allowedSourceLocation):
+ print 'STOP! This file is not located in %s' % allowedSourceLocation
+ exit()
+
+print 'Attempting to find a home for file %s' % orphanFile
+
+for location in showLocations:
+ candidates.extend(adoptionCandidates(location, fname))
+
+candidates.sort(lambda (da, sa), (db, sb): sb-sa)
+
+if len(candidates) <= 0:
+ print 'No one wanted this file :('
+ exit()
+
+for (dir, score) in candidates:
+ print 'Candidate: %s with score %i' % (dir, score)
+
+print 'Winner is %s with score %i' % candidates[0]
+
+if os.path.isdir(orphanFile):
+ finaldir = candidates[0][0]
+
+else:
+ # Determine Season and Episode number
+ season = getSeasonNumber(fname)
+ if not season:
+ print 'STOP! Season could not be determined.'
+ exit()
+
+ print 'Season was determined to be %i' % season
+ finaldir = os.path.join(candidates[0][0], 'Season %s' % season)
+
+ # Check if season folder is present
+ if not os.path.isdir(finaldir):
+ print 'Season dir doesn\'t exist. Creating now'
+ os.mkdir(finaldir)
+
+ if os.path.isfile(os.path.join(finaldir, fname)):
+ print 'error: file already exists, exiting'
+ sys.exit(1)
+
+ print 'Will move file to %s' % finaldir
+
+
+print 'Requesting id from rtorrent'
+rid = getRtorrentId(fname)
+print '%s was resolved to rtorrent id: %s' % (fname, rid)
+
+print 'Pausing rtorrent'
+rtorrent.d.pause(rid)
+
+print 'Updating rtorrent'
+rtorrent.d.set_directory(rid, finaldir)
+
+print 'Moving file'
+shutil.move(orphanFile, finaldir)
+
+print 'Resuming rtorrent'
+rtorrent.d.resume(rid)