I understand little of the complexity surrounding fonts in Debian (and most other Linux distributions). But I do know that to get the artwiz fonts (or other bitmapped fonts) properly installed has been challenging as the procedures to install fonts occasionally changed, and good documentation is hard to find. In 2008 I explained how to install the artwiz fonts in Ubuntu Hardy, but those guidelines have not worked for many years.

Which is a shame, because the artwiz fonts are wonderfully minimalistic. Here are a few examples:

artwiz-fonts

I had given up on installing these fonts a long time ago, but recently decided to give this another try. After a good amount of searching, I found a way that seems to work, at least on this system, running Debian Testing. I suppose that this should work also on Ubuntu, Linux Mint, or other Debian derivatives (please confirm this in the comments, if this is indeed the case!).

Here is what you have to do. First, download the artwiz fonts. (There are also version that support characters used in German and Swedish here; if you download those files, change the commands below where necessary.)

Unpack the bz2 archive:

tar xvjf artwiz-aleczapka-en-1.3.tar.bz2

Move into the new directory:

cd artwiz-aleczapka-en-1.3

Inside that directory you have all the .pcf font files. Before, those were the files that you would use, but apparently Debian no longer recognises .pcf font files, only .pcf.gz files. Therefore, you have to archive these with the following command:

gzip *.pcf

Now copy the entire artwiz-aleczapka-en-1.3 directory to /usr/share/fonts/X11/misc, with root privileges. If you use Ubuntu, add sudo before each command, as Ubuntu does not use root (su).

su
mv artwiz-aleczapka-en-1.3 /usr/share/fonts/X11/misc

Move into that last directory, and create an index of the font files that X will be able to use, still with root privileges:

su
cd /usr/share/fonts/X11/misc
mkfontdir
mkfontscale

By default Debian disables bitmapped fonts. Check whether there is a link to a file called 70-no-bitmaps.conf in /etc/fonts/conf.d/ directory. If there is, delete it.

Renew your font cache, as root (su or sudo):
fc-cache -f -v

Then enable the use of bitmapped fonts, as root:

dpkg-reconfigure fontconfig-config

You will be asked to answer three questions. These are the choices I selected:

fontconfig-config01

fontconfig-config02

fontconfig-config03

Then reconfigure your fontconfig settings, also as root:

dpkg-reconfigure fontconfig

Then, add the following line to ~/.xprofile (or ~/.xinitrc if you use startx), so you can use the fonts in X applications (like xterm, and xfontsel, but also dmenu):

xset fp+ "/usr/share/fonts/X11/misc/artwiz-aleczapka-en-1.3/" &

(According to this post from 2013, you should also be able to add this to /usr/share/X11/xorg.conf.d/, but that did not work for me.)

Once all this is done, you should be able to use the artwiz fonts in any X application. To prove that this does indeed work, here is a screenshot of xfontsel, selecting the nu font, and using nu as the font in Openbox.

xfontsel

To use these fonts in conky, I use ${font nu:size=7} in .conkyrc just before the command or text conky should display. Thus, ${font nu:size=7}${time %H:%M} gives the following:

conky-nu

I’ve long controlled the sound volume with keybindings in Openbox, but now that PulseAudio has become default, I keep forgetting how to do so with this new sound server. You’ll find a variety of suggestions on how to control PulseAudio from the command line online, but most of them don’t work for me.

I’ve found this to be the easiest way to control PulseAudio from the command line, using pulseaudio-ctl.

Volume up:
/usr/bin/pulseaudio-ctl up

Volume down:
/usr/bin/pulseaudio-ctl down

Mute:
/usr/bin/pulseaudio-ctl mute-input

The default of the “up” and “down” commands is 5%. You can specify a different percentage. For example, if you want to increase the volume by 10%, use the following command:

/usr/bin/pulseaudio-ctl up 10

You can also set the volume at a certain percentage. If you want to set the volume at 50%, use the following command:

/usr/bin/pulseaudio-ctl set 50

Or you can set the volume at 50%, if it is currently higher than that with this command:

/usr/bin/pulseaudio-ctl atmost 50

For more options, read pulseaudio-ctl’s documentation.

You change your icon theme and find that Thunar uses the stock Gnome icons for directories, like in this image:

thunar_no-folders

Other file managers–Nautilus, Caja, PCManFM–use your theme’s folder icons, but Thunar refuses to obey. The official Xfce documentation gives you a few workarounds, but you quickly realise these are outdated and don’t have any effect.

How do you fix this?

For some reason, Thunar looks for an inode-directory icon for folder icons. Older themes often don’t have this icon, but you can easily create it as a symbolic link. Here is how you do that:

ln -s ~/.icons/my-icon-theme/scalable/places/folder.png ~/.icons/my-icon-theme/scalable/places/inode-directory.png

Adjust this command to your needs. Make sure you replace my-icon-theme with the name of your icon theme (for icon themes installed as root, look for them in /usr/share/icons/my-icon-theme). Also double check what file type your icons are. Many icon themes use .svg files (scalable vector graphics), instead of .png files (portable network graphics) as in the above example.

Once that is done, relaunch Thunar, and your directories will use the folder icons of your chosen theme.

thunar_folders

For a very long time I’ve used a script that either raises a running application or, if the application has not been launched yet, launches a new instance of the application. I use that script for some of my most used applications–like Thunar–and it has helped me enormously to keep my desktop tidy.

Tonight I decided it would be great to be able to do that with any application. Wouldn’t it be nifty if I could use this script in combination with dmenu?

It would indeed. Here is the result:

#!/bin/sh

CMD=$(dmenu_path | dmenu -b -fn '-*-nu-*-*-*-*-*-*-*-*-*-*-*-*' -nb '#545043' -nf '#D2C7A7' -sb '#D2C7A7' -sf '#545043')

# if no instance of the app has been started, launch one now
if [ -z "`wmctrl -lx | grep -i $CMD`" ]; then
$CMD &
else
# search for existing app on any desktop and move it to the current desktop
app_on_any_desk=`wmctrl -lx | grep -i $CMD | cut -d ' ' -f 1`
wmctrl -i -R $app_on_any_desk
fi;

If no instance of the application you launched with dmenu is found this script will launch a new one. If there is an instance running, it will move it to the current desktop and focus it. If you prefer to move to the desktop where the application is currently running instead, change the last wmctrl command to wmctrl -i -a $app_on_any_desk.

You’ll need to make the script executable (chmod +x path_to_script) and you’ll need both wmctrl and dmenu installed. Dmenu is part of the suckless-tools package on Debian Testing and recent Ubuntu versions.

The colours dmenu uses in this script are the Erthe colours. Change them to your liking if you don’t like brown.

You can find this script (and a few others) also on my new github repository.

bbdock on Debian Wheezy

July 21, 2012

If you’ve tried to compile the source code for bbdock, that nifty little blackbox dock, on Debian Wheezy (and presumably other recent distros) without much success, try Markus Fisch’s bbdock code on github. If you have the proper dependencies installed (libx11-dev and libpng-dev on Debian) it should compile with the usual ./configure, make, and make install.

About a year ago I retired most of my computers, and am now left with only two: Loka, my old desktop (now with a new 23″ screen), and Savitar, a Thinkpad X41 I bought about 18 months ago.

Both computers run Debian Testing. My main desktop environments and window managers on Loka have been Xfce with Openbox and WindowMaker, which I rediscovered this year. On Savitar, I used only Openbox and Awesome.

Loka

Xfce 4.6 with Openbox, using the Alghattas Openbox and Gtk theme, and the Elementary icons. I don’t remember where I found the wallpaper.

Xfce 4.6 with Openbox, using the Alghattas Openbox and Gtk theme, the Elementary icons, and this wallpaper.

Xfce 4.8 with Openbox, using the Erthe Openbox and Gtk theme, the AnyColorYouLike icons, and part of this image as wallpaper.

Xfce 4.8 with Openbox, using the Erthe Openbox and Gtk theme, and the AnyColorYouLike icons.

WindowMaker, with the ShikiBlack WindowMaker theme, the Shiki-JetBlack Gtk theme, and the Moblin icons. I don’t remember where I found the wallpaper.

Savitar

Awesome, with the Children of the Earth Awesome theme, Gtk theme, and icons, and Caspar David Friedrich’s Monk am See.

Openbox with the Children of the Earth Openbox theme.

I had written this a year ago, but somehow forgot to post it. But here are my screenshots from two years ago.

As I’ve been doing for a few years now, I am posting screenshots of my desktops of the past year, to amuse you (nearly everyone likes to look at screenshots), to document my changing aesthetics, and to capture my mood of the year as reflected in these images.

Below are the screenshots of the computers I’ve used in the past year. Aryaman is a Thinkpad 240 I bought on ebay for £10. I used it particularly when travelling, or when working in a library. I no longer use Mitra (my 11 year old Dell Inspiron 2500) and Yantra (my 10 year old Compaq Presario), but recently gave them away to others who found some good use for them. Loka is my old desktop.

Aryaman


Musca 0.9.24

Loka

Openbox 3.4.10 in Xfce 4.6, with the Fearless Openbox theme, the Umbra Gtk theme, and the Iris icon theme.

Pekwm 0.1.11, with the Elegance Pekwm and Gtk theme, and the Iris icon theme.

Pekwm 0.1.12, with an updated Groove Pekwm and Gtk theme, and the nuoveXT-1.7 icon theme.

Pekwm 0.1.12, with the Groove Pekwm and Gtk theme. The icons are from the Any Colour You Like icon theme.

Pekwm 0.1.12, with the Groove Pekwm and Gtk theme. The wallpaper is home made.

Openbox 3.4.10, with the Brume Openbox and Gtk theme.

Xelatex and Gedit

February 7, 2011

For all my Tex needs, I use Gedit with the excellent Latex plugin. For a while I used Texworks. I particularly liked its “Jump to pdf” and “Jump to source” feature (which I wish more Latex editors would implement), but in the end, its sparse customisability or lack of extensibility and its fairly basic default features led me back to Gedit (after a brief stop at Gummi, a young, but promising Latex editor).

The Gedit Latex plugin uses rubber to build the pdf of your text file. I write my documents in Xelatex, however, and not in Latex, because I need Unicode fonts (for Devanagari and diacritics). As it turns out, it is really easy to use rubber with Xelatex. Simply add the following line to your .tex file:

% rubber: set program xelatex

When I’m working on my computer, I often lose track of time. In itself I don’t mind this, but the downside is that I often am not aware of the different sandhyas, the different phases of the day (sunrise, noon and sunset) at which I should meditate on the Gayatri mantras I received at initiation.

Luckily, with Linux it is very easy to have your computer remind you that it is nearly time to chant. All you need is crontab and gxmessage. Crontab is part of the default installation of many distributions, and gxmessage is easily installed (. Here is how you would do it.

First of all, you’ll need to create a Gxmessage script. Here is what I use:

#!/bin/sh

gmessage "It is time to chant your Gayatri mantras" -center -title "Take action" -font "Sans bold 7" -geometry 300x100 -default "Remind me later" -center -buttons "_Remind me later":1,"I'll _chant now":2 >/dev/null

case $? in
1)
(sleep 10m && /home/USERNAME/.scripts/Gayatri_gmessage);;

2)
echo "Exit";;

esac

Save the file in a convenient location as (I keep it in ~/.scripts/) as Gayatri_reminder or whatever else you like, and make the file executable with the following command:

chmod +x /home/USERNAME/.scripts/Gayatri_reminder

(Wherever you save it, make sure that the line which reads “sleep 10m && /home/USERNAME/.scripts/Gayatri_gmessage” in the above example points to the location of your script.)

If you’d like to test the script, you should be able to either double click on the file, or to enter the full path to the file in a terminal to launch Gxmessage. The script should launch a window that looks like this (it should follow your general Gtk theme):

If you click “Remind me later” the window will pop up again 10 minutes later; if you click “I’ll chant now” the message will simply close. You can change those settings (including the text that is displayed) by editing the script I gave above.

Now you’ll need to tell your operating system that you want this script to be run every day at noon and at 6pm. To accomplish this, you can use cron and crontab. Cron is a daemon that executes scheduled commands. It is normally started automatically when you start your computer. Crontab is a little application that allows you to add or remove scheduled commands for individual users. To add an entry for your Gayatri reminder message, start crontab in the edit mode with the following command:

crontab -e

If you have never used crontab before, an empty file should open that looks like this:

# m h dom mon dow command

This indicates the structure you need to use for crontab entries: for each entry you can specify the minute (0-59), the hour (0-23, 0 = midnight), the day of the month (1-31),the month (1-12), and the day of the week (0-6, 0 = Sunday), and finally the command you want to be executed at that time. If you want to run a command every day of the month, or every day of the week, you can enter an asterisk (*) as the value to that setting.If you want to cron to launch an application with a graphical user interface, such as Gxmessage, you need to specify what screen to display it on with the command export DISPLAY=:0. If you only have a single screen, you need to use DISPLAY=:0; if you have more than one screen and would like the message to appear not on the first screen change the number accordingly (to :1 or :2).

So if you want this Gxmessage script to be run every day at noon,and at 6pm, you would add two entries in crontab that looks like this:

00 12 * * * export DISPLAY=:0 && /home/USERNAME/.scripts/Gayatri_reminder
00 18 * * * export DISPLAY=:0 && /home/USERNAME/.scripts/Gayatri_reminder

This will run the script every day of every month and every day of the week (the three *s) at 00 minutes past 12 and 18 hours. The command part of each line ( export DISPLAY=:0 && /home/USERNAME/.scripts/Gayatri_gmessage) specifies that the Gayatri_reminder script is to be run on the first screen.

There are some obvious drawbacks to this system. If you want to be very strict and meditate on the Gayatri mantras at the exact sandhya times, this method is not very practical, unless you live close to the equator where the sunrise, sunset and when the sun reaches its zenith are nearly at the same time of day all year round. I started writing a script that took the exact sunset times into consideration, and had some success, but lost that script and can’t be bothered to rewrite it. Maybe I’ll revisit it in the future, but for now this system works fine. I’d rather chant my Gayatri mantras slightly off time, than forget them entirely.

A simple timer

June 16, 2010

This post is really meant for me, to remind me later how to do this, but perhaps you’ll find something useful in it too.

This is a little script using zenity that functions as a timer . When I run the script I am asked to enter a task description and then in how many minutes I want to be reminded of that (“10” is ten seconds, “10m” is ten minutes). When the time is up, a simple dialog appears that reminds me to do the task I set myself.

#!/bin/bash
#
REMINDER=`zenity --entry --title="Timer" \
 --text="What should I do?"`
WAIT=`zenity --entry --title="Timer" \
 --text="When should I do this?"`
sleep $WAIT
zenity --info --title="Timer" --text="$REMINDER"

Now I no longer need to launch a panel to run a timer panel applet (which I am sorry to admit I did for a while). This is simple and works great.