linux Syndicate content

» Kate linter plugin

Thu, 01/15/2009 - 18:58

Just a quicky: I wrote a little plugin for KTextEditor which supplies you with basic error checking when you save documents. Currently only PHP (via php -l) and JavaScript (via JavaScript Lint) are supported.

» Download script for Ebooks

Sat, 11/08/2008 - 17:28

After a long period of silence I present you the following bash script for downloading books from This is not a way to circumvent their login mechanisms, you will need proper rights to download books. But many students in Germany get free access to those ebooks via their universities. I for example study at the FU Berlin and put the script in my Zedat home folder and start the download process via SSH from home. Afterwards I download the tarball to my home system.

Read on for the script.

» Access klipper clipboard on CLI under KDE4

Wed, 08/13/2008 - 23:12

NOTE: find most recent version on github:

Here’s a little script you can save in your path and do things like

  1. # paste current clipboard into file
  2. clipboard > "some_file"
  3. # copy some file into clipboard
  4. cat "some_file" | clipboard

Actually I find it rather useful so I thought I should share it.

  1. #!/bin/bash
  3. # Access your KDE 4 klipper on the command line
  4. # usage:
  5. # ./clipboard
  6. # will output current contents of klipper
  7. # echo "foobar" | ./clipboard
  8. # will put "foobar" into your clipboard/klipper
  10. # check for stdin
  11. if ! tty -s && stdin=$(</dev/stdin) && [[ "$stdin" ]]; then
  12. # get the rest of stdin
  13. stdin=$stdin$'\n'$(cat)
  14. # oh, nice - user input! we set that as current
  15. # clipboard content
  16. qdbus org.kde.klipper /klipper setClipboardContents "$stdin"
  17. exit
  18. fi
  20. # if we reach this point no user input was given and we
  21. # print out the current contents of the clipboard
  22. qdbus org.kde.klipper /klipper getClipboardContents

As usually, save the file (attached below) in your $PATH and make it executable.

PS: Thanks to Martin Vidner for his article on D-BUS btw. - it gave me the proper dbus commands. PPS: Thanks the the various comments below!

» recent GeSHi contributions (apache, xorg, apt, performance, ...)

Wed, 06/18/2008 - 22:46

Your favourite syntax highlighter for web applications, GeSHi, recently got some new features and bug fixes. By yours sincerely. A rough summary of what I contributed:

  • various performance improvements, i.e. some speed optimizations and reduced memory consumptions (especially peak memory usage is down by roughly 1MB when highlighting geshi.php by itself)
  • minor bugfixes, including one which prevents some nasty PHP notices on PHP 5 systems to contaminate your precious log files
  • improved language files: bash, apache
  • added language files: GNU Gettext, Xorg configuration and Apt sources.list

Some of those features were already shipped with the recent release. But the two new language files and the improvements to the existing apache language file are currently only available via SVN. Wait for the next stable release which should be 1.0.8.

To see two pretty examples, read on after the break:

» LinuxTag Day One

Wed, 05/28/2008 - 15:29

Like last year I’m again standing at the Kubuntu Community booth at this years LinuxTag. Just now I’ve attended the keynote held by Aaron Seigo, ambassador of the KDE project. It was a very interesting talk which covered topics like Internet-Mobile-Desktop interaction, security, effects, Nokia and more. The most important parts roughly listed are:

  • you’ll one day be able to use the same (KDE) applications everywhere - Marble and Plasma for example already just compile and work on mobile devices
  • the internet will get much more embedded into your everyday applications. Marble with OpenStreetMap & Wikipedia support or Amarok with its storage backends (Lastfm, Jamendo etc. etc.) are good examples in this regard.
  • KDE4 is much more accessible than KDE3 thanks to QAccessible
  • security and privacy is not forgotten! This is free software, don’t forget that. Plasma Applet packages will get GPG signed (just like the DEB packages in Apt). And you have control over what data is send where - no Stasi 2.0 here!
  • Nokia is actively supporting KDE, fear not! And of course never underestimate the power of the Free Qt Foundation.

All in all it was a very good presentation with good questions - very informative! I’m totally going to check out kde4daily now - KDE 4.1 is impressive!

Just on a sidenote: LinuxTag is going well but Kubuntu and Ubuntu did not get any CDs shipped by Canonical which is a shame of course… Nevertheless the social aspect of this fair is awesome again - you get to know so many people and meet some which you’ve talked to over IRC for ages. Yesterday we went to a bar at Hackescher Markt with the KDE and Amarok guys and had a few beers, tomorrow will be the social event, which was absolutely humongous (to use a word Aaron teached me yesterday ;-) ) last year. And on Friday we’ll go to a restaurant with the Trolls (just like last year - thanks for the invitation!) and maybe go into a Karaoke Bar afterwards. Great! And of course on Saturday there is a Ubuntu Grill at the C-Base, organized by Ubuntu Berlin - neat! Last year that was a great finishing to a good fair.

If anybody wants to drop by we are in hall 7.2b, booth 124 (together with Amarok). If you need a free ticket, just send me an email ( See you here!

» How to generate proper DIN A4 sized plots with Gnuplot

Fri, 05/16/2008 - 21:04

I’ve had a major annoyance today: The plot generated by gnuplot looked good inside the wxt terminal but I simply couldn’t get a proper fullsized DIN A4 postscript exported. This is how I’ve done it now:

  1. Inside gnuplot:
    1. set size ratio 0.71 # this is the ratio of a DIN A4 page (21/29.7)
    2. set terminal postscript enhanced landscape "Arial" 9 # you can change landscape to portrait and the fontname and -size
    3. set output '' # this is your export file
    4. replot # or put your custom plot command here
  2. In a shell:
    1. ps2ps -sPAGESIZE=a4
  3. Now you can simply print `` from within KGhostView for example. Have fun!

» mp3dump take two - better audio quality

Sat, 03/29/2008 - 16:29

So just yesterday I’ve published a bash script which rips the audio stream of Flash Videos (*.flv) to mp3 format. It’s nice, fast and imo all-purpose. But I didn’t like the audio quality. Thus below you can find a second version of the script which is using mplayer and lame instead of ffmpeg. Usage and behaviour should be pretty much the same. Only the audio quality should be better on cost of a bit more computing.

Since it relies on the fact that the input *.flv video already uses MP3 encoding for its audio stream this might not work for every flash file! Youtube works just fine though. You can find the script after the break, it’s also attached below. For usage / installation / more information read the old article.

If you wonder why I reencode the audiodump with lame: The dumped mp3 file is considered by most (all?) audio players to be ~10x the length. A five minute video gets a 45 minute audio dumpfile. It plays fine but seeking is a mess. Reencoding fixes this. If you know an alternative which does not require reencoding or is generally faster - please drop a comment!

» Patching Kirocker Music Display for volume control via mouse scrolling

Fri, 03/28/2008 - 16:32

Kirocker is such a great application, it’s a pity the developer Sébastien Laoût has given up on it and is using Windows now!

Usually I only use the kicker applet, the full screen window is nice for parties though. But I didn’t like the way the applet handles scroll events: It seeks (if possible). Since I rarely seek when listening to music I’d rather have the behaviour of the Amarok tray icon: volume control!

I had a look inside the sources and found this part in src/coverdisplay.cpp:

  1. void CoverDisplay::wheelEvent(QWheelEvent *event)
  2. {
  3. if (areControlsShown()) {
  4. if (event->orientation() == Qt::Vertical) {
  5. PlayerInformation *infos = PlayerInformation::instance();
  6. if (infos->canSeek()) {
  7. int deltaSeconds = 10 * (event->delta() > 0 ? 1 : -1);
  8. m_infos->seekRelative(deltaSeconds);
  9. }
  10. } else {
  11. if (event->delta() > 0)
  12. AmarokApi::volumeUp();
  13. else
  14. AmarokApi::volumeDown();
  15. }
  16. }
  17. }

As you can see it already supports volume control via scrolling! The thing is I’ve disable four-way scrolling for my MX1000. Thus I’ve simply swapped the if statements and now I’m really happy with Kirocker. Here’s the updated snippet:

  1. void CoverDisplay::wheelEvent(QWheelEvent *event)
  2. {
  3. if (areControlsShown()) {
  4. if (event->orientation() == Qt::Vertical) {
  5. if (event->delta() > 0)
  6. AmarokApi::volumeUp();
  7. else
  8. AmarokApi::volumeDown();
  9. } else {
  10. PlayerInformation *infos = PlayerInformation::instance();
  11. if (infos->canSeek()) {
  12. int deltaSeconds = 10 * (event->delta() > 0 ? 1 : -1);
  13. m_infos->seekRelative(deltaSeconds);
  14. }
  15. }
  16. }
  17. }

Replace the old code, compile Kirocker, install it. Then restart kicker (killall kicker; sleep 1; kicker;) and Kirocker should accept scroll events in the way the Amarok tray icon does!

» mp3dump: Rip the audio stream of a Flash video to MP3

Fri, 03/28/2008 - 00:03

UPDATE: Also check out mp3dump part 2

On some undefined occasion you might want to dump the audio stream of a flash file. This is how you do it:

  1. Get the *.flv, e.g. visit youtube with Konqueror and check /tmp for a file like FlashV5SQLt - this is your FLV.
  2. Install some dependencies: ffmpeg is required, mp3info and ecasound are optional but strongly recommended.
  3. Download the script below (it’s attached!) and save it inside your $PATH, remember how you’ve called it!
  4. I’ve saved the script inside ~/.bin which is inside my $PATH so all I have to do now is running it:

    mp3dump FlashV5SQLt "Foo Bar" "All Your Base Are Belong To Us"

    This would rip the audio stream of FlashV5SQLt to a file named Foo Bar - All Your Base Are Belong To Us.mp3 - with emulated stereo sound and basic MP3 tags (artist and title). Coolio!

» Reinstall Nvidia Driver

Sat, 02/09/2008 - 03:41

For those of you, who use the original NVIDIA display driver and have to reinstall it with every kernel update: Here is a little bashscript for your convenience.

  1. #!/bin/bash
  2. sudo /etc/init.d/kdm stop
  3. sudo chvt 1
  4. sudo sh ~/Downloads/NVIDIA-Linux-x86-*.run --ui='none' -aNq
  5. sudo /etc/init.d/kdm start
  6. sudo chvt 7

Save it e.g. as ~/.bin/, make it executable (chmod +x ~/.bin/ Then put your NVIDIA driver (only the newest version please) into ~/Downloads/ (or change the path above). Now run your script.

Attention: Save all your work, since kdm will be stopped! You’ll lose all unsaved work!