Using bitmapped fonts (like artwiz) in Debian
January 4, 2016
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:
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:
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.
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:
PulseAudio command line control with pulseaudio-ctl
January 2, 2016
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.
Why doesn’t Thunar use your icon theme’s folder icons?
December 10, 2014
You change your icon theme and find that Thunar uses the stock Gnome icons for directories, like in this image:
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.
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.
2011: The year in screenshots
January 2, 2012
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.
2010: The year in screenshots
January 2, 2012
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
Making Linux remind me to meditate
November 27, 2010
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.