1
0
mirror of https://github.com/mbirth/wiki.git synced 2024-12-25 23:04:06 +00:00

Added various Linux posts.

This commit is contained in:
Markus Birth 2015-04-13 21:20:11 +02:00
parent a914dbf05e
commit fd9db71293
50 changed files with 3026 additions and 18 deletions

358
assets/abcde.conf Normal file
View File

@ -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

197
assets/autohotkey.syntax Normal file
View File

@ -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

108
assets/eztemplate.syntax Normal file
View File

@ -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

62
assets/pyyimt.txt Normal file
View File

@ -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

191
assets/zshrc.txt Normal file
View File

@ -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`"

View File

@ -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

View File

@ -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/).

View File

@ -28,8 +28,8 @@ Zend Extension Api No: 220060519
rebuilding aclocal.m4 rebuilding aclocal.m4
rebuilding configure rebuilding configure
configure.in:77: warning: LTOPTIONS_VERSION is m4_require'd but not m4_defun'd 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:2912: LT_INIT is expanded from
aclocal.m4:2947: AC_PROG_LIBTOOL is expanded from... aclocal.m4:2947: AC_PROG_LIBTOOL is expanded from
configure.in:77: the top level 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: 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 configure.in:77: warning: LTVERSION_VERSION is m4_require'd but not m4_defun'd

View File

@ -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
---
<blockquote>
I use Linux because it's like owning a chainsaw compared to owning a pen knife. Not always necessary, but so much more fun.
</blockquote>
--- [arjayes](http://ubuntuforums.org/member.php?u=387872) of UbuntuForums

View File

@ -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 `%~`.

View File

@ -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 %}

View File

@ -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).
<p><div class="noteclassic" markdown="1">
Before using it the first time, you might have to issue a `wcd -s` which will scan your $HOME.
</div></p>

View File

@ -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 To add colours, in that `init-functions` file find the function *log_use_fancy_output()* and below the `fi` add the lines
{% highlight bash %} {% highlight bash %}
...
else else
FANCYTTY=0 FANCYTTY=0
fi fi
@ -39,13 +39,13 @@ fi
# END --- colour definition # END --- colour definition
case "$FANCYTTY" in case "$FANCYTTY" in
1|Y|yes|true) true;; 1|Y|yes|true) true;;
...
{% endhighlight %} {% endhighlight %}
After that, edit the `lsb-base-logging.sh` and change e.g. the output of *log_end_msg()*: After that, edit the `lsb-base-logging.sh` and change e.g. the output of *log_end_msg()*:
{% highlight bash %} {% highlight bash %}
...
if [ "$COL" ] && [ -x "$TPUT" ]; then if [ "$COL" ] && [ -x "$TPUT" ]; then
printf "\r" printf "\r"
$TPUT hpa $COL $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}" echo "${BOLD}${BLUE}[${RED}fail${BLUE}]${NORMAL}"
fi fi
else else
...
{% endhighlight %} {% endhighlight %}
Your next boot will look like this: Your next boot will look like this:

View File

@ -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.

View File

@ -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)

View File

@ -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

View File

@ -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#

View File

@ -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.

View File

@ -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 <kbd>Del</kbd>-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.

View File

@ -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 <https://sharesource.org/hg/pymsnt/summary>. 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): <type 'exceptions.Exception'>: Timeout]
In the config file, if you are behind a NAT router, specify **your internal LAN IP** for `<host>` 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)

View File

@ -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`.

View File

@ -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

View File

@ -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"
<p><div class="noteclassic">
After an upgrade to Jaunty, these lines are commented out by the update-manager. Just uncomment them and everything
should work again.
</div></p>
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.

View File

@ -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/).

View File

@ -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).

View File

@ -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/).

View File

@ -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`.

View File

@ -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.

View File

@ -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.

View File

@ -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)

View File

@ -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.

View File

@ -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 <kbd>1</kbd> and confirm with <kbd>ENTER</kbd>.

View File

@ -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:** <http://drapes.mindtouchsoftware.com/>
* **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:** <http://www.becrux.com/index.php?page=projects&name=wally>
Seems to not work in *Karmic*.
Wallpaper Tray
==============
* **Homepage:** <http://freshmeat.net/projects/wp_tray/>
* **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.

View File

@ -13,7 +13,8 @@ tags:
permanently 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 | | 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: You can use the following command to remap the buttons:
xinput set-button-map <device-id> <button1> <button2> <button3> ... <buttonN> xinput set-button-map <device-id> <button1> <button2> <button3> <buttonN>
The `<device-id>` 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 <device-id>`. The `<device-id>` 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 <device-id>`.
So the default configuration (`xinput set-button-map <device-id> 1 2 3 4 5 6 7 8 9`) would give you the normal behavior. So the default configuration (`xinput set-button-map <device-id> 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: 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. 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) 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 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 Now you can modify your `.imwheelrc` to fit your needs. The format is
"window regexp" "window regexp"
Modifier, Mousebutton, Keypresses/Mousebutton 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$" "^Firefox-bin$"
# Flip between browser tabs # 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 <kbd>Ctrl</kbd>-<kbd>PgUp</kbd> and *WheelRight* to <kbd>Ctrl</kbd>-<kbd>PgDn</kbd>. This would map *WheelLeft* to <kbd>Ctrl</kbd>-<kbd>PgUp</kbd> and *WheelRight* to <kbd>Ctrl</kbd>-<kbd>PgDn</kbd>.
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. A *Modifier* of `None` means, this only works if no modifier (`Shift_L`, `Shift_R`, `Control_L`, `Control_R`, `Alt_L`,
If you leave this empty, the mapping works regardless of which modifier is held down. `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: 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, Left, Alt_L|Left
None, Right, Alt_L|Right 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. (In this case, `Rhythmbox` defines the *window resource name* since Rhythmbox itself puts the currently playing song in
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.) 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.)
<p><div class="noteimportant" markdown="1"> <p><div class="noteimportant" markdown="1">
Looks like `imwheel` causes some problems when scrolling in *Opera*: The webpage doesn't get redrawn so that you have Looks like `imwheel` causes some problems when scrolling in *Opera*: The webpage doesn't get redrawn so that you have

View File

@ -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 <kbd>Alt</kbd>+<kbd>H</kbd>.
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

View File

@ -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 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. the index 0 and therefore become the new default device for any sounds.
*[ALSA]: Advanced Linux Sound Architecture

View File

@ -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.

View File

@ -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).

View File

@ -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/).

View File

@ -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 http://ppa.launchpad.net/festor/hack-tools/ubuntu jaunty main
deb-src http://ppa.launchpad.net/festor/hack-tools/ubuntu jaunty main deb-src http://ppa.launchpad.net/festor/hack-tools/ubuntu jaunty main
</div></p> </div></p>
*[PPA]: Personal Package Archive

View File

@ -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.
<p><div class="noteimportant" markdown="1">
Check your files after merging! If you have no audio near the end of the final video file, use *mencoder* below.
</div></p>
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

View File

@ -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.

View File

@ -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))

View File

@ -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.

View File

@ -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

View File

@ -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/).

View File

@ -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 %}

View File

@ -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/).

View File

@ -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`
<p><div class="notewarning">
Make sure to umount all mounts from this drive before rescanning it. Otherwise, it won't work.
</div></p>
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

View File

@ -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