diff --git a/assets/abcde.conf b/assets/abcde.conf
new file mode 100644
index 0000000..34cdb6a
--- /dev/null
+++ b/assets/abcde.conf
@@ -0,0 +1,358 @@
+# System defaults for abcde version 2.2.x
+# Nothing in this file is uncommented by default.
+#
+# If you wish to override these system-wide settings, create your own
+# .abcde.conf file in your home directory.
+
+# CDDB options
+
+# If you wish to use a different CDDB server, edit this line.
+# If you just wanted to use a proxy server, just set your http_proxy
+# environment variable - wget will use it correctly.
+CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi"
+
+# The CDDB protocol level.
+# Right now 5 is latin1 output and 6 is UTF8 encoding.
+CDDBPROTO=6
+
+# The CDDB protocol requires hello information, including a valid username
+# and hostname. If you feel paranoid about giving away such info, edit this
+# line - the format is username@hostname.
+HELLOINFO="`whoami`@`hostname`"
+
+# This controls the email address CDDB changes are submitted to.
+CDDBSUBMIT=freedb-submit@freedb.org
+
+# The following options control whether or not fetched CDDB entries
+# are cached locally in $CDDBLOCALDIR
+#CDDBCOPYLOCAL="n"
+#CDDBLOCALDIR="$HOME/.cddb"
+#CDDBLOCALRECURSIVE="n"
+
+# If NOSUBMIT is set to y, then abcde will never prompt asking if you
+# wish to submit your edited cddb file.
+#NOSUBMIT=n
+
+# If NOCDDBQUERY is set to y, then abcde will never even try to access
+# the CDDB server; running abcde will automatically drop you into a
+# blank cddb file to edit at your leisure. This is the same as the
+# -n option. NOCDDBQUERY=y implies NOSUBMIT=y.
+#NOCDDBQUERY=n
+
+# Select here if you want to use the locally stored CDDB entries.
+# This is useful if you do a lot of editing to those CDDB entries.
+# Also, other tools like Grip store CDDB entries under $HOME/.cddb,
+# so they can be reused when ripping CDs.
+#CDDBUSELOCAL="n"
+
+# List, separated with a comma, the fields we want the parsing function to
+# output. Defaults to YEAR and GENRE, for a complete list of fields provided by
+# CDDB.
+# The fields are not case sensitive. Actually, "y,g" will work as fine as "Y,G"
+# or "YEAR, GENRE"
+#SHOWCDDBFIELDS=year,genre
+
+# Specify the style of encoder to use here -
+# oggenc, vorbize - for OGGENCODERSYNTAX
+# lame, gogo, bladeenc, l3enc, xingmp3enc, mp3enc - for MP3ENCODERSYNTAX
+# flac - the only supported for FLACENCODERSYNTAX at the moment
+# speexenc - the only encoder for SPEEXENCODERSYNTAX
+# mppenc - encoder for MPPENCODERSYNTAX
+# default is a valid option for oggenc, lame, flac, speexenc and mppenc.
+# Currently this affects the default location of the binary, the variable
+# to pick encoder command-line options from, and where the options are
+# given.
+MP3ENCODERSYNTAX=lame
+OGGENCODERSYNTAX=oggenc
+FLACENCODERSYNTAX=flac
+#SPEEXENCODERSYNTAX=default
+#MPPENCODERSYNTAX=default
+#AACENCODERSYNTAX=default
+
+# Specify the syntax of the normalize binary here - so far only 'normalize'
+# is supported.
+#NORMALIZERSYNTAX=default
+
+# CD reader program to use - currently recognized options are 'cdparanoia',
+# 'cdda2wav', 'dagrab', 'cddafs' (Mac OS X only) and 'flac'.
+CDROMREADERSYNTAX=cdparanoia
+
+# CUE reader syntax for the CUE reader program to use.
+# abcde supports 2 CUE modes: 'mkcue' and 'abcde.mkcue' so you can set the
+# MKCUE variable accordingly. The 'abcde.mkcue' uses an internal
+# implementation, without the need of an external program.
+#CUEREADERSYNTAX=default
+
+# Specify the program to convert a CUE sheet back to a CD disc ID for CDDB queries.
+# Select between '/path/to/cue2discid' (provided as an example) or
+# 'abcde.cue2discid', implemented internaly.
+#CUE2DISCID=abcde.cue2discid
+
+# Keep the wav files after encoding. Set it to "y" and remove "clean" from
+# the list of default actions, since we purge the temp directory as default.
+#KEEPWAVS=n
+
+# Track padding: force abcde to pad tracks using 0, so every song uses a two
+# digit entry. If set to "y", even a single song encoding outputs a file like
+# 01.my_song.ext
+PADTRACKS=y
+
+# Define if you want abcde to be non-interactive.
+# Keep in mind that there is no way to deactivate it right now in the command
+# line, so setting this option makes abcde to be always non-interactive.
+#INTERACTIVE=n
+
+# Specify 'nice'ness of the encoder, the CD reader and the distmp3 proc.
+# This is a relative 'nice'ness (that is, if the parent process is at a
+# nice level of 12, and the ENCNICE is set to 3, then the encoder will
+# run with an absolute nice value of 15. Note also, that setting these
+# to be empty will result in some default niceness increase (4 in tcsh
+# and 10 using the bsdutils' nice).
+#ENCNICE=10
+#READNICE=10
+#DISTMP3NICE=10
+
+# Paths of programs to use
+LAME=lame
+#TOOLAME=toolame
+#GOGO=gogo
+#BLADEENC=bladeenc
+#L3ENC=l3enc
+#XINGMP3ENC=xingmp3enc
+#MP3ENC=mp3enc
+#VORBIZE=vorbize
+OGGENC=oggenc
+FLAC=flac
+SPEEXENC=speexenc
+#MPPENC=mppenc
+#AACENC=faac
+
+ID3=id3
+ID3V2=id3v2
+CDPARANOIA=cdparanoia
+#CDDA2WAV=cdda2wav
+#CDDAFS=cp
+CDDISCID=cd-discid
+CDDBTOOL=cddb-tool
+EJECT=eject
+MD5SUM=md5sum
+#DISTMP3=distmp3
+VORBISCOMMENT=vorbiscomment
+#METAFLAC=metaflac
+NORMALIZE=normalize-audio
+#CDSPEED=eject
+#VORBISGAIN=vorbisgain
+#MKCUE=mkcue
+#MKTOC=cdrdao
+DIFF=diff
+
+# Options to call programs with:
+
+# If HTTPGET is modified, the HTTPGETOPTS options should also be defined
+# accordingly. If HTTPGET is changed, the default options will be set,
+# if HTTPGETOPTS is empty or not defined.
+#HTTPGET=wget
+# for fetch (FreeBSD): HTTPGETOPTS="-q -o -"
+# for wget: HTTPGETOPTS="-q -O -"
+# for curl (MacOSX): HTTPGETOPTS="-f -s"
+#HTTPGETOPTS="-q -O -"
+
+# MP3:
+LAMEOPTS='--preset fast standard'
+#LAMEOPTS='--preset fast medium'
+#TOOLAMEOPTS=
+#GOGOOPTS=
+#BLADEENCOPTS=
+#L3ENCOPTS=
+#XINGMP3ENCOPTS=
+#MP3ENCOPTS=
+
+# Ogg:
+#VORBIZEOPTS=
+#OGGENCOPTS='-q 6'
+OGGENCOPTS='-q 0'
+
+# FLAC:
+FLACOPTS="--verify --best"
+
+# Speex:
+#SPEEXENCOPTS=
+
+# MPP/MP+ (Musepack):
+# For the encoder options take a look at the manpage. Set them like this:
+# MPPENCOPTS='--xtreme' if you wish to set more options then:
+# MPPENCOPTS='--xtreme --skip 20 --fade 10'
+#MPPENCOPTS=
+
+# M4A/AAC
+#AACENCOPTS=
+
+#ID3OPTS=
+#ID3V2OPTS=
+CDPARANOIAOPTS='--never-skip=40'
+#CDDA2WAVOPTS=
+#CDDAFSOPTS="-f"
+#CDDBTOOLOPTS=
+#EJECTOPTS=
+#DISTMP3OPTS=
+#NORMALIZEOPTS=
+#CDSPEEDOPTS="-x"
+#CDSPEEDVALUE=""
+#MKCUEOPTS=""
+#MKTOCOPTS=""
+#DIFFOPTS=""
+#VORBISCOMMENTOPTS="-R"
+#METAFLACOPTS="--no-utf8-convert"
+#DIFFOPTS=""
+
+# Actions to take
+# Comma-separated list of one or more of the following:
+# cddb,cue,read,normalize,encode,tag,move,playlist,clean,default
+# encode implies read
+# normalize implies read
+# tag implies cddb,read,encode
+# move implies cddb,read,encode,tag
+# playlist implies cddb
+# An action can be added to the "default" action by specifying it along with
+# "default", without having to repeat the default ones:
+# ACTIONS=default,playlist
+# The default action list (referenced as "default") is defined in the following
+# comment:
+#ACTIONS=cddb,read,encode,tag,move,clean
+
+# CD device you want to read from
+# It can be defined as a singletrack flac file, but since it might change from
+# file to file it makes little sense to define it here.
+#CDROM=/dev/cdrom
+# If we are using the IDE bus, we need CDPARANOIACDROMBUS defined as "d"
+# If we are using the ide-scsi emulation layer, we need to define a "g"
+#CDPARANOIACDROMBUS="d"
+
+# If you'd like to make a default location that overrides the current
+# directory for putting mp3's, uncomment this.
+OUTPUTDIR="$HOME/Music/"
+
+# Or if you'd just like to put the temporary .wav files somewhere else
+# you can specify that here
+#WAVOUTPUTDIR=`pwd`
+
+# OUTPUTTYPE can be either "ogg", "mp3", "flac" or "spx", or a combination
+# of them separated with ",": "ogg,mp3".
+OUTPUTTYPE=mp3
+
+# Output filename format - change this to reflect your inner desire to
+# organize things differently than everyone else :)
+# You have the following variables at your disposal:
+# OUTPUT, GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE, and TRACKNUM.
+# Make sure to single-quote this variable. abcde will automatically create
+# the directory portion of this filename.
+# NOTICE: OUTPUTTYPE has been deprecated in the OUTPUTFORMAT string.
+# Since multiple-output was integrated we always append the file type
+# to the files. Remove it from your user defined string if you are getting
+# files like ".ogg.ogg".
+OUTPUTFORMAT='${ARTISTFILE} - ${ALBUMFILE}/${TRACKNUM} ${TRACKFILE}'
+
+# Like OUTPUTFORMAT but for Various Artists discs.
+VAOUTPUTFORMAT='${ALBUMFILE}/${TRACKNUM} ${ARTISTFILE} - ${TRACKFILE}'
+
+# Like OUTPUTFORMAT and VAOUTPUTFORMAT but for the ONEFILE rips.
+ONETRACKOUTPUTFORMAT=$OUTPUTFORMAT
+VAONETRACKOUTPUTFORMAT=$VAOUTPUTFORMAT
+
+# Define how many encoders to run at once. This makes for huge speedups
+# on SMP systems. Defaults to 1. Equivalent to -j.
+#MAXPROCS=2
+
+# Support for systems with low disk space:
+# n: Default parallelization (read entire CD in while encoding)
+# y: No parallelization (rip, encode, rip, encode...)
+#LOWDISK=n
+
+# If set to y, enables batch mode normalization, which preserves relative
+# volume differences between tracks of an album.
+#BATCHNORM=n
+
+# Enables nogap encoding when using the 'lame' encoder.
+#NOGAP
+
+# Set the playlist file location format. Uses the same variables and format
+# as OUTPUTFORMAT. If the playlist is specified to be in a subdirectory, it
+# will be created for you and the playlist will reference files from that
+# subdirectory.
+#PLAYLISTFORMAT='${ARTISTFILE} - ${ALBUMFILE}.${OUTPUT}.m3u'
+# If you want to prefix every filename in a playlist with an arbitrary
+# string (such as 'http://you/yourstuff/'), use this option
+#PLAYLISTDATAPREFIX=''
+
+#Like PLAYLIST{FORMAT,DATAPREFIX} but for Various Artists discs:
+#VAPLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u'
+#VAPLAYLISTDATAPREFIX=''
+
+#This will give the playlist CR-LF line-endings, if set to "y".
+#(some hardware players insist on CR-LF line-endings)
+#DOSPLAYLIST=n
+
+# Custom filename munging:
+# By default, abcde will do the following to CDDB data to get a useful
+# filename:
+# * Translate colons to a space and a dash for Windows compatibility
+# * Eat control characters, single quotes, and question marks
+# * Translate spaces and forward slashes to underscores
+# * Translate stars into pluses.
+# To change that, redefine the mungefilename function.
+# mungefilename receives the CDDB data (artist, track, title, whatever)
+# as $1 and outputs it on stdout.
+mungefilename ()
+{
+ echo "$@" | sed s,:,\ -,g | tr /\* _+ | tr -d \'\"\?\[:cntrl:\]
+}
+
+# Custom genre munging:
+# By default we just transform uppercase to lowercase. Not much of a fancy
+# function, with not much use, but one can disable it or just turn the first
+# Uppercase.
+#mungegenre ()
+#{
+# echo $CDGENRE | tr "[:upper:]" "[:lower:]"
+#}
+
+
+# Custom pre-read function
+# By default it does nothing.
+# You can set some things to get abcde function in better ways:
+# * Close the CD tray using eject -t (if available in eject and supported by
+# your CD device.
+# * Set the CD speed. You can also use the built-in options, but you can also
+# set it here. In Debian, eject -x and cdset -x do the job.
+# KEEP IN MIND that executables included in pre_read must be in your $PATH or
+# you have to define them with full /path/to/binary
+# Uncomment and substitute the ":" with your commands.
+#pre_read ()
+#{
+#:
+#}
+
+# Custom post-read function
+# By default it does nothing.
+# You can set some things to get abcde function in better ways:
+# * Store a copy of the CD TOC.
+# KEEP IN MIND that executables included in post_read must be in your $PATH or
+# you have to define them with full /path/to/binary
+# Uncomment and substitute the ":" with your commands.
+#post_read ()
+#{
+#:
+#}
+
+# If you'd like to have abcde eject the cdrom after all the tracks have been
+# read, uncomment the following line.
+#EJECTCD=y
+
+# To encode on the remote machines foo, bar, baz, quux, and qiix, as well as
+# on the local machine (requires distmp3 to be installed on local machine and
+# distmp3host to be installed and running on all remote machines - see README)
+#REMOTEHOSTS=foo,bar,baz,quux,qiix
+
+# Set to obtain some information about actions happening in the background
+# Useful if you have a slow network or CDDB servers seem unresponsive.
+EXTRAVERBOSE=y
diff --git a/assets/autohotkey.syntax b/assets/autohotkey.syntax
new file mode 100644
index 0000000..aae108c
--- /dev/null
+++ b/assets/autohotkey.syntax
@@ -0,0 +1,197 @@
+# AutoHotkey
+# http://www.autohotkey.com/
+
+context default
+ keyword wholeright #+ white black
+ keyword whole FileInstall white black
+
+ keyword whole Global yellow
+ keyword whole global yellow
+ keyword whole Local yellow
+ keyword whole local yellow
+ keyword whole Static yellow
+ keyword whole static yellow
+
+ keyword whole Break brightmagenta
+ keyword whole break brightmagenta
+ keyword whole Continue brightmagenta
+ keyword whole continue brightmagenta
+ keyword whole Gosub brightmagenta
+ keyword whole GoSub brightmagenta
+ keyword whole If brightmagenta
+ keyword whole IfEqual brightmagenta
+ keyword whole IfExist brightmagenta
+ keyword whole IfGreater brightmagenta
+ keyword whole IfInString brightmagenta
+ keyword whole IfMsgBox brightmagenta
+ keyword whole IfNotEqual brightmagenta
+ keyword whole IfNotExist brightmagenta
+ keyword whole IfNotInString brightmagenta
+ keyword whole IfWinExist brightmagenta
+ keyword whole IfWinNotActive brightmagenta
+ keyword whole Else brightmagenta
+ keyword whole Exit brightmagenta
+ keyword whole ExitApp brightmagenta
+ keyword whole Goto brightmagenta
+ keyword whole Loop brightmagenta
+ keyword whole OnExit brightmagenta
+ keyword whole Return brightmagenta
+ keyword whole return brightmagenta
+ keyword whole Sleep brightmagenta
+ keyword whole SetTimer brightmagenta
+ keyword whole Suspend brightmagenta
+
+ keyword whole Control yellow
+ keyword whole ControlClick yellow
+ keyword whole ControlGet yellow
+ keyword whole ControlGetText yellow
+ keyword whole ControlSetText yellow
+ keyword whole CoordMode yellow
+ keyword whole DetectHiddenWindows yellow
+ keyword whole DllCall yellow
+ keyword whole EnvGet yellow
+ keyword whole EnvSet yellow
+ keyword whole EnvSub yellow
+ keyword whole FileAppend yellow
+ keyword whole FileCopy yellow
+ keyword whole FileCreateDir yellow
+ keyword whole FileDelete yellow
+ keyword whole FileExist yellow
+ keyword whole FileGetAttrib yellow
+ keyword whole FileGetSize yellow
+ keyword whole FileGetTime yellow
+ keyword whole FileGetVersion yellow
+ keyword whole FileMove yellow
+ keyword whole FileRead yellow
+ keyword whole FileRemoveDir yellow
+ keyword whole FileSelectFile yellow
+ keyword whole FileSelectFolder yellow
+ keyword whole FileSetAttrib yellow
+ keyword whole FileSetTime yellow
+ keyword whole FormatTime yellow
+ keyword whole GetKeyState yellow
+ keyword whole Gui yellow
+ keyword whole GuiControl yellow
+ keyword whole GuiControlGet yellow
+ keyword whole Hotkey yellow
+ keyword whole IniDelete yellow
+ keyword whole IniRead yellow
+ keyword whole IniWrite yellow
+ keyword whole InStr yellow
+ keyword whole Menu yellow
+ keyword whole MouseGetPos yellow
+ keyword whole MsgBox yellow
+ keyword whole Process yellow
+ keyword whole Progress yellow
+ keyword whole RegDelete yellow
+ keyword whole RegRead yellow
+ keyword whole RegWrite yellow
+ keyword whole Round yellow
+ keyword whole Run yellow
+ keyword whole RunWait yellow
+ keyword whole Send yellow
+ keyword whole SendRaw yellow
+ keyword whole SetBatchLines yellow
+ keyword whole SetFormat yellow
+ keyword whole SetWinDelay yellow
+ keyword whole SetWorkingDir yellow
+ keyword whole Shutdown yellow
+ keyword whole Sort yellow
+ keyword whole SplashImage yellow
+ keyword whole SplitPath yellow
+ keyword whole StringGetPos yellow
+ keyword whole StringLeft yellow
+ keyword whole StringMid yellow
+ keyword whole StringRight yellow
+ keyword whole StringLen yellow
+ keyword whole StringLower yellow
+ keyword whole StringReplace yellow
+ keyword whole StringSplit yellow
+ keyword whole StringTrimLeft yellow
+ keyword whole StringTrimRight yellow
+ keyword whole StrLen yellow
+ keyword whole SubStr yellow
+ keyword whole Tooltip yellow
+ keyword whole ToolTip yellow
+ keyword whole TrayTip yellow
+ keyword whole VarSetCapacity yellow
+ keyword whole WinActivate yellow
+ keyword whole WinClose yellow
+ keyword whole WinExist yellow
+ keyword whole WinGet yellow
+ keyword whole WinGetActiveTitle yellow
+ keyword whole WinGetClass yellow
+ keyword whole WinGetPos yellow
+ keyword whole WinGetTitle yellow
+ keyword whole WinSet yellow
+ keyword whole WinWait yellow
+ keyword whole WinWaitClose yellow
+
+ keyword whole A_AhkPath white
+ keyword whole A_CaretX white
+ keyword whole A_CaretY white
+ keyword whole A_EventInfo white
+ keyword whole A_GuiControl white
+ keyword whole A_GuiControlEvent white
+ keyword whole A_GuiEvent white
+ keyword whole A_Index white
+ keyword whole A_IsCompiled white
+ keyword whole A_Language white
+ keyword whole A_LoopField white
+ keyword whole A_LoopFileDir white
+ keyword whole A_LoopFileFullPath white
+ keyword whole A_LoopFileLongPath white
+ keyword whole A_LoopFileName white
+ keyword whole A_LoopReadLine white
+ keyword whole A_LoopRegName white
+ keyword whole A_LoopRegType white
+ keyword whole A_OSVersion white
+ keyword whole A_ScreenHeight white
+ keyword whole A_ScreenWidth white
+ keyword whole A_ScriptDir white
+ keyword whole A_ScriptFullPath white
+ keyword whole A_ThisHotkey white
+ keyword whole A_ThisHotKey white
+ keyword whole A_TickCount white
+ keyword whole AutoHotkey_Path white
+ keyword whole ErrorLevel white
+
+ keyword %+% brightgreen
+
+ keyword linestart *:: brightgreen black
+ keyword linestart +: brightblue black
+
+ keyword > white
+ keyword < white
+ keyword \+ white
+ keyword - white
+ keyword \* white
+ keyword / white
+ keyword = white
+ keyword <> white
+ keyword == white
+ keyword & white
+ keyword | white
+ keyword := white
+ keyword whole and white
+ keyword whole or white
+ keyword { brightcyan
+ keyword } brightcyan
+ keyword ( brightcyan
+ keyword ) brightcyan
+ keyword , brightcyan
+
+ keyword /\* brown
+ keyword \*/ brown
+
+context ; \n brown
+ spellcheck
+
+context exclusive /\* \*/ brown
+ spellcheck
+
+context " " green
+ spellcheck
+
+#context ' ' green
+# spellcheck
diff --git a/assets/eztemplate.syntax b/assets/eztemplate.syntax
new file mode 100644
index 0000000..c8bd5cc
--- /dev/null
+++ b/assets/eztemplate.syntax
@@ -0,0 +1,108 @@
+# eZPublish Template syntax file
+
+context default cyan
+ spellcheck
+
+context {\* \*} brown
+ spellcheck
+
+context {literal} {/literal} brightblue
+
+context { } lightgray
+ keyword whole def white
+ keyword whole set white
+
+ keyword whole if brightmagenta
+ keyword whole else brightmagenta
+ keyword whole elseif brightmagenta
+ keyword whole switch brightmagenta
+ keyword whole case brightmagenta
+ keyword whole foreach brightmagenta
+ keyword whole true brightmagenta
+ keyword whole false brightmagenta
+ keyword whole no brightmagenta
+ keyword whole yes brightmagenta
+
+ keyword whole include brightred
+ keyword whole debug-accumulator brightred
+ keyword whole cache-block brightred
+
+ keyword whole array yellow
+ keyword whole append yellow
+ keyword whole fetch yellow
+ keyword whole first_set yellow
+ keyword whole concat yellow
+ keyword whole cond yellow
+ keyword whole count yellow
+ keyword whole dec yellow
+ keyword whole extract yellow
+ keyword whole hash yellow
+ keyword whole inc yellow
+ keyword whole i18n yellow
+ keyword whole implode yellow
+ keyword whole is_set yellow
+ keyword whole is_unset yellow
+ keyword whole is_array yellow
+ keyword whole trim yellow
+ keyword whole wash yellow
+ keyword whole ezhttp yellow
+ keyword whole ezini yellow
+ keyword whole ezini_hasvariable yellow
+ keyword whole ezscript yellow
+ keyword whole ezimage yellow
+ keyword whole ezurl yellow
+ keyword whole ezdesign yellow
+ keyword whole svt_siteaccess yellow
+ keyword whole svt_debug yellow
+ keyword whole svt_set_debug_attribute yellow
+ keyword whole svt_request_parameters yellow
+ keyword whole svt_textmodule yellow
+
+####################################
+# expressions, operators and other
+
+ keyword whole as white
+ keyword whole and white
+ keyword whole or white
+ keyword whole ne white
+ keyword whole eq white
+ keyword whole gt white
+ keyword whole lt white
+ keyword whole not white
+ keyword whole contains white
+
+ keyword whole $node brightmagenta
+ keyword whole $module_result brightmagenta
+
+ keyword wholeright $+ brightgreen
+ keyword wholeleft += brightgreen
+
+ keyword ( brightcyan
+ keyword ) brightcyan
+ keyword [ brightcyan
+ keyword ] brightcyan
+ keyword , brightcyan
+ keyword : brightcyan
+ keyword '*' green
+ keyword "*" green
+ keyword ; brightmagenta
+
+#context " " green
+# spellcheck
+# keyword \\" brightgreen
+# keyword \\\n brightgreen
+# keyword %% brightgreen
+# keyword %\[#0\s-\+,\]\[0123456789\]\[.\]\[0123456789\]\[L\]\{eEfgGoxX\} brightgreen
+# keyword %\[0\s-\+,\]\[0123456789\]\[.\]\[0123456789\]\[hl\]\{diu\} brightgreen
+# keyword %\[hl\]n brightgreen
+# keyword %\[.\]\[0123456789\]s brightgreen
+# keyword %[*] brightgreen
+# keyword %c brightgreen
+# keyword \\\{0123\}\{01234567\}\{01234567\} brightgreen
+# keyword \\\\ brightgreen
+# keyword \\' brightgreen
+# keyword \\\{abtnvfr\} brightgreen
+
+#context ' ' brightgreen
+# spellcheck
+# keyword \\' brightcyan
diff --git a/assets/pyyimt.txt b/assets/pyyimt.txt
new file mode 100644
index 0000000..a9d27cb
--- /dev/null
+++ b/assets/pyyimt.txt
@@ -0,0 +1,62 @@
+#! /bin/bash
+### BEGIN INIT INFO
+# Provides: pyyimt
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+### END INIT INFO
+
+set -e
+
+export PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+NAME=pyyimt
+DESC="Yahoo transport for Jabber"
+
+PIDDIR=/opt/pyyimt
+PIDFILE=$PIDDIR/$NAME.pid
+USER=jabber
+GROUP=jabber
+
+SSD_OPTS="--pidfile=$PIDFILE --name=python2.5 --user=$USER"
+
+DAEMON=/usr/bin/python2.5
+OPTIONS="/opt/pyyimt/src/yahoo.py"
+
+test -f $DAEMON || exit 0
+
+if test ! -e $PIDDIR; then
+ mkdir $PIDDIR
+ chown $USER:$GROUP $PIDDIR
+fi
+
+case "$1" in
+start)
+ echo -n "Starting $DESC: "
+ (start-stop-daemon --start $SSD_OPTS --background --chdir "$PIDDIR/src" --startas "$DAEMON" --chuid "$USER" -- $OPTIONS)
+ if test "$?" = 0; then echo "$NAME."; fi
+ ;;
+stop)
+ echo -n "Stopping $DESC: "
+ (start-stop-daemon --stop $SSD_OPTS --retry 10)
+ if test "$?" = 0; then echo "$NAME."; fi
+ ;;
+reload|force-reload)
+ echo -n "Reloading $DESC configuration..."
+ (start-stop-daemon --stop $SSD_OPTS --signal HUP)
+ if test "$?" = 0; then echo 'done.'; fi
+ ;;
+restart)
+ $0 stop
+ $0 start
+ ;;
+*)
+ echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# vim: filetype=sh
\ No newline at end of file
diff --git a/assets/zshrc.txt b/assets/zshrc.txt
new file mode 100644
index 0000000..5cc37fe
--- /dev/null
+++ b/assets/zshrc.txt
@@ -0,0 +1,191 @@
+# The following lines were added by compinstall
+
+zstyle ':completion:*' auto-description 'specify: %d'
+zstyle ':completion:*' completer _complete _ignored _approximate
+zstyle ':completion:*' expand suffix
+zstyle ':completion:*' format 'Completing %d'
+zstyle ':completion:*' group-name ''
+zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
+zstyle ':completion:*' list-suffixes true
+zstyle ':completion:*' max-errors 3
+zstyle ':completion:*' menu select=1
+zstyle ':completion:*' preserve-prefix '//[^/]##/'
+zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
+zstyle ':completion:*' verbose true
+zstyle :compinstall filename '/home/mbirth/.zshrc'
+
+autoload -Uz compinit
+compinit
+# End of lines added by compinstall
+# Lines configured by zsh-newuser-install
+HISTFILE=~/.zsh_history
+HISTSIZE=1000
+SAVEHIST=1000
+# End of lines configured by zsh-newuser-install
+
+setopt APPEND_HISTORY
+unsetopt BG_NICE # do NOT nice bg commands
+setopt CORRECT # command CORRECTION
+setopt EXTENDED_HISTORY # puts timestamps in the history
+setopt notify correct pushdtohome cdablevars autolist
+setopt correctall recexact longlistjobs
+setopt autoresume histignoredups
+setopt autopushd pushdminus rcquotes mailwarning
+unsetopt bgnice autoparamslash
+
+bindkey "^[[3~" delete-char
+bindkey "^[3;5~" delete-char
+bindkey "^?" backward-delete-char
+bindkey '^[OH' beginning-of-line
+bindkey '^[OF' end-of-line
+bindkey '^[[5~' up-line-or-history
+bindkey '^[[6~' down-line-or-history
+bindkey "^r" history-incremental-search-backward
+bindkey ' ' magic-space # also do history expansion on space
+bindkey '^I' complete-word # complete on tab, leave expansion to _expand
+
+# formatting and messages
+zstyle ':completion:*:descriptions' format '%B%d%b'
+zstyle ':completion:*:messages' format '%d'
+zstyle ':completion:*:warnings' format 'No matches for: %d'
+zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
+
+# command for process lists, the local web server details and host completion
+# on processes completion complete all user processes
+# zstyle ':completion:*:processes' command 'ps -au$USER'
+
+## add colors to processes for kill completion
+zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
+
+#zstyle ':completion:*:processes' command 'ps ax -o pid,s,nice,stime,args | sed "/ps/d"'
+zstyle ':completion:*:*:kill:*:processes' command 'ps --forest -A -o pid,user,cmd'
+zstyle ':completion:*:processes-names' command 'ps axho command'
+#zstyle ':completion:*:urls' local 'www' '/var/www/htdocs' 'public_html'
+
+#NEW completion:
+# 1. All /etc/hosts hostnames are in autocomplete
+# 2. If you have a comment in /etc/hosts like #%foobar.domain,
+# then foobar.domain will show up in autocomplete!
+zstyle ':completion:*' hosts $(awk '/^[^#]/ {print $2 $3" "$4" "$5}' /etc/hosts | grep -v ip6- && grep "^#%" /etc/hosts | awk -F% '{print $2}')
+
+# ignore completion functions (until the _ignored completer)
+zstyle ':completion:*:functions' ignored-patterns '_*'
+zstyle ':completion:*:*:*:users' ignored-patterns \
+ adm apache bin daemon games gdm halt ident junkbust lp mail mailnull \
+ named news nfsnobody nobody nscd ntp operator pcap postgres radvd \
+ rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs avahi-autoipd\
+ avahi backup messagebus beagleindex debian-tor dhcp dnsmasq fetchmail\
+ firebird gnats haldaemon hplip irc klog list man cupsys postfix\
+ proxy syslog www-data mldonkey sys snort
+# SSH Completion
+zstyle ':completion:*:scp:*' tag-order \
+ files users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
+zstyle ':completion:*:scp:*' group-order \
+ files all-files users hosts-domain hosts-host hosts-ipaddr
+zstyle ':completion:*:ssh:*' tag-order \
+ users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *'
+zstyle ':completion:*:ssh:*' group-order \
+ hosts-domain hosts-host users hosts-ipaddr
+zstyle '*' single-ignored show
+
+# Define colors
+autoload colors zsh/terminfo
+if [[ "$terminfo[colors]" -ge 8 ]]; then
+ colors
+fi
+
+for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
+ eval PR_LIGHT_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
+ eval PR_$color='%{$fg[${(L)color}]%}'
+ (( count = $count + 1 ))
+done
+PR_NO_COLOR="%{$terminfo[sgr0]%}"
+
+
+# Allow fancy prompting (try adam2!)
+autoload promptinit
+promptinit
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
+ debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# Set prompt
+PROMPT="${debian_chroot:+($debian_chroot)}$PR_LIGHT_GREEN%n@%m$PR_NO_COLOR:$PR_LIGHT_BLUE%3(~.«.)%2~$PR_NO_COLOR%# "
+RPROMPT="[$PR_LIGHT_YELLOW%T$PR_NO_COLOR]"
+
+
+
+title_precmd () {
+ case $TERM in
+ screen)
+ print -Pn "\e]0;%n@%m: %~\a"
+ print -Pn "\ekzsh: %~\e\\"
+ ;;
+ xterm*|rxvt)
+ print -Pn "\e]0;%n@%m: %~\a"
+ ;;
+ esac
+}
+
+title_preexec () {
+ case $TERM in
+ screen)
+ print -Pn "\e]0;%n@%m: $1\a"
+ print -Pn "\ek$1\e\\"
+ ;;
+ xterm*|rxvt)
+ print -Pn "\e]0;%n@%m: $1\a"
+ ;;
+ esac
+}
+
+set -A precmd_functions precmd title_precmd
+set -A preexec_functions preexec title_preexec
+
+### OLD BASH STUFF FOLLOWING
+
+# Alias definitions.
+# You may want to put all your additions into a separate file like
+# ~/.bash_aliases, instead of adding them here directly.
+# See /usr/share/doc/bash-doc/examples in the bash-doc package.
+
+if [ -f ~/.bash_aliases ]; then
+ . ~/.bash_aliases
+fi
+
+# enable color support of ls and also add handy aliases
+if [ "$TERM" != "dumb" ] && [ -x /usr/bin/dircolors ]; then
+ eval "`dircolors -b`"
+ alias ls='ls --color=auto'
+ #alias dir='ls --color=auto --format=vertical'
+ #alias vdir='ls --color=auto --format=long'
+
+ alias grep='grep --color=auto'
+ alias fgrep='fgrep --color=auto'
+ alias egrep='egrep --color=auto'
+ alias diff='colordiff'
+fi
+
+# some more ls aliases
+#alias ll='ls -l'
+#alias la='ls -A'
+#alias l='ls -CF'
+
+# wcd
+function wcd {
+ /usr/local/bin/wcd.exe -i -K -G $HOME $*
+ . $HOME/wcd.go
+ rm $HOME/wcd.go
+}
+
+
+if [ -f $HOME/.motd ]; then
+ cat $HOME/.motd
+fi
+
+export PATH=/opt/mbirth:$PATH
+
+cowsay -fmoose -W80 "`fortune -a . off de`"
diff --git a/know-how/software/linux/_posts/2008-09-01-sudo-insults.md b/know-how/software/linux/_posts/2008-09-01-sudo-insults.md
new file mode 100644
index 0000000..49d96fc
--- /dev/null
+++ b/know-how/software/linux/_posts/2008-09-01-sudo-insults.md
@@ -0,0 +1,30 @@
+---
+title: sudo insults on wrong password
+layout: default
+created: 2008-09-01 09:50:13 +0200
+updated: 2008-09-01 09:50:13 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - fun
+---
+Edit the file `/etc/sudoers` and find the line:
+
+ Defaults env_reset
+
+Now add `,insults` to the end of the line so that it reads like that:
+
+ Defaults env_reset,insults
+
+
+From now on, *sudo* will insult anyone who mistypes his password. See for yourself:
+
+> [sudo] password for foo:
+> *Hold it up to the light --- not a brain in sight!*
+> [sudo] password for foo:
+> *Speak English you fool --- there are no subtitles in this scene.*
+> [sudo] password for foo:
+> *I think … err … I think … I think I'll go home*
+> sudo: 3 incorrect password attempts
diff --git a/know-how/software/linux/_posts/2008-12-05-gnome-screensaver-settings.md b/know-how/software/linux/_posts/2008-12-05-gnome-screensaver-settings.md
new file mode 100644
index 0000000..c5f2e90
--- /dev/null
+++ b/know-how/software/linux/_posts/2008-12-05-gnome-screensaver-settings.md
@@ -0,0 +1,13 @@
+---
+title: GNOME Screensaver Settings
+layout: default
+created: 2008-12-05 23:14:26 +0100
+updated: 2008-12-05 23:14:26 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - settings
+---
+The ***Configure*** button is definitely missing in `gnome-screensaver`. To customize the xscreensaver-modules, you can use [xFX Screensaver Settings](http://software.xfx.net/utilities/sss/).
diff --git a/know-how/software/linux/_posts/2009-01-11-compiling-php-gtk.md b/know-how/software/linux/_posts/2009-01-11-compiling-php-gtk.md
index c371bb2..cae59d7 100644
--- a/know-how/software/linux/_posts/2009-01-11-compiling-php-gtk.md
+++ b/know-how/software/linux/_posts/2009-01-11-compiling-php-gtk.md
@@ -28,8 +28,8 @@ Zend Extension Api No: 220060519
rebuilding aclocal.m4
rebuilding configure
configure.in:77: warning: LTOPTIONS_VERSION is m4_require'd but not m4_defun'd
-aclocal.m4:2912: LT_INIT is expanded from...
-aclocal.m4:2947: AC_PROG_LIBTOOL is expanded from...
+aclocal.m4:2912: LT_INIT is expanded from…
+aclocal.m4:2947: AC_PROG_LIBTOOL is expanded from…
configure.in:77: the top level
configure.in:77: warning: LTSUGAR_VERSION is m4_require'd but not m4_defun'd
configure.in:77: warning: LTVERSION_VERSION is m4_require'd but not m4_defun'd
diff --git a/know-how/software/linux/_posts/2009-02-10-why-linux.md b/know-how/software/linux/_posts/2009-02-10-why-linux.md
new file mode 100644
index 0000000..757cdbe
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-02-10-why-linux.md
@@ -0,0 +1,15 @@
+---
+title: Why Linux?
+layout: default
+created: 2008-08-27 00:44:54 +0200
+updated: 2009-02-10 17:27:37 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+
+I use Linux because it's like owning a chainsaw compared to owning a pen knife. Not always necessary, but so much more fun.
+
+--- [arjayes](http://ubuntuforums.org/member.php?u=387872) of UbuntuForums
diff --git a/know-how/software/linux/_posts/2009-02-20-prompt-with-2-dirs.md b/know-how/software/linux/_posts/2009-02-20-prompt-with-2-dirs.md
new file mode 100644
index 0000000..812368c
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-02-20-prompt-with-2-dirs.md
@@ -0,0 +1,48 @@
+---
+title: Prompt with 2 directories
+layout: default
+created: 2008-08-05 17:48:29 +0200
+updated: 2009-02-20 00:32:43 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - shell
+---
+bash
+====
+
+To only show the last 2 directories in prompt, there are two scripts at the [Muffin Research Labs](http://muffinresearch.co.uk/archives/2007/09/25/showing-last-two-directories-of-pwd-in-bash-prompt/).
+The best one would be this:
+
+{% highlight bash %}
+function PWD {
+ tmp=${PWD%/*/*};
+ [ ${#tmp} -gt 0 -a "$tmp" != "$PWD" ] && echo \<${PWD:${#tmp}+1} || echo $PWD;
+}
+{% endhighlight %}
+
+Add this to `.bash_profile` and replace `\w` by `$(PWD)` (note the parents!) in your `PS1` line in that file.
+
+A more comfort version which replaces the home directory by a tilde, is the following. I changed the function name to
+`PWD2` to highlight the difference to the normal `PWD` variable.
+
+{% highlight bash %}
+function PWD2 {
+ xpwd=${PWD/$HOME/"~"};
+ tmp=${xpwd%/*/*};
+ [ ${#tmp} -gt 0 -a "$tmp" != "$xpwd" ] && echo «${xpwd:${#tmp}+1} || echo $xpwd;
+}
+{% endhighlight %}
+
+
+zsh
+===
+
+The zsh has this feature built-in. Use this to show only 2 parts of the PWD:
+
+ %3(~.«.)%2~
+
+This says: If `%~` (the prompt incl. replacements such as `~` for homedir) has 3 or more parts, show `«`.
+After that show 2 parts of `%~`.
diff --git a/know-how/software/linux/_posts/2009-02-22-festival.md b/know-how/software/linux/_posts/2009-02-22-festival.md
new file mode 100644
index 0000000..8bcc717
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-02-22-festival.md
@@ -0,0 +1,52 @@
+---
+title: festival Text-To-Speech
+layout: default
+created: 2009-02-22 00:53:11 +0100
+updated: 2009-02-22 00:54:41 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - sound
+---
+Simultaneous playback
+=====================
+
+The `festival` text-to-speech synthesizer seems to use normal ALSA playback instead of PulseAudio. This leads to it
+failing when there's already something playing. E.g. if you're listening to music with *Rhythmbox*, *festival* fails
+with this message:
+
+ Linux: can't open /dev/dsp
+
+To make it use PulseAudio, we can re-route the audio through the `pacat` utility as proposed on [this bugreport](https://bugzilla.redhat.com/show_bug.cgi?id=467531).
+Just add these few lines to your `/usr/share/festival/init.scm`:
+
+~~~
+(Parameter.set 'Audio_Command "pacat --channels=1 --rate=$SR $FILE")
+(Parameter.set 'Audio_Method 'Audio_Command)
+(Parameter.set 'Audio_Required_Format 'raw)
+~~~
+
+**Note:** I had to use `raw` as the required format since the `snd` from the bugreport gave me loud noise instead of
+speech. `raw` works fine.
+
+
+Announcing system errors
+========================
+
+On [fedorabook.com](http://dailypackage.fedorabook.com/index.php?/archives/42-Productive-Monday-Festival-Speech) I
+found this little script which will read every new line from `/var/log/messages`:
+
+{% highlight bash %}
+#!/bin/bash
+tail -0f /var/log/messages | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
+#tail -0f /var/log/syslog | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
+#tail -0f /var/log/auth.log | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
+#tail -0f /var/log/user.log | sed "s/^[^:]*:[^:]*:[^:]*: //" | while read LINE
+do
+ echo $LINE
+ echo $LINE | festival --tts
+ sleep 0.75
+done
+{% endhighlight %}
diff --git a/know-how/software/linux/_posts/2009-02-22-wcd.md b/know-how/software/linux/_posts/2009-02-22-wcd.md
new file mode 100644
index 0000000..a976900
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-02-22-wcd.md
@@ -0,0 +1,40 @@
+---
+title: Wherever Change Directory
+layout: default
+created: 2009-02-22 13:40:40 +0100
+updated: 2009-02-22 13:46:25 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - tools
+---
+[wcd](http://www.xs4all.nl/~waterlan/) is a tool which catalogs all directories of your $HOME (can be configured to
+catalog the whole drive) and then lets you type `wcd Desktop` and switches over to your `~/Desktop` from wherever you
+are. Or you can type `wcd "Rammstein*"` and it will show you a list of your Rammstein-albums of your `~/Music`-directory
+and jump to your choice.
+
+The Ubuntu-Package is very outdated, so you better download the file from the homepage. Unpack it in `/usr/local`:
+
+ /usr/local% sudo tar xvzf wcd-4.1.0-linux.tar.gz
+
+This will put a `wcd.exe` to your `/usr/local/bin` which is the main executable. But *wcd* doesn't work by directly
+calling it, you have to add a function to your shell. But the following code into your `.bash_profile` or `.zshrc`:
+
+{% highlight bash %}
+# wcd
+function wcd {
+ /usr/local/bin/wcd.exe -i -K -G $HOME $*
+ . $HOME/wcd.go
+ rm $HOME/wcd.go
+}
+{% endhighlight %}
+
+This advises *wcd* to put the `cd`-command into a file `~/wcd.go` which is afterwards sourced by your shell to actually
+complete the `cd`. You can also type `wcd -g` to start the graphical `cd`. The switches `-i -K` make *wcd* ignore cases
+and put it in color-mode (for the `-g` UI).
+
+
+Before using it the first time, you might have to issue a `wcd -s` which will scan your $HOME.
+
diff --git a/know-how/software/linux/_posts/2009-03-31-boot-colours.md b/know-how/software/linux/_posts/2009-03-31-boot-colours.md
index 694b216..828f99b 100644
--- a/know-how/software/linux/_posts/2009-03-31-boot-colours.md
+++ b/know-how/software/linux/_posts/2009-03-31-boot-colours.md
@@ -18,7 +18,7 @@ in `/etc/lsb-base-logging.sh`.
To add colours, in that `init-functions` file find the function *log_use_fancy_output()* and below the `fi` add the lines
{% highlight bash %}
-...
+…
else
FANCYTTY=0
fi
@@ -39,13 +39,13 @@ fi
# END --- colour definition
case "$FANCYTTY" in
1|Y|yes|true) true;;
- ...
+ …
{% endhighlight %}
After that, edit the `lsb-base-logging.sh` and change e.g. the output of *log_end_msg()*:
{% highlight bash %}
- ...
+ …
if [ "$COL" ] && [ -x "$TPUT" ]; then
printf "\r"
$TPUT hpa $COL
@@ -55,7 +55,7 @@ After that, edit the `lsb-base-logging.sh` and change e.g. the output of *log_en
echo "${BOLD}${BLUE}[${RED}fail${BLUE}]${NORMAL}"
fi
else
- ...
+ …
{% endhighlight %}
Your next boot will look like this:
diff --git a/know-how/software/linux/_posts/2009-04-10-mail-notification.md b/know-how/software/linux/_posts/2009-04-10-mail-notification.md
new file mode 100644
index 0000000..df23b28
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-04-10-mail-notification.md
@@ -0,0 +1,19 @@
+---
+title: mail-notification
+layout: default
+created: 2009-04-10 23:34:36 +0200
+updated: 2009-04-10 23:34:36 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+Keyring error
+=============
+
+If you get the following error message:
+
+> The password of IMAP/POP3 mailbox xxxxx could not be saved to the keyring.
+
+Check whether `gnome-keyring-daemon` runs. If not, just run it once and the `mail-notification` should work again.
diff --git a/know-how/software/linux/_posts/2009-05-05-enable-usb-sharing.md b/know-how/software/linux/_posts/2009-05-05-enable-usb-sharing.md
new file mode 100644
index 0000000..26d4524
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-05-05-enable-usb-sharing.md
@@ -0,0 +1,51 @@
+---
+title: Enable USB Sharing
+layout: default
+created: 2008-09-03 23:08:39 +0200
+updated: 2009-05-05 12:25:03 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+To use USB devices under e.g. [VirtualBox](http://virtualbox.org/) in *Hardy*, edit the file
+`/etc/init.d/mountdevsubfs.sh` and find the line:
+
+ # Magic to make /proc/bus/usb work
+
+Remove the following four comments so that it looks like this:
+
+{% highlight bash %}
+#
+# Magic to make /proc/bus/usb work
+#
+mkdir -p /dev/bus/usb/.usbfs
+domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
+ln -s .usbfs/devices /dev/bus/usb/devices
+mount --rbind /dev/bus/usb /proc/bus/usb
+{% endhighlight %}
+
+Also add the following line to your `/etc/fstab` (*129* is the group-ID of *vboxusers*)[^1]:
+
+ none /proc/bus/usb usbfs devgid=129,devmode=0666 0 0
+
+Now enable the new settings by doing:
+
+ sudo /etc/init.d/mountdevsubfs.sh stop
+ sudo /etc/init.d/mountdevsubfs.sh start
+
+Finally, edit the file `/etc/udev/rules.d/40-basic-permissions.rules` and find the line containing the `usb_device`
+subsystem. Extend the permissions to `0666` like this:
+
+ SUBSYSTEM="usb_device", MODE="0666"
+
+Save the file and you should be able to use USB devices inside VirtualBox guest systems.
+
+According to [Ubuntu Unleashed](http://www.ubuntu-unleashed.com/2008/04/howto-install-virtualbox-in-hardy-heron.html),
+you might have to add 2 lines to the `/etc/init.d/mountkernfs.sh` for the *usbfs* to get mounted automatically upon boot.
+
+I'm also not sure about the permissions. It might work also using `0664` or even `0644`.
+
+
+[^1]: see [Stone.log](http://yoten.blogspot.com/2007/06/virtualbox-usb-error.html)
diff --git a/know-how/software/linux/_posts/2009-07-17-filesystems.md b/know-how/software/linux/_posts/2009-07-17-filesystems.md
new file mode 100644
index 0000000..5f977f0
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-17-filesystems.md
@@ -0,0 +1,99 @@
+---
+title: Filesystems
+layout: default
+created: 2009-01-08 22:33:36 +0100
+updated: 2009-07-17 23:04:03 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - filesystems
+---
+Creating
+========
+
+ext3
+----
+
+ mkfs.ext3 /dev/sdb1 -L my_external
+
+You might want to enable additional features using `tune2fs`.
+
+ tune2fs -O +feature /dev/sdb1
+
+**`feature`** may be one of the following:
+
+|feature | Description |
+|:------------:|:-----------------------------------------------------------------------------|
+|`large_file` |If you have files > 2GiB, this flag should be automatically set by the kernel.|
+|`dir_index` |Uses hashed b-trees to speed up lookups in large directories. |
+|`sparse_super`|Limits the number of backup superblocks to save space on large filesystems. |
+
+There are some more, but these are the most interesting. On external drives you might want to set the reserved space
+for the root-user to 0% instead of the default 5%:
+
+ tune2fs -m 0 /dev/sdb1
+
+You can show all information about the superblock using:
+
+ tune2fs -l /dev/sdb1
+
+
+Renaming
+========
+
+To rename a partition (e.g. an USB drive), there are different tools for different filesystems.
+There's a nice overview at [ubuntu.com](https://help.ubuntu.com/community/RenameUSBDrive).
+
+ext2 / ext3
+-----------
+
+You need the package [e2fsprogs](apt://e2fsprogs).
+
+ sudo e2label /dev/sdb1
+ sudo e2label /dev/sdb1 my_external
+
+
+FAT16 / FAT32
+-------------
+
+You need the package [mtools](apt://mtools).
+
+ sudo mlabel -i /dev/sdb1 -s ::
+ sudo mlabel -i /dev/sdb1 ::my_external
+
+
+JFS
+---
+
+You need the package [jfsutils](apt://jfsutils).
+
+ sudo jfs_tune /dev/sdb1
+ sudo jfs_tune -L my_external /dev/sdb1
+
+
+NTFS
+----
+
+You need the package [ntfsprogs](apt://ntfsprogs).
+
+ sudo ntfslabel /dev/sdb1
+ sudo ntfslabel /dev/sdb1 my_external
+
+
+ReiserFS (v3)
+-------------
+
+You need the package [reiserfsprogs](apt://reiserfsprogs).
+
+ sudo reiserfstune -l my_external /dev/sdb1
+
+
+XFS
+---
+
+You need the package [xfsprogs](apt://xfsprogs).
+
+ xfs_admin -l /dev/sdb1
+ xfs_admin -l my_external /dev/sdb1
diff --git a/know-how/software/linux/_posts/2009-07-17-umts-via-bluetooth.md b/know-how/software/linux/_posts/2009-07-17-umts-via-bluetooth.md
new file mode 100644
index 0000000..b3309f0
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-17-umts-via-bluetooth.md
@@ -0,0 +1,52 @@
+---
+title: UMTS via Bluetooth
+layout: default
+created: 2008-10-07 21:53:51 +0200
+updated: 2009-07-17 23:09:25 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - umts
+ - bluetooth
+---
+To use UMTS Internet via a bluetooth mobile phone, install the packages [gnome-ppp](apt://gnome-ppp) and [ppp](apt://ppp).
+
+There's a nice manual at [UbuntuUsers](http://wiki.ubuntuusers.de/Bluetooth/Mobile).
+
+1. use `hcitool scan` to find the MAC of your mobile
+1. use `sdptool search DUN` to find the dial-up networking details of your mobile, note the line `Channel: 7`
+1. edit the file `/etc/bluetooth/rfcomm.conf` and uncomment the section and make the changes according to your details:
+
+ rfcomm0 {
+ # Automatically bind the device at startup
+ bind yes;
+
+ # Bluetooth address of the device
+ device 11:22:33:44:55:66;
+
+ # RFCOMM channel for the connection
+ channel 7;
+
+ # Description of the connection
+ comment "SonyEricsson P1i";
+ }
+
+1. launch *Gnome-PPP*
+1. click *Setup* and change the settings:
+ * **Modem** Tab
+ * *Device:* /dev/rfcomm0
+ * *Type:* USB-Modem
+ * *Speed:* 460800
+ * [X] *Wait for dialtone*
+ * **Init Strings**
+ * *Init 2:* `ATE1` (ATZ is sent automatically by Gnome-PPP)
+ * **Network** Tab
+ * Leave everything as it is
+ * **Options** Tab
+ * [X] *Ignore terminal strings (stupid mode)*
+1. enter following details for dialup:
+ * **Username:** t-mobile
+ * **Password:** tm
+ * **Phone number:** *99#
diff --git a/know-how/software/linux/_posts/2009-07-17-wifi-guessnet.md b/know-how/software/linux/_posts/2009-07-17-wifi-guessnet.md
new file mode 100644
index 0000000..9c3c4ae
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-17-wifi-guessnet.md
@@ -0,0 +1,50 @@
+---
+title: WiFi on bootup with guessnet
+layout: default
+created: 2008-11-15 18:32:48 +0100
+updated: 2009-07-17 23:10:31 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - networking
+ - wifi
+---
+Install the [guessnet](apt://guessnet) package. This will install the `guessnet-ifupdown` helper tool.
+
+Now edit your `/etc/network/interfaces` file and add the following lines:
+
+~~~
+auto wlan0
+iface wlan0 inet dhcp
+ wpa-ssid CompanyWLAN
+ wpa-proto WPA
+ wpa-key-mgmt WPA-PSK
+ wpa-psk S3Cr3tKe4
+
+mapping wlan0
+ script guessnet-ifupdown
+ map default: wlan0-open
+ map autofilter: true # look for wlan0- interfaces
+ map timeout: 9
+ map init-time: 9 # for slow drivers
+ map verbose: true
+ map debug: false
+
+iface wlan0-home inet dhcp
+ test wireless essid WLANatHOME closed
+ wpa-psk S3cr3tH0meKe4
+ wpa-key-mgmt WPA-PSK
+ wpa-proto WPA
+ wpa-ssid WLANatHOME
+
+# if all else fails: pick an open network
+iface wlan0-open inet dhcp
+ test wireless open
+ wireless-essid any
+ wireless-mode auto
+~~~
+
+This will first try to connect to the **CompanyWLAN** network and if this is not found, try the **WLANatHOME**. If
+everything fails, it will connect to any open Access Point.
diff --git a/know-how/software/linux/_posts/2009-07-17-zsh.md b/know-how/software/linux/_posts/2009-07-17-zsh.md
new file mode 100644
index 0000000..43ecd58
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-17-zsh.md
@@ -0,0 +1,50 @@
+---
+title: zsh
+layout: default
+created: 2009-02-21 12:34:27 +0100
+updated: 2009-07-17 23:13:24 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+I recently switched to using the [zsh](http://zsh.sf.net/) instead of [bash](http://www.gnu.org/software/bash/).
+The reasons were those comfort functions of zsh, such as:
+
+* menu driven completion (you can navigate items using the cursor keys)
+* command correction (typing `mkae` gives a `Did you mean 'make'?`)
+* parameter completion (shows possible parameters for most commands **incl. a short description**)
+* path name guessing (typing `tail /v/l/dmesg` gets corrected into `tail /var/log/dmesg`)
+
+So I installed the packages: [zsh](apt://zsh), [zsh-doc](apt://zsh-doc) and [zsh-lovers](apt://zsh-lovers). When
+starting it for the first time, you'll encounter a configuration tool which asks several questions to make your zsh
+experience a good one.
+
+Bad thing is: This tool can't read the settings you made in a previous session, so be careful running it a second time.
+
+I found an easy way to make the prompt show only 2 parts of the PWD using some zsh-magic: [Prompt with 2 directories]({% post_url 2009-02-20-prompt-with-2-dirs %}).
+
+My full configuration file is here: [.zshrc]({{ site.url }}/assets/zshrc.txt).
+
+
+DEL-key not working
+===================
+
+Using the Del-key changed the 3 letters after the cursor to upper case and then made further editing of the
+current line impossible. I found a solution to this problem over at [gnegg.ch](http://www.gnegg.ch/2004/10/delete-key-in-zsh/):
+Just add the following bindings to the `.zshrc`:
+
+ bindkey "^[[3~" delete-char
+ bindkey "^[3;5~" delete-char
+
+
+Problems with mc
+================
+
+*zsh* seems to cause problems with the *Midnight Commander*. The *mc* can't detect the PWD using *zsh* as a sub-shell
+and therefore gives several "`Warning: Cannot change directory to …`" although the path **did** change. But this
+message moves the rest of the screen and makes *mc* almost unusable. You can use *mc* without a subshell by starting it
+with `mc -u` or just switch your login-shell back to *bash* (in your `/etc/passwd`) and change the link of your
+preferred console application to e.g. `gnome-terminal -e zsh` - in the latter case, *mc* will use your login-shell
+(*bash*) as a sub-shell and work as expected.
diff --git a/know-how/software/linux/_posts/2009-07-18-jabberd2.md b/know-how/software/linux/_posts/2009-07-18-jabberd2.md
new file mode 100644
index 0000000..ed58736
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-18-jabberd2.md
@@ -0,0 +1,58 @@
+---
+title: jabberd2
+layout: default
+created: 2009-07-18 01:08:21 +0200
+updated: 2009-07-18 12:01:50 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+The setup of [jabberd2](apt://jabberd2) is mostly straight-forward. Just install the package and all needed transports.
+The change the config files in `/etc/jabberd2` to your needs, esp. the name/jid of the admin.
+
+
+pyMSNt
+======
+
+Update
+------
+
+The most recent version is in a *Mercurial* repository at . There you can
+download the `trunk` revision and replace the files in `/usr/share/pymsnt` with the new ones. You might also need to
+add the new options from the `config-example.xml` to your `/etc/pymsnt.xml`. Afterwards restart the transport and you
+should be set.
+
+Timeout
+-------
+
+The MSN transport [pyMSNt](https://sharesource.org/hg/pymsnt/summary) is a bit picky.
+
+If you get error messages like:
+
+ Failed to connect to MSN servers: [Failure instance: Traceback (failure with no frames): : Timeout]
+
+In the config file, if you are behind a NAT router, specify **your internal LAN IP** for `` otherwise, it won't
+work. Always check this setting first before digging for other possible errors.
+
+
+PyYIMt
+======
+
+A Python Yahoo-Transport can be found at the [xmpppy](http://xmpppy.sf.net/). To install it, do the following:
+
+1. create a directory `/opt/pyyimt/src` and put the contents of the `yahoo-transport-0.4.tar.gz` in it. You'll also need
+ the `xmppy-0.5.0rc1.tar.gz` - put it into `/opt/pyyimt/src/xmpp`.
+1. now modify the `config.py` to look at another place for the config file. Change the 4th line like this:
+
+ configFiles = ['config.xml', '../pyyimt.conf.xml', '/etc/pyyimt.conf.xml']
+
+1. now copy the `config_example.xml` to `/opt/pyyimt/pyyimt.conf.xml` and modify it according to your needs.
+ Also set the following values:
+ * **spoolFile:** `../yahoouser.dbm`
+ * **pid:** `../pyyimt.pid`
+ * **debugFile:** `../yahooerror.log`
+1. make the whole directory `/opt/pyyimt` and all files and sub-dirs belong to the group *jabber* and writable for
+ that group.
+1. use this init.d-script: [pyyimt.txt]({{ site.url }}/assets/pyyimt.txt)
diff --git a/know-how/software/linux/_posts/2009-07-21-mixed-locales.md b/know-how/software/linux/_posts/2009-07-21-mixed-locales.md
new file mode 100644
index 0000000..ec30a86
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-21-mixed-locales.md
@@ -0,0 +1,67 @@
+---
+title: Mixed Locales
+layout: default
+created: 2009-04-08 21:06:12 +0200
+updated: 2009-07-21 11:04:50 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - i18n
+---
+I personally like English language operating systems. So I have set my Ubuntu to English language. But I still want
+German curency, decimals and time. With most applications, you can define the formats to use inside the application.
+But I stumbled at *Evolution* which lets you define 12/24-hour setting for the calendar, but doesn't use this setting
+for the mail list display.
+
+So I added the following lines to the file `/etc/environment` below the `LANG="en_US.UTF-8"`:
+
+{% highlight bash %}
+LC_NUMERIC="de_DE.UTF-8"
+LC_MONETARY="de_DE.UTF-8"
+LC_PAPER="de_DE.UTF-8"
+LC_MEASUREMENT="de_DE.UTF-8"
+{% endhighlight %}
+
+So the most formats where as I wanted them - despite the time. Yes, I could set `LC_TIME="de_DE.UTF-8"`, but this not
+only produces German formats but also German names for the months and weekdays. And this is something I didn't want:
+The whole application in English language but the months and weekdays in German, e.g. "Freitag 11:42".
+
+So there are now two possibilities:
+
+1. you compile your own locale definition, or
+1. you take a Hex editor and modify the existing one
+
+I decided to do the second.
+
+In `/usr/lib/locale` are all locale definitions. So I made a backup of the original `LC_TIME` below `en_US.utf8` and
+fired up *ghex2*.
+
+So in principle there are two strings of every format - one in ANSI encoding which is directly readable, and one in
+Unicode where there are 3x `00`-Bytes between the single characters. So in general I just replaced all `%r` (12hrs time)
+by `%R` (24hrs time) and removed the `%p` (AM/PM). I also changed the date format `%m/%d/%Y` to `%Y-%m-%d` to get the
+international format. As mentioned, I had to make these changes 2x times - once for the ANSI strings and once for the
+Unicode ones.
+
+To get the first day of the week correctly (Monday here in Europe), I first had to change the location `0x912` from
+`02` to `01` (which means: The first workday of the week is now *Sunday* (1st day) instead of *Monday* (2nd day)). So to
+finally get the European week, I also had to change location `0x90c` from decimal value `19971130` (a Sunday) to
+`19971201` (a Monday, new value in Hex: `81bc3001`). So now the first day of the week was a Monday (Dec. 1st, 1997) and
+thus the week and work-week were corrected.
+
+The *en_US* locale has the first 7-day-week as the first week of the year. In Europe, the first week with at least
+4 days is counted as the first week of the year (DIN 1355 / ISO 8601). So I changed location `0x910` from `07` to `04`.
+
+Finally, I still had *Evolution* showing AM/PM times. I fixed this by overwriting these strings with Null-Bytes
+(`00`h) - again, two times for each. This made *Evolution* show 24hrs times.
+
+
+Paper Format
+============
+
+The default paper format can be changed as described [here](http://www.arsgeek.com/2007/07/02/change-ubuntus-default-paper-size-from-a4-to-letter/):
+
+ sudo dpkg-reconfigure libpaper1
+
+Or you just change the file `/etc/papersize`.
diff --git a/know-how/software/linux/_posts/2009-07-23-dual-head.md b/know-how/software/linux/_posts/2009-07-23-dual-head.md
new file mode 100644
index 0000000..1e75ba4
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-23-dual-head.md
@@ -0,0 +1,91 @@
+---
+title: Dual-headed X11
+layout: default
+created: 2008-08-11 18:10:56 +0200
+updated: 2009-07-23 12:44:36 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - display
+ - x11
+---
+per user
+========
+
+The native screen-size detection doesn't work for dual-head installations. To let X11 handle both screens as one large
+display, find the section `Screen` in the `/etc/X11/xorg.conf` and add the following lines:
+
+~~~
+SubSection "Display"
+ Virtual 2560 1024
+EndSubSection
+~~~
+
+This is for two 1280x1024 displays side-by-side (1280+1280 = 2560). Now you can use `xrandr` to set displays.
+
+ xrandr -q
+
+Shows all available displays. Usually it will show the devices `VGA-0` and `LVDS`. To change the output of the external
+display to be left of the internal LCD panel, use something like
+
+ xrandr --output VGA-0 --left-of LVDS
+
+You might also have to use *System* → *Preferences* → *Screen Resolution* to configure the location of the displays.
+
+
+Fix screen order
+----------------
+
+Under *Intrepid*, it often happens to me that my screenorder is wrong after login. This is shown by a mirrored output on
+the left display, but the system thinks that there's a left workspace. On rare occassions, I even have the wrong order
+(i.e. if I move the mouse to the right on the right workspace, it appears on the left display's workspace.) This is
+quickly fixed by switching the order around:
+
+{% highlight bash %}
+#!/bin/sh
+echo Switching position of displays
+xrandr --output VGA-0 --right-of LVDS
+echo Switching off ext. display
+xrandr --output VGA-0 --off
+echo Switching back to normal
+xrandr --output VGA-0 --mode 1280x1024 --rate 75 --left-of LVDS
+{% endhighlight %}
+
+After calling the script, my displays are showing the correct workspaces.
+
+
+system-wide
+===========
+
+To configure dual-head system-wide (for Desktop computers), there is a great manual at [UbuntuForums](http://ph.ubuntuforums.com/showthread.php?t=826717).
+
+1. Use `xrandr -q` to get the output device's names (for me it was `VGA-0` and `DVI-0`)
+1. open the `/etc/X11/xorg.conf` in your favorite editor
+1. find the section `Device` and add 2 lines so that it looks like this:
+
+ Section "Device"
+ Identifier "Configured Video Device"
+ Option "monitor-VGA-0" "right"
+ Option "monitor-DVI-0" "left"
+ EndSection
+1. The device names have to be prefixed with `monitor-`. The names after that are for you to choose.
+1. find the `Monitor` section and change the identifier to one of the names. (e.g. `right`)
+1. add another `Monitor` section below and change the identifier to the other name. (`left`) Also add the
+ line `Option "LeftOf" "right"` in between.
+1. now the both monitor sections should look like this:
+
+ Section "Monitor"
+ Identifier "right"
+ EndSection
+
+ Section "Monitor"
+ Identifier "left"
+ Option "LeftOf" "right"
+ EndSection
+1. find the `Screen` section and add the following line to define the default display.
+
+ Monitor "right"
+1. add a `SubSection "Display"` and the `Virtual` line as with the per-user configuration
+1. save the file and restart X
diff --git a/know-how/software/linux/_posts/2009-07-23-synaptics-touchpad.md b/know-how/software/linux/_posts/2009-07-23-synaptics-touchpad.md
new file mode 100644
index 0000000..a983f81
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-07-23-synaptics-touchpad.md
@@ -0,0 +1,40 @@
+---
+title: Synaptics Touchpad
+layout: default
+created: 2009-02-28 01:36:04 +0100
+updated: 2009-07-23 12:45:13 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+To use features like *circular scrolling*[^1] of a Synaptics touchpad, you need to add the following lines to
+your `/etc/X11/xorg.conf`:
+
+~~~
+Section "InputDevice"
+ Identifier "Synaptics Touchpad"
+ Driver "synaptics"
+ Option "SHMConfig" "true"
+ Option "SendCoreEvents" "true"
+ Option "Device" "/dev/psaux"
+ Option "Protocol" "auto-dev"
+ Option "HorizEdgeScroll" "0"
+EndSection
+~~~
+
+You also need to add the following line into your `ServerLayout` section in that file:
+
+ InputDevice "Synaptics Touchpad"
+
+
+After an upgrade to Jaunty, these lines are commented out by the update-manager. Just uncomment them and everything
+should work again.
+
+
+Afterwards you can install the [gsynaptics](apt://gsynaptics) package to manage the settings for your touchpad - incl.
+enabling the circular scrolling.
+
+
+[^1]: It's like a jogdial: just draw a circle with your finger starting from top-center. Clockwise will scroll down, counter-clockwise will scroll up.
\ No newline at end of file
diff --git a/know-how/software/linux/_posts/2009-08-09-mpd.md b/know-how/software/linux/_posts/2009-08-09-mpd.md
new file mode 100644
index 0000000..4bd0491
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-08-09-mpd.md
@@ -0,0 +1,71 @@
+---
+title: Music Player Daemon
+layout: default
+created: 2009-02-21 23:39:43 +0100
+updated: 2009-08-09 00:31:02 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - audio
+ - music
+ - mpd
+---
+Instead of playing music through usual audio players, there is the possibility of using the *mpd* - a daemon which
+runs in the background and plays music.
+
+The great advantage is: You can choose between various interfaces and always control the same player with the same
+playlist(s) - even via TCP/IP from another PC or even a portable device.
+
+
+Installing the server
+=====================
+
+Install the package [mpd](apt://mpd). After that, edit the file `/etc/mpd.conf` and add the following lines, so that it
+uses the PulseAudio daemon instead of ALSA:
+
+~~~
+audio_output {
+ type "pulse"
+ name "My PulseAudio Device"
+}
+~~~
+
+This allows other sounds (e.g. from Gnome) to be played simultaneously.
+
+You can then symlink your personal music folder to `/var/lib/mpd/music` or - if you are the only user - replace that
+directory by the symlink directly.
+
+
+PulseAudio rights
+-----------------
+
+You might encounter the problem that MPD seems playing a song but you don't hear anything at all. This might be a
+problem with PulseAudio rights. Install the package [paprefs](apt://paprefs) and enable the *Enable Network Access*
+and *Don't require authentication*. If these options are grayed out, do this:
+
+* edit the file `/etc/pulse/default.pa`
+* find the line
+
+ #load-module module-native-protocol-tcp
+
+ and replace it by
+
+ load-module module-native-protocol-tcp auth-anonymous=1
+* do a `killall pulseaudio`
+* restart `mpd`
+
+
+Installing a client
+===================
+
+I found [pympd](http://pympd.sf.net/), [Ario](http://ario-player.sf.net/) and [Sonata](http://sonata.berlios.de/) really
+usable (pympd looks a bit like *Rhythmbox*) and for the console: [ncmpc](http://hem.bredband.net/kaw/ncmpc/). For the
+latter, you could add an alias: `ncmpc=ncmpc -c -m` to always start it in color-mode and with mouse support.
+
+
+iPhone
+------
+
+Take a look at [MPoD](http://www.katoemba.net/makesnosenseatall/mpod/).
diff --git a/know-how/software/linux/_posts/2009-08-11-incron.md b/know-how/software/linux/_posts/2009-08-11-incron.md
new file mode 100644
index 0000000..dd28733
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-08-11-incron.md
@@ -0,0 +1,12 @@
+---
+title: incron - Jobs by file activity
+layout: default
+created: 2008-11-12 15:58:48 +0100
+updated: 2009-08-11 15:33:44 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+[incron](apt://incron) allows you to run jobs when the filesystem changes. There is a nice tutorial at [Linux.com](http://www.linux.com/feature/144666).
diff --git a/know-how/software/linux/_posts/2009-08-13-unmounting.md b/know-how/software/linux/_posts/2009-08-13-unmounting.md
new file mode 100644
index 0000000..22a414a
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-08-13-unmounting.md
@@ -0,0 +1,68 @@
+---
+title: Unmounting
+layout: default
+created: 2009-01-24 23:09:03 +0100
+updated: 2009-08-13 12:48:35 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+sudo
+====
+
+Using `sudo umount` you can unmount ANYTHING but need `sudo` access.
+
+
+fusermount
+==========
+
+Using `fusermount -u` you can unmount all FUSE mounts.
+
+
+pumount
+=======
+
+Using `pumount` you can unmount all mounts below `/media` which don't appear in `/etc/fstab`.
+
+
+Shutdown/Reboot hangs
+=====================
+
+If there are mounted *cifs* shares, you might encounter a *"CIFS VFS: no response for cmd 50…"* on shutdown or reboot
+which may take about half a minute before the machine actually shuts down (or reboots). This is caused by the network
+being shut down before the shares were umounted.
+
+The thing is, in Jaunty there already is a script to umount network shares before the network is shut down, but it has
+the wrong start-type of `S` = start. If you look at the script itself, you'll find this:
+
+{% highlight bash %}
+case "$1" in
+ start)
+ # No-op
+ ;;
+ restart|reload|force-reload)
+ echo "Error: argument '$1' not supported" >&2
+ exit 3
+ ;;
+ stop|"")
+ do_stop
+ ;;
+ *)
+ echo "Usage: umountnfs.sh [start|stop]" >&2
+ exit 3
+ ;;
+esac
+{% endhighlight %}
+
+So if called with the argument `start`, it will do nothing. It has to be called with `stop`.
+
+To fix this (in Jaunty):
+
+* go to `/etc/rc0.d/`
+* find the link `S31umountnfs.sh` (type: S = start)
+* do a `sudo mv S31umountnfs.sh K31umountnfs.sh` (type: K = kill/stop)
+* now go to `/etc/rc6.d/` and do the same to the link there
+
+You may find some more info on [this blog](http://whereofwecannotspeak.wordpress.com/2007/12/25/unmount-samba-filesystems-before-shutdown-or-reboot/).
diff --git a/know-how/software/linux/_posts/2009-08-24-gajim-notifyosd.md b/know-how/software/linux/_posts/2009-08-24-gajim-notifyosd.md
new file mode 100644
index 0000000..d0f636f
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-08-24-gajim-notifyosd.md
@@ -0,0 +1,16 @@
+---
+title: Gajim and Notify-OSD
+layout: default
+created: 2009-08-24 18:25:41 +0200
+updated: 2009-08-24 18:25:41 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+[gajim](apt://gajim) doesn't support the new (since Jaunty) `libnotify-osd` library of Ubuntu and instead shows a
+dialog box.
+
+There's a patch available at [archlinux.org](http://aur.archlinux.org/packages/gajim-notify-osd/gajim-notify-osd/osd.patch)
+which enables support for `libnotify-osd`.
diff --git a/know-how/software/linux/_posts/2009-08-24-swapfile.md b/know-how/software/linux/_posts/2009-08-24-swapfile.md
new file mode 100644
index 0000000..1617007
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-08-24-swapfile.md
@@ -0,0 +1,28 @@
+---
+title: Swapfile instead of partition
+layout: default
+created: 2009-08-24 22:13:58 +0200
+updated: 2009-08-24 22:13:58 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+If you don't want to create a designated swap partition (e.g. if you plan to downsize it later) and don't want to play
+around with *GPartEd*, you can create a swap**file** instead.
+
+To create a 512 MiB swapfile, do the following:
+
+ dd if=/dev/zero of=/swapfile bs=1024K count=512
+ mkswap /swapfile
+ swapon /swapfile
+
+To automatically add the swapfile upon boot, add this line to the `/etc/fstab`:
+
+ /swapfile swap swap defaults 0 0
+
+
+You can later easily change the size of the swapfile by re-creating a smaller or larger one.
+
+You only have to make sure the file is contiguous or `swapon` might give an error.
diff --git a/know-how/software/linux/_posts/2009-08-26-make-color.md b/know-how/software/linux/_posts/2009-08-26-make-color.md
new file mode 100644
index 0000000..9a7a9e4
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-08-26-make-color.md
@@ -0,0 +1,20 @@
+---
+title: Colourful make and gcc
+layout: default
+created: 2009-08-26 09:46:36 +0200
+updated: 2009-08-26 09:46:36 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+Install the packages [colormake](apt://colormake) and [colorgcc](apt://colorgcc). Then create the following alias:
+
+ alias make="colormake"
+
+Also add this environment variable:
+
+ export CC="colorgcc"
+
+And you should be set.
diff --git a/know-how/software/linux/_posts/2009-12-05-rip-cd-track.md b/know-how/software/linux/_posts/2009-12-05-rip-cd-track.md
new file mode 100644
index 0000000..83c7318
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-12-05-rip-cd-track.md
@@ -0,0 +1,25 @@
+---
+title: Rip CD Track
+layout: default
+created: 2009-02-16 22:24:06 +0100
+updated: 2009-12-05 00:46:23 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+The default tool for CD ripping under Gnome is *Sound Juicer*, found under *Applications* → *Sound & Video* →
+*Audio CD Extractor*. But this tool had severe problems recognizing my custom configuration for LAME encoding (I
+changed `vbr-quality` from `6` to `2` but the tool ignored it) also you had to restart it for every configuration
+change which means you have to re-enter all CD information.
+
+So I tried [abcde](http://code.google.com/p/abcde/).
+
+After installing the package [abcde](apt://abcde) and some other utilities (`id3`, `id3v2`, `flac`, `oggconvert`,
+etc.), I copied the file `/etc/abcde.conf` to `~/.abcde.conf` and modified it according to [Andrew Strong's examples](http://www.andrews-corner.org/abcde.html)
+and my own preference.
+
+Now ripping a CD is as simple as typing `abcde` at the prompt.
+
+* **Download my config:** [abcde.conf]({{ site.url }}/assets/abcde.conf)
diff --git a/know-how/software/linux/_posts/2009-12-10-pc-speaker-in-linux.md b/know-how/software/linux/_posts/2009-12-10-pc-speaker-in-linux.md
new file mode 100644
index 0000000..28963b0
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-12-10-pc-speaker-in-linux.md
@@ -0,0 +1,28 @@
+---
+title: PC Speaker in Linux
+layout: default
+created: 2009-12-10 19:17:02 +0100
+updated: 2009-12-10 19:17:02 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - sound
+---
+Enable in Ubuntu
+================
+
+If you want some scripts to emit beeps, e.g. because you don't always have your headphones on, you first have to enable
+the `pcspkr` module. This is per default disabled in Ubuntu. To enable it again, do the following:
+
+1. open `/etc/modprobe.d/blacklist.conf` in your favorite editor (using `sudo`)
+1. find these lines:
+
+ # ugly and loud noise, getting on everyone's nerves; this should be done by a
+ # nice pulseaudio bing (Ubuntu: #77010)
+ blacklist pcspkr
+1. comment out the last line
+1. finally, do a `sudo modprobe pcspkr`
+
+After that, you can play around with the [beep](apt://beep) program.
diff --git a/know-how/software/linux/_posts/2009-12-31-lightscribe-in-linux.md b/know-how/software/linux/_posts/2009-12-31-lightscribe-in-linux.md
new file mode 100644
index 0000000..eb368ff
--- /dev/null
+++ b/know-how/software/linux/_posts/2009-12-31-lightscribe-in-linux.md
@@ -0,0 +1,110 @@
+---
+title: LightScribe in Linux
+layout: default
+created: 2008-12-06 12:31:38 +0100
+updated: 2009-12-31 10:58:11 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - lightscribe
+---
+To burn/print lightscribe media under Linux, you need two things:
+
+* the [LightScribe System Software](http://www.lightscribe.com/downloadSection/linux/index.aspx)
+* a labelling program, such as [LightScribe Simple Labeler](http://www.lightscribe.com/downloadSection/linux/index.aspx?id=815)
+ or [4L LaCie LightScribe Labeler](http://www.lacie.com/products/product.htm?pid=10803)
+
+
+Installing 4L
+=============
+
+1. install the lightscribe library: `gksu gdebi-gtk lightscribe-1.14.32.1-linux-2.6-intel.deb`
+1. convert the RPM to DEB (you need the packages *fakeroot* and *alien* to be installed!):
+ `fakeroot alien --fixperms -c -k 4L-1.0-r6.i586.rpm`
+1. **on 64-bit systesm** the previous step will abort with an error, if this is the case:
+ * enter the `4L-1.0` directory
+ * rename `debian` to `DEBIAN`
+ * enter the `DEBIAN` directory
+ * delete the directory `4L`
+ * edit the file `control`
+ * remove the blank line between the `Maintainer:` and `Package:` lines
+ * change the `Depends:` into `Depends: lightscribe`
+ * add a line `Version: 1.0-r6`
+ * now go back to the directory containing the `4L-1.0` directory
+ * run `dpkg --build --force-architecture 4L-1.0`
+1. install the newly generated DEB file: `gksu gdebi-gtk 4l_1.0-r6_i386.deb` (on 64-bit systems use
+ `dpkg -i --force-architecture 4L-1.0.deb`)
+1. create a menu shortcut to `/usr/bin/4L-gui` using the *System* → *Preferences* → *Main Menu* tool (as an icon I used
+ the LightScribe-logo from [WikiPedia](http://de.wikipedia.org/wiki/Bild:LightScribe-Logo.svg))
+
+
+No drive detected
+-----------------
+
+If *4L-gui* doesn't detect any drive, try running it from a console window. If you see the following error message:
+
+ user@host:/usr/lib% 4L-gui
+ 4L-cli: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
+
+The described library is missing (as with *Karmic Koala*). Either try finding it in `aptitude` or do the following:
+
+1. create a file `/etc/ld.so.conf/lightscribeApplications.conf` with the following contents:
+ `/opt/lightscribeApplications/common/Qt`
+1. run `sudo ldconfig`
+
+This will index the libraries in the given folder - where there is the `libstdc++.so.5` found. If this breaks other
+programs for you, use this command:
+
+ sudo LD_LIBRARY_PATH=/opt/lightscribeApplications/common/Qt /usr/bin/4L-gui
+
+
+root privileges required
+------------------------
+
+If you get the error ***Printing requires root privileges*** first check whether you called it with `gksu` or `sudo`
+and if yes, check, whether the files `/usr/4L/4L-gui` and `/usr/4L/4L-cli` have any *setuid*-bits set. If so, remove
+them.
+
+Or do it the other way around and make sure, the *setuid* mode is set and make `root` the owner.
+
+
+Installing Simple Labeler
+=========================
+
+1. install the lightscribe library: `gksu gdebi-gtk lightscribe-1.14.32.1-linux-2.6-intel.deb`
+1. install the simple labeler: `gksu gdebi-gtk lightscribeApplications-1.10.19.1-linux-2.6-intel.deb`
+1. **on 64-bit systems** you have to link the `liblightscribe.so` and `liblightscribe.so.1` into the `/usr/lib32`
+ directory (moving might also work):
+
+ ln -s /usr/lib/liblightscribe.so /usr/lib32/liblightscribe.so
+ ln -s /usr/lib/liblightscribe.so.1 /usr/lib32/liblightscribe.so.1
+1. create a menu shortcut to `/opt/lightscribeApplication/SimpleLabeler/SimpleLabeler` using the *System* →
+ *Preferences* → *Main Menu* tool (as an icon I used the LightScribe-logo from [WikiPedia](http://de.wikipedia.org/wiki/Bild:LightScribe-Logo.svg))
+
+
+Enabling enhanced Contrast
+==========================
+
+To make burned labels appear darker, you can activate the *enhanced contrast* feature which is present in the library
+since version 1.8.15.1. The procedure is described at the [PSE site](http://www.lightscribe.com/downloadSection/pse/).
+
+Darker contrast needs more time to burn!
+
+To enable this feature, run the following command from a command-line:
+
+ sudo /usr/lib/lightscribe/elcu.sh
+
+You will see something like this:
+
+~~~
+Current contrast setting: Default
+
+MODIFY CONTRAST SETTINGS:
+1 This will make your labels darker, but you will experience a longer label time
+2 This will reset your LightScribe contrast to default factory settings
+Select new setting: _
+~~~
+
+Type 1 and confirm with ENTER.
diff --git a/know-how/software/linux/_posts/2010-01-01-wallpaper-changer.md b/know-how/software/linux/_posts/2010-01-01-wallpaper-changer.md
new file mode 100644
index 0000000..74fc47f
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-01-01-wallpaper-changer.md
@@ -0,0 +1,39 @@
+---
+title: Wallpaper Changer
+layout: default
+created: 2010-01-01 23:35:53 +0100
+updated: 2010-01-01 23:36:05 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+Desktop Drapes
+==============
+
+* **Homepage:**
+* **Launchpad-Site:** [drapes](https://launchpad.net/drapes)
+* **Package:** [drapes](apt://drapes)
+
+Has some problems under *Karmic Koala* (e.g. the thumbnails are not shown, crashes if you delete a selected image).
+The list of enabled images is kept in `~/.gnome2/drapes.xml`.
+
+
+Wally
+=====
+
+* **Homepage:**
+
+Seems to not work in *Karmic*.
+
+
+Wallpaper Tray
+==============
+
+* **Homepage:**
+* **Package:** [wallpaper-tray](apt://wallpaper-tray)
+
+It is a panel applet which shows a small thumbnail of the current active image. It will show images from your selected
+directories (in the preferences) **plus** all images in `~/.gnome2/backgrounds.xml` (see [#355081](https://bugs.launchpad.net/ubuntu/+source/wallpaper-tray/+bug/355081)).
+Seems relatively stable and is my preferred choice among these 3.
diff --git a/know-how/software/linux/_posts/2010-01-07-remapping-mouse-buttons.md b/know-how/software/linux/_posts/2010-01-07-remapping-mouse-buttons.md
index 8d6e63d..db8d6ef 100644
--- a/know-how/software/linux/_posts/2010-01-07-remapping-mouse-buttons.md
+++ b/know-how/software/linux/_posts/2010-01-07-remapping-mouse-buttons.md
@@ -13,7 +13,8 @@ tags:
permanently
===========
-To remap mouse buttons permanently, you can use the `xinput set-button-map` command. Every mouse button click issues a button click with a specific id to X11. X11 recognizes the following buttons:
+To remap mouse buttons permanently, you can use the `xinput set-button-map` command. Every mouse button click issues a
+button click with a specific id to X11. X11 recognizes the following buttons:
| ID | Button |
|:--:|:--------------|
@@ -31,9 +32,10 @@ To remap mouse buttons permanently, you can use the `xinput set-button-map` comm
You can use the following command to remap the buttons:
- xinput set-button-map ...
+ xinput set-button-map …
-The `` is shown in the `xinput list` output - you can use the name as a string or the id number. You can query the actual button state using `xinput query-state `.
+The `` is shown in the `xinput list` output - you can use the name as a string or the id number. You can
+query the actual button state using `xinput query-state `.
So the default configuration (`xinput set-button-map 1 2 3 4 5 6 7 8 9`) would give you the normal behavior.
But if you prefer e.g. having the thumb buttons for *WheelLeft* and *WheelRight*, you would run this command:
@@ -43,25 +45,29 @@ But if you prefer e.g. having the thumb buttons for *WheelLeft* and *WheelRight*
This would map buttons 8→6 and 9→7 and vice versa.
-To automatically set your preferred mapping on bootup, you can add the line to *System* → *Preferences* → *Startup Applications* (formerly *Sessions*).
+To automatically set your preferred mapping on bootup, you can add the line to *System* → *Preferences* →
+*Startup Applications* (formerly *Sessions*).
per application (Wheel/Thumb only)
==================================
-To remap wheel-/thumb-mouse buttons per application, you can use `imwheel` from the same-named [package](apt://imwheel). After installing the package, copy the default configuration to your homedir:
+To remap wheel-/thumb-mouse buttons per application, you can use `imwheel` from the same-named [package](apt://imwheel).
+After installing the package, copy the default configuration to your homedir:
cp /etc/X11/imwheel/imwheelrc ~/.imwheelrc
-And then enable the automatic starting upon start of X11 by editing `/etc/X11/imwheel/startup.conf` and changing the `IMWHEEL_START` value to **`1`**.
+And then enable the automatic starting upon start of X11 by editing `/etc/X11/imwheel/startup.conf` and changing the
+`IMWHEEL_START` value to **`1`**.
Now you can modify your `.imwheelrc` to fit your needs. The format is
"window regexp"
Modifier, Mousebutton, Keypresses/Mousebutton
- ...
+ …
-So for example to use the WheelLeft and WheelRight buttons to switch tabs in Firefox, you could use the following definition:
+So for example to use the WheelLeft and WheelRight buttons to switch tabs in Firefox, you could use the following
+definition:
"^Firefox-bin$"
# Flip between browser tabs
@@ -70,8 +76,8 @@ So for example to use the WheelLeft and WheelRight buttons to switch tabs in Fir
This would map *WheelLeft* to Ctrl-PgUp and *WheelRight* to Ctrl-PgDn.
-A *Modifier* of `None` means, this only works if no modifier (`Shift_L`, `Shift_R`, `Control_L`, `Control_R`, `Alt_L`, `Alt_R`) is pressed while clicking.
-If you leave this empty, the mapping works regardless of which modifier is held down.
+A *Modifier* of `None` means, this only works if no modifier (`Shift_L`, `Shift_R`, `Control_L`, `Control_R`, `Alt_L`,
+`Alt_R`) is pressed while clicking. If you leave this empty, the mapping works regardless of which modifier is held down.
Use this to go to previous/next track in Rhythmbox using the WheelLeft and WheelRight clicks:
@@ -79,8 +85,9 @@ Use this to go to previous/next track in Rhythmbox using the WheelLeft and Wheel
None, Left, Alt_L|Left
None, Right, Alt_L|Right
-(In this case, `Rhythmbox` defines the *window resource name* since Rhythmbox itself puts the currently playing song in the title bar.
-You could also match against `rhythmbox` which is the *window class name*. Since `imwheel -c` wasn't able to show them to me, I just guessed.)
+(In this case, `Rhythmbox` defines the *window resource name* since Rhythmbox itself puts the currently playing song in
+the title bar. You could also match against `rhythmbox` which is the *window class name*. Since `imwheel -c` wasn't able
+to show them to me, I just guessed.)
Looks like `imwheel` causes some problems when scrolling in *Opera*: The webpage doesn't get redrawn so that you have
diff --git a/know-how/software/linux/_posts/2010-01-22-midnight-commander.md b/know-how/software/linux/_posts/2010-01-22-midnight-commander.md
new file mode 100644
index 0000000..4e4e367
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-01-22-midnight-commander.md
@@ -0,0 +1,55 @@
+---
+title: Midnight Commander (mc)
+layout: default
+created: 2009-06-21 12:01:38 +0200
+updated: 2010-01-22 18:06:36 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+Open drop-down box
+==================
+
+To open a drop-down box (like those on the *FTP link…* dialog), press Alt+H.
+
+
+ZIP contents not shown
+======================
+
+The later versions of `unzip` have a slightly different output format but the `uzip`-module still expects the old one.
+To fix this, edit the file `/usr/share/mc/extfs/uzip` (as *root*) and change the line
+
+{% highlight perl %}
+# Set this to 1 if zipinfo (unzip -Z) is to be used (recommended), otherwise 0.
+my $op_has_zipinfo = 0;
+{% endhighlight %}
+
+to
+
+{% highlight perl %}
+# Set this to 1 if zipinfo (unzip -Z) is to be used (recommended), otherwise 0.
+my $op_has_zipinfo = 1;
+{% endhighlight %}
+
+
+Highlighter
+===========
+
+* [autohotkey.syntax]({{ site.url }}/assets/autohotkey.syntax) --- *AutoHotkey* scripts (Windows program!)
+* [eztemplate.syntax]({{ site.url }}/assets/eztemplate.syntax) --- *eZ Publish* TPL files
+
+Download the above files to `~/.mc/cedit` and add the following definitions (as needed) to `~/.mc/cedit/Syntax`.
+If you don't have this file, copy it from `/usr/share/mc/syntax/` first.
+
+~~~
+file ..\*\\.ahk$ AutoHotkey\sFile
+include autohotkey.syntax
+
+file ..\*\\.(tpl|TPL)$ eZPublish\sTemplate
+include eztemplate.syntax
+~~~
+
+
+*[FTP]: File Transfer Protocol
diff --git a/know-how/software/linux/_posts/2010-02-06-alsa-card-order.md b/know-how/software/linux/_posts/2010-02-06-alsa-card-order.md
index 4f5d00e..aa09d25 100644
--- a/know-how/software/linux/_posts/2010-02-06-alsa-card-order.md
+++ b/know-how/software/linux/_posts/2010-02-06-alsa-card-order.md
@@ -22,3 +22,6 @@ the desired `index` to it in a modprobe file. I appended these lines to my `/etc
This way, the internal sound card (which was the primary one) now gets some other index and the USB mini speakers get
the index 0 and therefore become the new default device for any sounds.
+
+
+*[ALSA]: Advanced Linux Sound Architecture
diff --git a/know-how/software/linux/_posts/2010-02-07-wine.md b/know-how/software/linux/_posts/2010-02-07-wine.md
new file mode 100644
index 0000000..009844c
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-02-07-wine.md
@@ -0,0 +1,29 @@
+---
+title: WinE Tricks
+layout: default
+created: 2010-02-06 01:55:28 +0100
+updated: 2010-02-07 13:29:19 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+Java crashes with EXCEPTION_ACCESS_VIOLATION (0xc00000005)
+==========================================================
+
+The [AirVideo](http://www.inmethod.com/) Server for iPhone runs only under Mac and Windows and needs [Bonjour](http://support.apple.com/downloads/Bonjour_for_Windows)
+and [JRE](http://java.sun.com/javase/downloads/index.jsp). Java always crashed with
+
+ EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7d826f48, pid=8, tid=12
+
+After some poking around, I found a thread at [nabble.com](http://old.nabble.com/Wine%2BJava%2BNvidia-crashes-td22505117.html).
+Disabling the `d3d9.dll` was the solution:
+
+1. Run `winecfg`
+1. Go to the *Libraries* tab
+1. Select `d3d9` from the drop-down box, click *Add*
+1. Select the new entry `d3d9` and click *Edit…*
+1. Select *(X) disabled*, click *OK*
+
+That was it. Now, Java should run smoothly.
diff --git a/know-how/software/linux/_posts/2010-02-12-no-sound-in-flash.md b/know-how/software/linux/_posts/2010-02-12-no-sound-in-flash.md
new file mode 100644
index 0000000..81f460e
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-02-12-no-sound-in-flash.md
@@ -0,0 +1,24 @@
+---
+title: No sound in Flash videos
+layout: default
+created: 2009-11-27 14:27:24 +0100
+updated: 2010-02-12 22:22:35 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - flash
+ - sound
+---
+If you have no sound in Flash videos but in all other programs, there are two possibilities:
+
+1. the PCM output is set to silence
+ * check volume setting with `alsamixer`
+1. you might have a second audio device (e.g. a Webcam with a microphone) which gets preferred by ALSA
+ * fix it by unplugging it, or
+ * force ALSA to use another device, see [ALSA FAQ#26](http://alsa.opensrc.org/FAQ026)
+ * set *Skype* → *Options* → *Sound Devices* to *[ ] Allow Skype to automatically adjust my mixer levels*
+1. some sound via PulseAudio is currently playing (see [ALSA → PulseAudio for Flash and others]({% post_url 2010-02-12-alsa-to-pulseaudio-for-flash %}))
+
+Bug report is [#396558](https://bugs.launchpad.net/ubuntu/+source/flashplugin-nonfree/+bug/396558).
diff --git a/know-how/software/linux/_posts/2010-02-13-install-missing-i386-libraries-on-64bit-systems.md b/know-how/software/linux/_posts/2010-02-13-install-missing-i386-libraries-on-64bit-systems.md
new file mode 100644
index 0000000..aa0fcef
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-02-13-install-missing-i386-libraries-on-64bit-systems.md
@@ -0,0 +1,19 @@
+---
+title: Install missing i386-libraries on 64bit systems
+layout: default
+created: 2010-02-13 16:10:20 +0100
+updated: 2010-02-13 16:10:20 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+If you are on a 64bit system, you might sometimes stumple upon 32bit programs which need several libraries of which are
+no lib32-packages. A good example is the [Amazon MP3 Downloader](http://www.amazon.de/gp/help/customer/display.html?ie=UTF8&nodeId=200317330).
+
+You can now either search the missing libraries at [packages.ubuntu.com](http://packages.ubuntu.com/) or use a tool
+which does this for you: [getlibs](http://ubuntuforums.org/showthread.php?t=474790). You run it with the desired 32bit
+program as a parameter and it will locate, download and install all missing libraries the program needs to run.
+
+Download it at [frozenfox.freehostia.com](http://frozenfox.freehostia.com/cappy/).
diff --git a/know-how/software/linux/_posts/2010-02-26-compiling-kismet.md b/know-how/software/linux/_posts/2010-02-26-compiling-kismet.md
index 28b1f99..c7cc6b3 100644
--- a/know-how/software/linux/_posts/2010-02-26-compiling-kismet.md
+++ b/know-how/software/linux/_posts/2010-02-26-compiling-kismet.md
@@ -36,3 +36,6 @@ The shown URL to the PPA is wrong as Festor's account got deactivated. The corre
deb http://ppa.launchpad.net/festor/hack-tools/ubuntu jaunty main
deb-src http://ppa.launchpad.net/festor/hack-tools/ubuntu jaunty main
+
+
+*[PPA]: Personal Package Archive
diff --git a/know-how/software/linux/_posts/2010-03-02-merge-video-files.md b/know-how/software/linux/_posts/2010-03-02-merge-video-files.md
new file mode 100644
index 0000000..3a77e75
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-03-02-merge-video-files.md
@@ -0,0 +1,35 @@
+---
+title: Merge Video Files
+layout: default
+created: 2010-03-02 22:13:26 +0100
+updated: 2010-03-02 23:59:34 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - video
+---
+To merge multiple (similar) video files into one big file, there are different ways.
+
+
+avimerge
+========
+
+This only works with `avi` files. *avimerge* is part of the [transcode-utils](apt://transcode-utils) package.
+
+ avimerge -o output.avi -i file1.avi file2.avi file3.avi fileN.avi
+
+If the sound doesn't match from the second file on, use the `-c` switch.
+
+
+Check your files after merging! If you have no audio near the end of the final video file, use *mencoder* below.
+
+
+
+mencoder
+========
+
+This should also work with `mpg` videos. Install the [mencoder](apt://mencoder) package.
+
+ mencoder -oac copy -ovc copy file1.avi file2.avi file3.avi fileN.avi -o output.avi
diff --git a/know-how/software/linux/_posts/2010-03-24-sync-package-list.md b/know-how/software/linux/_posts/2010-03-24-sync-package-list.md
new file mode 100644
index 0000000..f61d91e
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-03-24-sync-package-list.md
@@ -0,0 +1,30 @@
+---
+title: Sync Package List between 2 PCs
+layout: default
+created: 2010-03-23 17:53:30 +0100
+updated: 2010-03-24 10:39:37 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - administration
+---
+To export a list of all installed packages, you can use the following command:
+
+ sudo dpkg --get-selections > selections.txt
+
+But this will loose any `{A}` markers for automatically installed packages and therefore produce a lot of garbage when
+dependencies change.
+
+To export only manually installed packages, use `aptitude` like this:
+
+ sudo aptitude search '~i!~M' -F '%p install' > selections.txt
+
+(More `aptitude` filterstrings can be found on [their project page](http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html).)
+
+On the other machine, use the following command to set the new markers:
+
+ sudo dpkg --set-selections < selections.txt
+
+Now run `aptitude` and resolve the dependencies.
diff --git a/know-how/software/linux/_posts/2010-07-29-flashplugin-not-recognizing-mouse-clicks.md b/know-how/software/linux/_posts/2010-07-29-flashplugin-not-recognizing-mouse-clicks.md
new file mode 100644
index 0000000..0e6a7a6
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-07-29-flashplugin-not-recognizing-mouse-clicks.md
@@ -0,0 +1,38 @@
+---
+title: Flashplugin not recognizing mouse clicks
+layout: default
+created: 2010-02-12 22:21:29 +0100
+updated: 2010-07-29 23:26:44 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+If your flashplugin only recognizes the very first mouse click and then seems to ignore the mouse completely, just
+click somewhere outside the area where the flash script is (e.g. on the webpage background) and then flash will
+recognize the next click.
+
+Some more promising solutions are these:
+
+* [ubuntugeek.com](http://www.ubuntugeek.com/fix-for-flash-is-not-recognizing-mouse-clicks.html): edit the file
+ `/usr/lib/nspluginwrapper/i386/linux/npviewer` and add the following line just before the last one:
+
+ export GDK_NATIVE_WINDOWS=1
+
+ The complete file should now look somewhat like this:
+
+ #!/bin/sh
+ TARGET_OS=linux
+ TARGET_ARCH=i386
+ export GDK_NATIVE_WINDOWS=1
+ . /usr/lib/nspluginwrapper/noarch/npviewer
+
+* if you are on a 64bit machine, install the 64bit flashplugin from [this PPA](https://launchpad.net/~sevenmachines/+archive/flash)
+
+
+Flash Preferences unusable
+==========================
+
+If your clicks onto the Flash preferences are not recognized, close [gnome-do](apt://gnome-do) and/or [docky](apt://docky).
+After that, the preferences should be clickable again. (found [here](http://ubuntuforums.org/showpost.php?p=8484828&postcount=19))
diff --git a/know-how/software/linux/_posts/2010-08-04-samba-not-showing-symlinks.md b/know-how/software/linux/_posts/2010-08-04-samba-not-showing-symlinks.md
new file mode 100644
index 0000000..8951fda
--- /dev/null
+++ b/know-how/software/linux/_posts/2010-08-04-samba-not-showing-symlinks.md
@@ -0,0 +1,24 @@
+---
+title: Samba not showing Symlinks
+layout: default
+created: 2010-08-04 10:47:49 +0200
+updated: 2010-08-04 10:47:49 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - samba
+---
+After an upgrade to *Ubuntu Lucid Lynx*, all Samba shares were missing symlinks, esp. symlinks to directories outside
+the share.
+
+To enable these again, add the following lines into the `[global]` section of your `/etc/samba/smb.conf`:
+
+{% highlight ini %}
+follow symlinks = yes
+wide links = yes
+unix extensions = no
+{% endhighlight %}
+
+Then restart `smbd` and you should see the symlinks again.
diff --git a/know-how/software/linux/_posts/2011-04-09-find-ppa-for-package.md b/know-how/software/linux/_posts/2011-04-09-find-ppa-for-package.md
new file mode 100644
index 0000000..4c1f367
--- /dev/null
+++ b/know-how/software/linux/_posts/2011-04-09-find-ppa-for-package.md
@@ -0,0 +1,33 @@
+---
+title: Find PPA for specific package
+layout: default
+created: 2011-04-09 13:28:16 +0200
+updated: 2011-04-09 13:28:16 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - administration
+---
+If you want to find out from which PPA a specific package was installed or what other PPAs hold it, you can use the
+following command: (found at [superuser.com](http://superuser.com/questions/106794/how-to-tell-from-what-ubuntu-or-debian-repository-a-package-comes))
+
+~~~
+$ apt-cache policy mpd
+mpd:
+ Installed: 0.16.2+git20110331.6d3ed3f-0ubuntu1~ripps1
+ Candidate: 0.16.2+git20110331.6d3ed3f-0ubuntu1~ripps1
+ Version table:
+ *** 0.16.2+git20110331.6d3ed3f-0ubuntu1~ripps1 0
+ 500 http://ppa.launchpad.net/gmpc-trunk/mpd-trunk/ubuntu/ maverick/main amd64 Packages
+ 100 /var/lib/dpkg/status
+ 0.16.1-1ubuntu1 0
+ 500 http://de.archive.ubuntu.com/ubuntu/ natty/universe amd64 Packages
+~~~
+
+Here you can see that the package `mpg` is in the PPA *gmpc-trunk/mpd-trunk* and also in the *natty/universe* repository.
+The installed version is that from the PPA - also indicated by the `/var/lib/dpkg/status` line.
+
+
+*[PPA]: Personal Package Archive
diff --git a/know-how/software/linux/_posts/2011-08-31-rip-youtube-files.md b/know-how/software/linux/_posts/2011-08-31-rip-youtube-files.md
new file mode 100644
index 0000000..11da992
--- /dev/null
+++ b/know-how/software/linux/_posts/2011-08-31-rip-youtube-files.md
@@ -0,0 +1,34 @@
+---
+title: Rip YouTube videos/audio
+layout: default
+created: 2009-12-05 02:52:46 +0100
+updated: 2011-08-31 23:41:50 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - youtube
+ - ripping
+ - audio
+---
+The tools you need are described on [blog.joff3.com](http://blog.joff3.com/2008/02/downloading-and-ripping-music-from.html).
+There's also the nice [youtube-dl](apt://youtube-dl) package. One thing I noticed: the `ffmpeg` command there re-encodes
+the audio which might loose some quality. To just dump the audio off the Flash video, use:
+
+ ffmpeg -i somevideo.flv -acodec copy output.mp3
+
+This is for 240px videos. All larger ones use AAC format. Use this:
+
+ ffmpeg -i somevideo.flv -acodec copy output.aac
+ ffmpeg -i somevideo.mp4 -acodec copy output.aac
+
+If you happen to have the latest webm format, use this:
+
+ ffmpeg -i somevideo.webm -vn -acodec copy output.ogg
+
+
+This will just extract the audio track without doing anything to it.
+
+
+You could also try [vixy.net](http://vixy.net/).
diff --git a/know-how/software/linux/_posts/2012-02-15-xplanet.md b/know-how/software/linux/_posts/2012-02-15-xplanet.md
new file mode 100644
index 0000000..1a464c7
--- /dev/null
+++ b/know-how/software/linux/_posts/2012-02-15-xplanet.md
@@ -0,0 +1,454 @@
+---
+title: XPlanet
+layout: default
+created: 2009-02-17 09:24:01 +0100
+updated: 2012-02-15 15:10:04 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - xplanet
+---
+XPlanet renders an Earth globe including actual clouds and satellites' positions. It also has data to render the moon,
+mars or the sun. You can even put the image on your Desktop so that it shows the current Earth view from space instead
+of a boring wallpaper.
+
+To make things a bit easier, there's [this Python script](http://ubuntuforums.org/showpost.php?s=dba5c223bddb4c7d1e119ad00225548d&p=258035&postcount=6)
+which handles downloading new cloudmaps and updating the image. I re-wrote that thing to pure Bash:
+
+
+handle-xplanet.sh
+=================
+
+{% highlight bash %}
+#!/bin/sh
+
+# Script for using xplanet in Gnome
+# made after http://ubuntuforums.org/showpost.php?p=259290&postcount=10
+
+# XPlanet configuration
+BODY="-body earth -latitude 52.51667 -longitude 13.41667"
+SCREEN="-geometry 2560x1024 -center +1920+512 -radius 75"
+STARS="-starmap /usr/share/xplanet/stars/BSC -marker_file /usr/share/xplanet/markers/brightStars -arc_file /usr/share/xplanet/arcs/constellations"
+
+# other configuration
+TMPDIR="/tmp"
+PREFIX="xplanet-"
+ORIGINAL="${TMPDIR}/${PREFIX}original.png"
+OPTIONS="-config /opt/xplanet/xplanet.conf $BODY $SCREEN $STARS -ephemeris_file ephemeris/unxp1800.406"
+TIMING="-wait 300 -hibernate 600"
+
+if [ $# -gt 0 ]; then
+ # Update data
+ ./update-cloudmap.sh
+ ./update-satellites.sh
+
+ # Update picture
+ for f in ${TMPDIR}/${PREFIX}background-*.png; do
+ rm $f
+ done
+ TIME=`date +"%s"`
+ BGFILE="${TMPDIR}/${PREFIX}background-${TIME}.png"
+ mv $ORIGINAL $BGFILE
+ # set background picture
+ gconftool-2 -t str -s /desktop/gnome/background/picture_filename ""
+ sleep 1
+ gconftool-2 -t str -s /desktop/gnome/background/picture_filename "$BGFILE"
+ # following line is for Compiz
+ # dbus-send --print-reply --type=method_call --dest=org.freedesktop.compiz /org/freedesktop/compiz/cube/screen0/backgrounds org.freedesktop.compiz.set array:string:"$BGFILE"
+else
+ # Initialize
+ /usr/bin/nice -19 /usr/bin/xplanet $TIMING -output "$ORIGINAL" $OPTIONS -post_command "/opt/xplanet/handle-xplanet.sh update"
+fi
+{% endhighlight %}
+
+This script makes use of the following two helper scripts.
+
+
+update-cloudmap.sh
+==================
+
+{% highlight bash %}
+#!/bin/sh
+
+CLOUDFILE="clouds.jpg"
+URLLIST="update-cloudmap.lst"
+UPDATE=$((3*60*60))
+
+URL=`head -n 2 $URLLIST | tr "\n" " "`
+NOW=`date +"%s"`
+MTIME=`stat -c "%Y" $CLOUDFILE`
+DIFF=$((NOW - MTIME))
+
+. ./colors.sh
+
+echo "${BOLD}Cloudmap$NORMAL is $BOLD$BLUE$DIFF$NORMAL seconds old (outdated after $UPDATE)."
+
+DOUPDATE=0
+if [ ! -e $CLOUDFILE ]; then
+ echo "$BOLD${RED}File not found.$NORMAL"
+ DOUPDATE=1
+fi
+
+if [ $DIFF -ge $UPDATE ]; then
+ echo "$BOLD${YELLOW}File is outdated.$NORMAL"
+ DOUPDATE=1
+fi
+
+if [ "$1" = "-f" ]; then
+ echo "$BOLD${GREEN}Update forced.$NORMAL"
+ DOUPDATE=1
+fi
+
+if [ $DOUPDATE = 1 ]; then
+ aria2c $URL --allow-overwrite=true -o $CLOUDFILE
+{% endhighlight %}
+
+
+This one reads the URL to download from a file `update-cloudmap.lst`:
+
+~~~
+http://userpage.fu-berlin.de/~jml/clouds_4096.jpg
+http://www.ruwenzori.net/earth/clouds_4096.jpg
+http://www.narrabri.atnf.csiro.au/operations/NASA/clouds_4096.jpg
+http://userpage.fu-berlin.de/~jml/clouds_2048.jpg
+http://rcswww.urz.tu-dresden.de/~es179238/clouds_2048.jpg
+http://xplanet.dyndns.org/clouds/clouds_2048.jpg
+http://www.ruwenzori.net/earth/clouds_2048.jpg
+http://xplanet.arculeo.com/clouds_2048.jpg
+http://xplanet.sourceforge.net/clouds/clouds_2048.jpg
+ftp://mirror.pacific.net.au/xplanet/clouds_2048.jpg
+http://www.narrabri.atnf.csiro.au/operations/NASA/clouds_2048.jpg
+http://home.megapass.co.kr/~gitto88/cloud_data/clouds_2048.jpg
+http://home.megapass.co.kr/~holywatr/cloud_data/clouds_2048.jpg
+http://home.megapass.co.kr/~ysy00/cloud_data/clouds_2048.jpg
+http://user.chol.com/~winxplanet/cloud_data/clouds_2048.jpg
+ftp://ftp.iastate.edu/pub/xplanet/clouds_2048.jpg
+http://xplanet.explore-the-world.net/clouds_2048.jpg
+~~~
+
+
+update-satellites.sh
+====================
+
+{% highlight bash %}
+#!/bin/sh
+
+TLEFILE="satellites/iss+.tle"
+UPDATE=$((12*60*60))
+
+FILES="stations.txt science.txt"
+BASEURL="http://www.celestrak.com/NORAD/elements/"
+NOW=`date +"%s"`
+MTIME=`stat -c "%Y" $TLEFILE`
+DIFF=$((NOW - MTIME))
+
+URLS=""
+for f in $FILES; do
+ URLS="$URLS $BASEURL$f"
+done
+
+. ./colors.sh
+
+echo "${BOLD}Satellite$NORMAL data is $BOLD$BLUE$DIFF$NORMAL seconds old (outdated after $UPDATE)."
+
+DOUPDATE=0
+if [ ! -e $TLEFILE ]; then
+ echo "$BOLD${RED}File not found.$NORMAL"
+ DOUPDATE=1
+fi
+
+if [ $DIFF -ge $UPDATE ]; then
+ echo "$BOLD${YELLOW}File is outdated.$NORMAL"
+ DOUPDATE=1
+fi
+
+if [ "$1" = "-f" ]; then
+ echo "$BOLD${GREEN}Update forced.$NORMAL"
+ DOUPDATE=1
+fi
+
+if [ $DOUPDATE = 1 ]; then
+ wget -O $TLEFILE $URLS
+# aria2c $URL --allow-overwrite=true -o $TLEFILE
+{% endhighlight %}
+
+
+colors.sh
+=========
+
+This is a helper script which provides ANSI colors through variables.
+
+{% highlight bash %}
+#!/bin/sh
+
+TPUT=/usr/bin/tput
+NORMAL=`$TPUT sgr0`
+BOLD=`$TPUT bold`
+BLINK=`$TPUT blink`
+RED=`$TPUT setaf 1`
+GREEN=`$TPUT setaf 2`
+YELLOW=`$TPUT setaf 3`
+BLUE=`$TPUT setaf 4`
+MAGENTA=`$TPUT setaf 5`
+CYAN=`$TPUT setaf 6`
+WHITE=`$TPUT setaf 7`
+{% endhighlight %}
+
+
+get-ephemeris.sh
+================
+
+This script has to be run only once since the ephemeris is valid for several years.
+
+{% highlight bash %}
+#!/bin/sh
+
+wget -r ftp://ssd.jpl.nasa.gov/pub/eph/export/unix/* -P ephemeris/ --no-passive-ftp -nd -c
+{% endhighlight %}
+
+
+xplanet.conf
+============
+
+Finally the configuration file for XPlanet: `xplanet.conf`.
+
+{% highlight ini %}
+# This file contains options you might want to customize for each
+# body. It's best to leave this file alone and modify a copy. Use the
+# -config option to tell xplanet to read your copy.
+
+[default] # Values in this section apply to all
+ # bodies unless overridden below.
+
+arc_color=gray
+#arc_file=
+
+#bump_map=
+bump_scale=1
+
+cloud_gamma=1
+#cloud_map=
+cloud_ssec=false # true if the cloud map is from the
+ # University of Wisconsin Space
+ # Science and Engineering Center
+cloud_threshold=90
+
+color={255,255,255} # fallback color in case an image map
+ # isn't found
+
+draw_orbit=false # if true, draw this body's orbit
+ # about its primary
+
+grid=false
+grid1=6
+grid2=15
+
+#image=
+
+magnify=1 # draw the body as if its radius were
+ # magnified by this factor
+
+marker_color=yellow
+#marker_file=
+#marker_font=
+marker_fontsize=8
+
+max_radius_for_label=3 # don't draw a label if the body's
+ # radius in pixels is more than this
+
+min_radius_for_label=.01 # don't draw a label if the body's
+ # radius in pixels is less than this
+
+min_radius_for_markers=40 # don't draw markers if the body's
+ # radius in pixels is less than this
+
+#night_map=
+
+orbit={-.5,.5,2} # extent of orbit to draw,
+ # {start, end, delta}, where
+ # start and end are in units of period
+ # of revolution and delta is angular
+ # increment in degrees to evaluate
+ # position
+
+orbit_color={255,255,255} # color for the orbit
+
+random_origin=true # Can this body be considered if
+ # -origin random is used?
+
+random_target=true # Can this body be considered if
+ # -target random is used?
+
+#satellite_file=
+
+shade=30 # 0 = black, 100 = same as dayside
+
+#specular_map=
+
+text_color={255,0,0} # color for text (markers & body label)
+
+twilight=6 # blend the day and night images for
+ # pixels within this many degrees of
+ # the terminator
+
+[sun]
+"Sun"
+color={255,255,166}
+max_radius_for_label=0 # never draw a label for the sun
+shade=100 # No night side!
+map=maps/sun/map.jpg
+
+[mercury]
+"Mercury"
+color={100, 100, 100}
+
+min_radius_for_label=0 # always draw a label
+
+[venus]
+"Venus"
+color={161, 129, 70}
+
+min_radius_for_label=0
+
+[earth]
+"Earth"
+color={28, 82, 110}
+
+cloud_map=clouds.jpg
+bump_map=maps/earth/bump.jpg
+map=maps/earth/map.jpg
+night_map=maps/earth/night.jpg
+
+# I have day and night maps of Australia centered on Alice Springs,
+# which are cropped from higher resolution maps.
+#map=alice_springs.png
+#night_map=alice_springs_night.png
+#mapbounds={-1.2,98.7107,-46.2,169.023} # lat1, lon1, lat2, lon2
+
+#marker_file=capitals.mark
+marker_file=earth
+
+min_radius_for_label=0
+
+satellite_file=satellites/iss+
+
+[moon]
+"Moon"
+color={100, 100, 100}
+map=maps/moon/map.jpg
+bump_map=maps/moon/bump.jpg
+marker_file=moon
+
+[mars]
+"Mars"
+color={172, 123, 67}
+map=maps/mars/map.jpg
+min_radius_for_label=0
+marker_file=mars
+
+[phobos]
+"Phobos"
+
+[deimos]
+"Deimos"
+
+[jupiter]
+"Jupiter"
+color={204, 163, 133}
+min_radius_for_label=0
+
+[io]
+"Io"
+color={212, 182, 52}
+
+[europa]
+"Europa"
+color={140, 140, 140}
+
+[ganymede]
+"Ganymede"
+color={150, 150, 150}
+
+[callisto]
+"Callisto"
+color={70, 70, 70}
+
+[saturn]
+"Saturn"
+color={244, 199, 134}
+min_radius_for_label=0
+
+[mimas]
+"Mimas"
+
+[enceladus]
+"Enceladus"
+
+[tethys]
+"Tethys"
+
+[dione]
+"Dione"
+
+[rhea]
+"Rhea"
+
+[titan]
+"Titan"
+
+color={252,94,7}
+
+[hyperion]
+"Hyperion"
+
+[iapetus]
+"Iapetus"
+
+[phoebe]
+"Phoebe"
+
+[uranus]
+"Uranus"
+
+color={105, 197, 238}
+
+min_radius_for_label=0
+
+[miranda]
+"Miranda"
+
+[ariel]
+"Ariel"
+
+[umbriel]
+"Umbriel"
+
+[titania]
+"Titania"
+
+[oberon]
+"Oberon"
+
+[neptune]
+"Neptune"
+color={95, 133, 232}
+
+min_radius_for_label=0
+
+[triton]
+"Triton"
+
+[nereid]
+"Nereid"
+
+[pluto]
+"Pluto"
+color={206, 180, 153}
+
+min_radius_for_label=0
+
+[charon]
+"Charon"
+{% endhighlight %}
diff --git a/know-how/software/linux/_posts/2012-05-14-keepass-under-linux.md b/know-how/software/linux/_posts/2012-05-14-keepass-under-linux.md
new file mode 100644
index 0000000..b32afda
--- /dev/null
+++ b/know-how/software/linux/_posts/2012-05-14-keepass-under-linux.md
@@ -0,0 +1,17 @@
+---
+title: KeePass under Linux with Mono
+layout: default
+created: 2011-08-31 20:33:25 +0200
+updated: 2012-05-14 01:08:11 +0200
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+ - keepass
+ - mono
+---
+To enable most `.plgx`-Plugins, you need to install the [mono-gmcs](apt://mono-gmcs)-Package. For newer versions of
+KeePass, use [mono-dmcs](apt://mono-dmcs).
+
+For a list of all needed packages, look at [leo.gaggl.com](http://leo.gaggl.com/2011/04/keepass-version-2-on-ubuntu/).
diff --git a/know-how/software/linux/_posts/2014-02-10-resize-partition.md b/know-how/software/linux/_posts/2014-02-10-resize-partition.md
new file mode 100644
index 0000000..4e8ef5e
--- /dev/null
+++ b/know-how/software/linux/_posts/2014-02-10-resize-partition.md
@@ -0,0 +1,47 @@
+---
+title: Resize partition
+layout: default
+created: 2013-12-16 14:16:31 +0100
+updated: 2014-02-10 09:09:32 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+Detect new disk size
+====================
+
+With virtual machines (VMware at least), you can resize the disk drives without restarting the VM itself. After doing
+that, you have to get Linux to recognize the new disk drive size. Use one of these (found [here](http://oldblog.renanmarks.net/en/blog/reload-partition-table-without-rebooting-linux-system)
+and [here](http://jason-antonacci.blogspot.de/2012/08/recognizing-linux-block-device.html)) - assuming the modified
+drive is `/dev/sdc`:
+
+* `hdparm -z /dev/sdc`
+* `echo 1 > /sys/block/sdc/device/rescan`
+* `partprobe /dev/sdc`
+
+
+Make sure to umount all mounts from this drive before rescanning it. Otherwise, it won't work.
+
+
+Check the success with `fdisk -l`.
+
+
+Resize partition
+================
+
+Using `parted`, there's the `resize` command. But this is not as robust, es using `resize2fs` from the [e2fsprogs](apt://e2fsprogs)
+package. So the recommended way is to manually resize the partition using `parted` and then run `resize2fs` to do the
+actual resize operation.
+
+Make sure to switch to `unit s` (sectors) in `parted` and `print` the partition table before doing anything to it so
+that you can refer to it later.
+
+
+Fill Empty Space
+================
+
+To fill empty space with zeroes (to e.g. reduce the partition size using `vmkfstools`), use this command (found [here](http://www.zedt.eu/tech/linux/zero-out-free-disk-space/)):
+
+ nice cat /dev/zero > zero.fill; sync; sleep 1; sync; rm -f zero.fill
diff --git a/know-how/software/linux/_posts/2014-11-27-rip-dvd-track.md b/know-how/software/linux/_posts/2014-11-27-rip-dvd-track.md
new file mode 100644
index 0000000..27e297e
--- /dev/null
+++ b/know-how/software/linux/_posts/2014-11-27-rip-dvd-track.md
@@ -0,0 +1,48 @@
+---
+title: Rip DVD track
+layout: default
+created: 2008-08-27 00:42:59 +0200
+updated: 2014-11-27 01:52:34 +0100
+toc: false
+tags:
+ - know-how
+ - software
+ - linux
+---
+To rip a DVD track to a file, you need the [transcode](apt://transcode) package and the encoders you're going to use.
+
+To rip a single track as ogg, use the command
+
+ transcode -i /dev/scd0 -x dvd -T 5,15 -a 0 -y null,ogg -o ~/Nasty.ogg
+
+This would rip audio only (video goes to *null*) chapter 5, track 15 to the file `Nasty.ogg`.
+
+ transcode -i /dev/scd0 -x dvd -T 5,15 -a 0 -y null,raw -b 192 -o ~/Nasty.mp3
+
+This one rips to a `mp3` file. The codec is `raw` because *transcode* internally works with mp3.
+
+
+**UPDATE:** The `raw` audio encoder is deprecated and `tcaud` should be used instead. Use this:
+
+ transcode -i /dev/scd0 -x null,dvd -y null,tcaud -T 1,8 -a 0 --lame_preset extreme -m outputfile.mp3
+
+More information about how to use `transcode` is explained here: [ubuntuforums.org](http://ubuntuforums.org/showthread.php?t=1357157).
+
+
+mplayer
+=======
+
+Find out the longest DVD track using [lsdvd](apt://lsdvd):
+
+ lsdvd | grep Longest
+
+
+Then dump that track with [mplayer](apt://mplayer):
+
+ mplayer dvd://02 -v -dumpstream -dumpfile output.vob
+
+Convert with [avidemux](apt://avidemux), [avconv](apt://avconv) or similar, e.g.:
+
+ avconv -i output.vob -qscale:0 8 -qscale:2 2 -filter:v yadif output.mp4
+
+ avconv -i output.vob -map 0:0 -map 0:1 -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k -async 30 output-en.avi