I'm going to DebConf11 and Wacken2011

I'm going to DebConf11Yes, you will see me in Banja Luka. This will be my first DebConf, but I have a strong feeling it won't be the last one. I hope to see some productive sessions in pkg-games and pkg-ayatana, nice people and a lot of fun in a nice country. I will travel with ICE 729 from Duesseldorf to Munich and EN 499 from Munich to Zagreb on the 22.07.2011 and return with EN 498 and ICE 728 on 31.07.2011. To make things louder, I will go to Wacken from 02.08.2011 until 07.08.2011, wonder to see some Debian people there :)

Debian/Ubuntu Games Team Meeting #3

As it hasn't been announced on planet yet, I'd like to invite you to the thrird Debian/Ubuntu Games Team Meeting on May 29th (yes, tomorrow!) at 11:00 UTC in #debian-games.

  • What: Debian/Ubuntu Games Team Meeting #3
  • When: 29.05.2011, 11:00:00 UTC
  • Where: #debian-games on irc.debian.org
  • Who: YOU!
The agenda is listed in the wiki and Kamping_Kaiser will try to stick to it (not as I did the last meeting). So see you tomorrow 11:00 UTC in #debian-games on irc.debian.org!

playing sick games (RC-bugs 2011/18)

I've been a little sick the last days and decided to be productive instead of just drinking tea all the time. The result are some (10) squashed bugs from pkg-games, and one long standing nmu.


#624998 LP#765984 FTBFS: py_adonthell_wrap.cc:27357:44: error: taking address of temporary [-fpermissive] Patch by Peter De Wachter, I just had to sign and upload.


#624884 FTBFS: stat.h:106:22: error: expected identifier or '(' before '[' token Include defs.h *after* particle.h, thus not redifining __unused from glibc's bits/stat.h


#554286 LP#770962 FTBFS with binutils-gold Fixed since 0.92a.dfsg1-6, bug closed. Found different FTBFS though, fix uploaded as -9.


#554411 FTBFS with binutils-gold Closed after verifying that it is fixed since at least 2.2.1 as upstream wrote.


#624978 FTBFS: src/gamemenu.cpp:224:52: error: 'mkdir' was not declared in this scope Include sys/stat.h in 06_homedir_game.patch and 07_homedir_editor.patch.


#625047 LP#770970 FTBFS: ../src/../SWIG/KikiPy_wrap.cpp:13045:63: error: taking address of temporary [-fpermissive] Patch by Peter De Wachter, I just had to sign and upload.


#624937 LP#770857 FTBFS: ball.h:113:19: error: 'NULL' was not declared in this scope Include stddef.h in ball.h to define NULL.


#625038 #624919 LP#770805 FTBFS: avl_base.hpp:137:15: error: 'ptrdiff_t' does not name a type Patch by Julien Jorge, I just had to sign and upload.


#555468 FTBFS with binutils-gold Patch by Stephen Kitt, I just had to sign and upload.


#555564 FTBFS with binutils-gold Closed after verifying that it is fixed since at least 0.1.8


#621392 FTBFS on armel: expected identifier before numeric constant R0 is already taken as a register name on armel, rename xnecview's constant to DEFFAULTR0. (Patch basically stolen from Ubuntu)

dear qmake

i can haz understanding? I'm trying to rebuild a package with gcc-4.6 instead of (default) gcc-4.5. Sounds easy, huh? Not today, not with qmake :( Setting CC=gcc-4.6 CXX=g++-4.6 on the command-line does not help. Neither does exporting these in debian/rules. Let's fire up Google, I think I remember qmake tends to prepend EVERYTHING with QMAKE_... Right, official documentation says it's QMAKE_CC and QMAKE_CXX. Setting those on the command-line does ... not help. debian/rules? Nope! Okay, let's do it the qmake-way, set it in the main .pro file which basically just calls a bunch of other .pro files (one for each component of the project). Guess what? It does not help. You have to set these in each and every .pro file! Rly? Is this what I have a build-system for? </rant> Now, seriously, what's the proper way to override stuff like this in qmake? Any pointers appreciated.

Debian/Ubuntu Games Team Meeting #2

The readers of debian-devel-games@l.d.o and games@l.fd.o do already know, but the fact pkg-games has it's next (second) meeting on April 30th at 12:00 UTC in #debian-games needs the attention of the whole planet (pun intended)!

  • What: Debian/Ubuntu Games Team Meeting #2
  • When: 30.04.2011, 12:00:00 UTC
  • Where: #debian-games on irc.debian.org
  • Who: YOU!
For the agenda we have a whole bunch of leftovers from the first meeting, thus I did not plan any new items (besides of kicking Tolimar to be admin again instead of having the dream to drift away from his position ;)). As most of us are lazy and wont klick the wiki link to read the agenda, it's served here too:
  1. games and cross-distro collaboration
  2. pending, removed, orphaned, wnpp & suggested games
  3. freedesktop.org/games group
  4. sponsoring policy
  5. cleaning old, adding new admins (and users)
Do you still remember where you will be on April 30th at 12:00 UTC? No? #debian-games on irc.debian.org. And don't you dare to be quiet! ;)

Desktop in a shell: newsbeuter

Another week, another post from my desktop in a shell series. This time: newsbeuter, my RSS/Atom/whatever feed-reader of choice. Newsbeuter is a config-and-forget kind of tool. You only have to touch it when you change from a static ~/.newsbeuter/urls to Google Reader or something (like I did some time ago). In the following I will explain both ways (as both are short and it would not fill a whole post then *g*).

newsbeuter with a static urls file

First you create a ~/.newsbeuter/urls with all your feed URLs (one per line). Then you already can start newsbeuter and it will "just work". But you also can customize it (see newsbeuter's online doc) by writing a ~/.newsbeuter/config. Mine was rather short:
 auto-reload yes
 refresh-on-startup yes
 goto-next-feed no
Which means newsbeuter will refresh the feeds every 60 minutes (tuneable via reload-time) and on startup and won't jump to the next feed when pressing n in a feed which has no unread items. Yes, sorry, this is all. Newsbeuter just works ;)

newsbeuter with Google Reader

Want to use newsbeuter with your Google Reader account? Add
 urls-source "googlereader"
 googlereader-login "you@gmail.com"
 googlereader-password "password"
to your ~/.newsbeuter/config and it works :) Most people want to add googlereader-show-special-feeds no as they do not care about Google's suggestions etc. The only culprit here is than one has to use Google Reader to subscribe to feeds, as newsbeuter does not support this (it's a viewer only). Oh, and here comes the screenshot you waited for: And no, I do not post my config here, you have to copy-paste it from above, hard, isn't it? :)

Desktop in a shell: irssi

Continuing my series about my desktop in a shell, in this chapter I will present you my irssi setup. Irssi is the most customized part of my setup, using many scripts from the irssi-scripts Debian package and some "from the internet", handling 6 irc networks with a total of 34 channels plus JabberXMPP, ICQ, Twitter and identi.ca.

My "custom" irssi settings

I like my conversations to look like "Buddy, you rock" instead of "Buddy: you rock", so: /set completion_char , I also like *long highlighted text*, so: /set emphasis_multiword on Hide mIRC and ANSI colors when turned on. This can be used to eliminate angry fruit salad syndrome in some channels. (Quote from irssi.org/documentation/settings, do I have to say more?): /set hide_colors on When talking in more than one channel, it sometimes comes handy to repeat something from the past said in THAT channel, not searching though all: /set window_history on Tell irssi to shutup when away, noone will hear/see the beep anyways: /set beep_when_away off I want my screen to inform me about new messages, so I need this: /set bell_beeps on Beep for query text, notices, dcc, dcc text and hilight: /set beep_msg_level MSGS NOTICES DCC DCCMSGS HILIGH

My used irssi scripts

active_notice.pl (from irssi-scripts)

Show notices in the active window or the corresponding query instead of the status-window. No further configuration needed.

adv_windowlist.pl (from anti.teamidiot.de)

Some really smart windowlist, see my previous post about adv_windowlist.pl, I won't explain its features and settings here again.

autorealname.pl (from irssi-scripts)

Show peoples real-name when they join (my $nick ←→ $name memory is poor :() No further configuration needed.

chansort.pl (from irssi-scripts)

Automatically sort my channels alphabetically, grouped by network. Enable via /set chansort_autosort on <Update>kaimi asked me yesterday, whether chansort could ignore the network and just sort ALL channels in alphabetical order. Well, it could not, until yesterday ;) Fetch either the patch against chansort.pl or "my" chansort-ng.pl and set chansort_ignore_network to ON. You can also set chansort_ignore_windowtype to mix channels and queries if you like to.</Update>

hack-whois-in-current-window.pl (from dgl.cx)

Display /whois in the current window or the corresponding query instead of the status-window. No further configuration needed.

keepnick.pl (from irssi-scripts)

Restore my nick after it is free again (like after a ping timepout). Set the nick via /keepnick [-net chatnet] [nick]

nickserv.pl (from irssi-scripts)

Automatically authorize me on networks with NickServ. Enable by settings services address, nick and password via:
/nickserv addnet freenode NickServ@services.
/nickserv addnick freenode Zhenech mypass

screen_away.pl (from irssi-scripts)

Set away when screen is detached. Will be enabled automatically, but you maybe want to tweak screen_away_message :)

seen.pl (from irssi-scripts)

Add a /seen nick command to lookup when and where nick was online the last time. No further configuration needed.

trackbar.pl (from irssi-scripts)

Draw a line when you switch irssi windows so you can see which part of the conversation you have already seen. No further configuration needed.


I'm using BitlBee as my irssi-to-every-im gateway of choice ;) But while it sounds easy, my setup isn't. I am using BitlBee only to connect to jabber.die-welt.net, my Jabber/XMPP server. There I have a pyICQt instance running, to connect to ICQ via Jabber (yes, BitlBee would support that directly, but that would fail on me when I would like to connect from a different Jabber-client). Twitter and identi.ca are handled via Jabber too: identi.ca does support this by themself, for Twitter I use the tweet.im service. But besides of my strange setup, BitlBee is easy: apt-get install bitlbee, connect irssi to localhost:6667, you will be force-joined to &bitlbee, where you do:
register somepassword
account add Jabber you@jabberserber.example.com jabberpassword
account on 0
and done, you@jabberserver.example.com is online :) The all awaited screenshot (from my last irssi-post): And the whole ~/.irssi/config: http://files.die-welt.net/irssi-config.txt, read it carefully while waiting for the next post about newsbeuter :)

Desktop in a shell: mutt

Continuing my series about a desktop in a shell, today I will present you my mutt setup. I use mutt because it has no bugs and is a really good MUA for people loving consoles ;) First of all you have to know, that all my mail is forwarded to my server and sorted into Maildirs via maildrop, so I do not care about sorting on my "desktop", which just fetches the mail via IMAP from the server ;) I'm running mutt-patched from Debian Squeeze, so not all options may be available for you if you do not have the same patchset as I do. First, tell mutt to fetch mail from imap.die-welt.net via IMAP:

set imap_user=username
set imap_pass=password
set folder="imaps://imap.die-welt.net/INBOX"
set spoolfile="imaps://imap.die-welt.net/INBOX"
Now, enable IMAP-IDLE, list subscribed folders, reconnect to the server if needed and mark mail as read when you open it:
set imap_idle
set imap_check_subscribed
unset imap_passive
unset imap_peek
Let mutt save sent mail to the Sent directory on the IMAP server, and postponed mail to Drafts:
set record=+Sent
set postponed=+Drafts
Read mail should stay where it is:
set mbox="!"
We use IMAP-IDLE, thus check for new mail manually only every 90 seconds:
set mail_check=90
Instead timeout after 15 seconds if no user input is given:
set timeout=15
Set default mail from address to my default mail address:
set from=evgeni@golov.de
And send mail via mstmp (see below for mstmp configuration):
set sendmail="/usr/bin/msmtp"
Tell mutt which addresses I recieve mail to (danger, ugly regex!):
alternates (evgeni@(debian.org|golov.(de|eu))|sargentd@(die-welt|sargentd).net|evgeni.golov@uni-duesseldorf.de)
As mutt knows where I receive mail, let it set From accordingly:
set reverse_name
Let mutt cache some stuff and find its certificates:
set header_cache="~/.mutt/cache/headers"
set message_cachedir="~/.mutt/cache/bodies"
set certificate_file=~/.mutt/certificates
set ssl_ca_certificates_file=/etc/ssl/certs/ca-certificates.crt
Show only interesting headers in an useful order:
ignore headers *
unignore headers from to subject date cc
hdr_order from to cc subject date
Fix stupid MUAs behaviour (e.g. filenames like =?iso-8859-1?Q?file=5F=E4=5F991116=2Ezip?=):
set rfc2047_parameters
Beep on new mail, will generate a "!" in the window name in screen:
set beep_new
mutt-patched has the great sidebar patch, assign ctrl-n, ctrl-p to select next, prev folder, ctrl-o to open selected folder:
bind index \Cp sidebar-prev
bind index \Cn sidebar-next
bind index \Co sidebar-open
And toggle sidebar visibility with ctrl-b:
macro index \Cb '<enter-command>toggle sidebar_visible<enter><refresh>'
macro pager \Cb '<enter-command>toggle sidebar_visible<enter><redraw-screen>'
Since 1.5.20-2, mutt patched contains my sidebar-dotted and sidebar-sorted patches. Let mutt shorten the displayed path (e.g. debian-devel instead of INBOX.ml.debian-devel) and sort the folders (the are returned in random order when using imap_check_subscribed):
set sidebar_shortpath
set sidebar_sort
Now let's set some colors (that match the rest of my "desktop"):
color sidebar_new yellow default
color normal white default
color hdrdefault brightcyan default
color signature green default
color attachment brightyellow default
color quoted green default
color quoted1 white default
color tilde blue default
And add some useful macros for marking new and old messages as read:
macro index .n "<tag-pattern>~N<enter><tag-prefix><clear-flag>N<clear-flag>*" "Catchup all new messages"
macro index .o "<tag-pattern>~O<enter><tag-prefix><clear-flag>O<clear-flag>*" "Catchup all old messages"
When forwarding mail, I like it to be forwarded as an attachment (YMMV):
set mime_forward=yes
I'm using goobook in mutt to fetch my addressbook from Google. As there is no Debian package for goobook (yet), you have to install it yourself (via easy_install):
apt-get install python-argparse python-gdata python-simplejson python-keyring python-nose
easy_install goobook
Configuration is easy via ~/.goobookrc:
# If not given here, email and password is taken from .netrc using
# machine google.com
email: me@gmail.com
password: password
And then add the following to your .muttrc:
set query_command="goobook query '%s'"
bind editor  complete-query
macro index,pager a "<pipe-message>goobook add<return>" "add the sender address to Google contacts"
That's all for mutt, but... We are running mutt in a screen, so let's add the following to .screenrc to fix transparency and cut&paste (see http://wiki.mutt.org/?MuttFaq/Appearance):
 defbce on
 term screen-bce
And as mutt uses mstmp (yes, I know, mutt can handle SMTP itself...), this is my .msmtprc:
domain dorei.kerker.die-welt.net
tls on
account die-welt.net
host smtp.die-welt.net
from sargentd@die-welt.net
auth on
user username
password password
tls_starttls on
tls_certcheck off
# Set a default account
account default : die-welt.net
C'est tout! That is my personal mutt configuration, you can download it as one file here: my .muttrc. And as everyone loves screenshots, here is one: the default view of my mutt Oh, the next chapter will be about irssi, but not before next Sunday (March 6th) as I'll be offline for a week, skiing in Austria :)

Desktop in a shell

People are using computers, everywhere, really! ;) As you might guess correctly, so do I. Basically, I am using three computers: my laptop (ThinkPad X201s, awesome machine, but pabs told me not to post any more adverts for ThinkPads on Planet Debian *g*), my smartphone (Motorola Milestone, yes, that counts as a computer) and "random_pc" (for random as in my girlfriends or some other trusted (!!!) friends computer). My laptop is running Debian GNU/Linux unstable with Xfce4.6, my smartphone is running Android 2.2.1 Froyo, my girlfriend has Ubuntu with GNOME, a friend runs Debian unstable with GNOME, another one Arch Linux with KDE4 and so on. And on all these machines I want be able to work, which means I have to read mail and rss, chat via IRC, JabberXMPP and ICQ, have a look at my to-do list, ssh into different machines, write some code, tweet and dent etc. In the following series of posts I will describe how I can handle about 90% of my work on every (trusted) computer out there, using ssh, screen, mutt, irssi, BitlBee, newsbeuter etc. As I am describing the setup as a "Desktop in a shell", let's start with a login- and desktop/window-manager: ssh+screen.


Obviously, you need a machine to ssh into it, where the "Desktop" will live on. For me, that's my home router/fileserver/vm-server dorei, running Debian GNU/Linux LennySqueeze with OpenSSH as a kind of "login manager" ;) Yes, my user is allowed to login with a password instead of a public key. And well, that's all for the login-manager, no extra configuration needed.


After logging in, I start my "window-manager" with screen -rd, -r for reattach a running screen session, -d for detach it if it is already attached somewhere else. Or I can start a new session by just typing screen. Inside the screen I have multiple windows (one can create new ones with ^A c) with all the needed software running. I can switch windows by pressing ^A N, N being the number of the window, ^A n for the next window, ^A p for the previous one or ^A ^a for the last one. Or I can get a window-list with ^A w. If needed, I can rename windows with ^A A, followed by the new name. That should be enough for almost everyone. Let's just add a window-list to the bottom (as you might have seen on GNOME, Xfce, KDE and even Windows ;) by adding the following to the ~/.screenrc:
caption always " "                    # clear line before hardstatus
hardstatus alwayslastline "%{= kb}[ %{B}%H:$USER %{b}][ %=%{w}%?%-Lw%?%{b}(%{W}%n*%f %t%?(%u)%?%{b})%{w}%?%+Lw%?%?%= %{b}][%{B} %l %{B}%{W}%d.%0m %{b}]"
You get the current host- and username, the machine load and the date for free ;) Even if it is possible, I do not have any "autostart" like stuff in my .screenrc as the machine is running stable and I start the screen and the apps inside maybe once a year after a reboot.


My .screenrc looks like this:
# detach on hangup
  autodetach on
# don't display the copyright page
  startup_message off
# set scrollback to 2000 lines, default 100
  defscrollback 2000
# set silencewait to 15 seconds, default 30
  silencewait 15
# new shells should be started as login-shells
  shell -$SHELL
# make a fancy statusline
  caption always " "                    # clear line before hardstatus
  hardstatus alwayslastline "%{= kb}[ %{B}%H:$USER %{b}][ %=%{w}%?%-Lw%?%{b}(%{W}%n*%f %t%?(%u)%?%{b})%{w}%?%+Lw%?%?%= %{b}][%{B} %l %{B}%{W}%d.%0m %{b}]"
# make higlighting bold, black on blue background
  sorendition +b bk
# some fixes, no I do not know where they come from :)
  termcap  xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
  terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
  termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
  termcapinfo xterm* OL=100
  termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
  termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
  termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
  termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
  termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
  termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'
  termcapinfo xterm* be
  termcapinfo xterm|xterms|xs ti@:te=\E[2J
  termcapinfo wy75-42 xo:hs@
  termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J
  termcapinfo  hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
  termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
  terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
  termcapinfo linux C8
# some bindings
  bind k
  bind ^k
  bind .
  bind ^\
  bind \\
  bind ^h
  bind h
  bind 'w' windowlist -b
  bind 'W' windows
  bind 'K' kill
  bind 'I' login on
  bind 'O' login off
  bind '}' history
  bind = resize =
  bind + resize +3
  bind - resize -3
# Mutt demands this
# http://wiki.mutt.org/?MuttFaq/Appearance
 defbce on
 term screen-bce
That's all for my screen setup. The obvious, boring screenshot follows: See you next time, when I will present my mutt setup here.

Mustek PoweMust 1000 USB on Debian Squeeze

Some (long) time ago, I wrote an article how to setup a Mustek PowerMust 1000 USB on Debian Sarge. Since then Etch, Lenny and now Squeeze were released and the machine the UPS was attached to was replaced. Yesterday I have upgraded this machine from Lenny to Squeeze and of course nut has kicked me in the nuts, telling me it can't connect to the UPS. When I replaced the old machine, I had to connect the UPS via USB instead of serial, as the new machine has only one serial port and that one is needed for the serial console to my Sun Netra T1. On Lenny, I was using the megatec_usb driver which seems borked on Squeeze and is superseeded by the blazer_usb one. So here is my nut setup on Squeeze: nut.conf:

    driver = blazer_usb
    port = schrank
    vendorid = 0665
    productid = 5161
    desc = "Mustek PowerMust 1000"
Yes, port has to be set, but can be any random string. upsd.conf:
ACL all
ACL localhost
ACCEPT localhost
MONITOR powermust@localhost 1 nut nut master
SHUTDOWNCMD "/sbin/shutdown -h +0"
POWERDOWNFLAG /etc/killpower
CMDSCRIPT /upssched-cmd
I hope this helps someone ;)