Installing Dropbox in Gentoo running KDE

kfilebox
I had never used Dropbox before and had no intention of doing so, but today a work colleague sent me some large files via Dropbox so I was forced to sign up. I tried to install Dropbox on my main laptop running Gentoo Linux and KDE but, for a well-known application, I had a surprising amount of trouble, hence this blog post.

To begin with, I found the following Dropbox-related packages:

# eix dropbox
* gnome-extra/nautilus-dropbox
Available versions: (~)0.6.9 (~)0.7.0 0.7.1 (~)1.4.0 {debug}
Homepage: http://www.dropbox.com/
Description: Store, Sync and Share Files Online
.
* net-misc/dropbox
Available versions: 1.2.48-r1^ms (~)1.2.51-r2^ms (~)1.4.3-r1^ms (~)1.4.7-r1^ms (~)1.4.7-r2^ms (~)1.4.17^ms (~)1.4.23^ms (~)1.6.16^ms {X +librsync-bundled}
Homepage: http://dropbox.com/
Description: Dropbox daemon (pretends to be GUI-less)
.
* net-misc/dropbox-cli
Available versions: 1 1-r1 {PYTHON_TARGETS="python2_6 python2_7"}
Homepage: http://www.dropbox.com/
Description: Cli interface for dropbox daemon (python)
.
* xfce-extra/thunar-dropbox [1]
Available versions: [m](~)0.2.0
Homepage: http://www.softwarebakery.com/maato/thunar-dropbox.html
Description: Plugin for Thunar that adds context-menu items for Dropbox
.
[1] "sabayon" /var/lib/layman/sabayon
.
Found 4 matches.

But I don’t have GNOME or Xfce installed on my main laptop, so the first and last packages were of no interest. A quick search on the Web turned up Kfilebox, which seemed to be exactly what I needed. I was pleased to find that the package is in the main Portage tree:

# eix kfilebox
* kde-misc/kfilebox
Available versions: (4) (~)0.4.8 (~)0.4.9
{LINGUAS="ar br cs de el es fr gl it lt nl pl pt ru si tr zh zh_CN"}
Homepage: http://kdropbox.deuteros.es/
Description: KDE dropbox client

So I installed kfilebox, dropbox and dropbox-cli, thinking I would need them all. Then, before doing anything else, I surfed to the Dropbox Web site and signed up for an account.

I launched Konsole and entered the command kfilebox. A window popped-up telling me that the Dropbox Daemon was being downloaded, then another window popped up offering me two options/buttons: ‘Run gtk based installer’ and ‘Or simply link account’. I clicked on the latter, thinking that was all I needed to do as I had already signed up for an account via the Dropbox Web site. But a Dropbox icon did not appear in the Panel, nor did Dolphin show a Dropbox folder icon in my home directory, and the KDE Notifications widget kept popping up notification after notification from Kfilebox to “Please visit url to link to this machine”. The trouble was that clicking on the apparent link in the notifications did nothing.

The directories .dropbox and .dropbox-dist existed in my home directory, and the contents of /home/fitzcarraldo/.kde4/share/config/kfileboxrc were as follows:

[General]
AutoStart=true
Browser=rekonq
DropboxDir=/home/fitzcarraldo/.dropbox-dist/
FileManager=dolphin
GtkUiDisabled=true
IconSet=default
ShowNotifications=true
StartDaemon=true

As the rekonq Web browser is not installed on this laptop, I edited the file and changed Browser=rekonq to Browser=firefox then rebooted, but it made no difference.

So I uninstalled everything:

# emerge -C kfilebox dropbox dropbox-cli
# rm -rf /home/fitzcarraldo/.dropbox
# rm -rf /home/fitzcarraldo/.dropbox-dist
# rm /home/fitzcarraldo/.kde4/share/config/kfileboxrc

then rebooted and reinstalled only Kfilebox:

# emerge kfilebox

I then launched Konsole and entered the command kfilebox. The pop-up window appeared notifying me that the Dropbox Daemon was being downloaded, followed by the pop-up window offering me the choice of running the gtk-based installer or simply linking the account. This time I chose the option to run the gtk-based installer and just followed the intuitive instructions in the various pop-up windows that followed, one of which offered to create a new Dropbox account or to link to an existing Dropbox account. As I wanted to do the latter I entered my e-mail address and Dropbox password, a Dropbox icon then appeared on the Panel and a Dropbox folder icon is now visible in Dolphin.

I checked the contents of ~/.kde4/share/config/kfileboxrc and they were the same as listed above, so I edited the file to replace rekonq with firefox, although I’m not sure yet what (if anything) that does, as Dropbox is new to me and I’m still learning. Anyway, the important thing is that I could now click on the ‘View folder’ button in an e-mail sent to me by a colleague and the files uploaded by my colleague were automatically downloaded into the ~/Dropbox directory.

Switching the display quickly between a laptop monitor and an external monitor or projector in Linux

laptop_with_external_monitor_and_keyboardI connect my laptop to an external keyboard and an external monitor or projector in various offices and at home, and each of the monitors has a different resolution. Fn-F3 on my laptop keyboard allows me to toggle between monitors, but I want more control (including the ability to specify the resolution of the external display). Now, I find the GPU manufacturer’s application and the Desktop Environment’s GUI for switching monitors and changing screen resolution rather cumbersome, so I wanted an icon on the Desktop that I could double-click to switch monitors without having to enter the root user’s password and fiddle around too much. So I decided to create some simple Bash scripts and associated Desktop Config files with nice-looking icons on the desktop, which I can launch easily and quickly by double-clicking. Obviously the resolutions are limited to the range of resolutions supported by the GPU and external monitor.

The suite of Desktop Config files I created have self-explanatory names:

$ cd ~/Desktop
$ ls -1 Switch*
Switch_OFF_laptop_monitor_if_external_monitor_is_connected
Switch_OFF_laptop_monitor_if_external_monitor_is_connected_auto
Switch_ON_laptop_monitor_and_external_monitor
Switch_ON_laptop_monitor_and_switch_off_external_monitor
$ ls -1 Toggle*
Toggle_display

The difference between Switch_OFF_laptop_monitor_if_external_monitor_is_connected and Switch_OFF_laptop_monitor_if_external_monitor_is_connected_auto is that the former prompts for the resolution of the external monitor whereas the latter tries to find the resolution automatically. I have both because I have found that, for some external display devices (e.g. projectors), it is handy to have the ability to specify the resolution manually.

Switch off the laptop monitor if an external monitor is connected (find resolution automatically)

The Desktop Config file I double-click the most is ~/Desktop/Switch_OFF_laptop_monitor_if_external_monitor_is_connected_auto, and it contains the following text:

[Desktop Entry]
Comment[en_GB]=switch off laptop monitor if external monitor is connected auto
Comment=switch off laptop monitor if external monitor is connected auto
Exec=sh /home/fitzcarraldo/switch_off_laptop_monitor_if_external_monitor_is_connected_auto.sh
GenericName[en_GB]=Switch off laptop monitor if external monitor is connected auto
GenericName=Switch off laptop monitor if external monitor is connected auto
Icon=/home/fitzcarraldo/Pictures/Icons/display.png
MimeType=
Name[en_GB]=Switch_OFF_laptop_monitor_if_external_monitor_is_connected_auto
Name=Switch_OFF_laptop_monitor_if_external_monitor_is_connected_auto
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

The Bash script it launches, ~/switch_off_laptop_monitor_if_external_monitor_is_connected_auto.sh, contains the following code:

#!/bin/bash
if xrandr -q | grep "CRT1 connected"; then
  xrandr --output LVDS --off
  xrandr --output CRT1 --off
  xrandr --output CRT1 --auto
else
  xrandr --output CRT1 --off
  xrandr --output LVDS --off
  xrandr --output LVDS --mode 1920x1080
# 1920x1080 is the native resolution of my laptop monitor
fi

Don’t forget to make them executable:

$ chmod +x /home/fitzcarraldo/Desktop/Switch_OFF_laptop_monitor_if_external_monitor_is_connected_auto
$ chmod +x /home/fitzcarraldo/switch_off_laptop_monitor_if_external_monitor_is_connected_auto.sh

If you’re wondering how I knew I had to specify ‘CRT1′ and ‘LVDS’ in the Bash script, I used the xrandr command to find out what names the GPU gives the monitors:

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 1920 x 1920
LVDS connected (normal left inverted right x axis y axis)
1920x1080 60.0 +
1680x1050 60.0
1400x1050 60.0
1600x900 60.0
1280x1024 60.0
1440x900 60.0
1280x960 60.0
1280x768 60.0
1280x720 60.0
1024x768 60.0
1024x600 60.0
800x600 60.0
800x480 60.0
640x480 60.0
DFP1 disconnected (normal left inverted right x axis y axis)
CRT1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 476mm x 268mm
1920x1080 60.0*+
1280x1024 75.0 60.0
1280x960 60.0
1280x800 59.8
1152x864 75.0
1280x720 60.0
1024x768 75.0 70.1 60.0
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 67.0 59.9

Switch off the laptop monitor if an external monitor is connected (enter resolution)

The Desktop Config file I double-click is ~/Desktop/Switch_OFF_laptop_monitor_if_external_monitor_is_connected, and it contains the following text:

[Desktop Entry]
Comment[en_GB]=switch off laptop monitor if external monitor is connected
Comment=switch off laptop monitor if external monitor is connected
Exec=sh /home/fitzcarraldo/System_Administration/switch_off_laptop_monitor_if_external_monitor_is_connected.sh
GenericName[en_GB]=Switch off laptop monitor if external monitor is connected
GenericName=Switch off laptop monitor if external monitor is connected
Icon=/home/fitzcarraldo/Pictures/Icons/display.png
MimeType=
Name[en_GB]=Switch_OFF_laptop_monitor_if_external_monitor_is_connected
Name=Switch_OFF_laptop_monitor_if_external_monitor_is_connected
Path=
StartupNotify=true
Terminal=true
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

The Bash script it launches, ~/switch_off_laptop_monitor_if_external_monitor_is_connected.sh, contains the following code:

#!/bin/bash
if xrandr -q | grep "CRT1 connected"; then
echo -n "Enter resolution width of external monitor (hint 1920 Doha, 1440 home): "
read EXTERNAL_WIDTH
echo -n "Enter resoluton height of external monitor (hint 1080 Doha, 900 home): "
read EXTERNAL_HEIGHT
  xrandr --output LVDS --off
  xrandr --output CRT1 --off
  xrandr --output CRT1 --mode $EXTERNAL_WIDTH"x"$EXTERNAL_HEIGHT
else
  xrandr --output CRT1 --off
  xrandr --output LVDS --off
  xrandr --output LVDS --mode 1920x1080
# 1920x1080 is the native resolution of my laptop monitor
fi

Don’t forget to make them executable:

$ chmod +x /home/fitzcarraldo/Desktop/Switch_OFF_laptop_monitor_if_external_monitor_is_connected
$ chmod +x /home/fitzcarraldo/switch_off_laptop_monitor_if_external_monitor_is_connected.sh

Switch on the laptop monitor and external monitor simultaneously

I don’t need to use this one much, only when I am using an external monitor but suddenly want to use the laptop’s built-in Webcam and so have to open fully the laptop’s lid. The file ~/Desktop/Switch_ON_laptop_monitor_and_external_monitor contains the following text:

[Desktop Entry]
Comment[en_GB]=switch_ON_laptop_monitor_and_external_monitor
Comment=switch_ON_laptop_monitor_and_external_monitor
Exec=sh /home/fitzcarraldo/switch_on_laptop_monitor_and_external_monitor.sh
GenericName[en_GB]=Switch_ON_laptop_monitor_and_external_monitor
GenericName=Switch_ON_laptop_monitor_and_external_monitor
Icon=/home/fitzcarraldo/Pictures/Icons/display.png
MimeType=
Name[en_GB]=Switch_ON_laptop_monitor_and_external_monitor
Name=Switch_ON_laptop_monitor_and_external_monitor
Path=
StartupNotify=true
Terminal=true
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

and the Bash script it calls, ~/switch_on_laptop_monitor_and_external_monitor.sh, contains the following code:

#!/bin/bash
if xrandr -q | grep "CRT1 connected"; then
  echo "Note that the resolution specified must be the same for both monitors, and must be achievable on both monitors."
  echo -n "Enter resolution width of external monitor (hint 1920 office, 1440 home): "
  read EXTERNAL_WIDTH
  echo -n "Enter resoluton height of external monitor (hint 1080 office, 900 home): "
  read EXTERNAL_HEIGHT
  #xrandr --output LVDS --off
  xrandr --output LVDS --mode $EXTERNAL_WIDTH"x"$EXTERNAL_HEIGHT
  xrandr --output CRT1 --off
  xrandr --output CRT1 --mode $EXTERNAL_WIDTH"x"$EXTERNAL_HEIGHT
else
  xrandr --output CRT1 --off
  xrandr --output LVDS --off
  xrandr --output LVDS --mode 1920x1080
# 1920x1080 is the native resolution of my laptop monitor
fi

Don’t forget to make them executable:

$ chmod +x /home/fitzcarraldo/Desktop/Switch_ON_laptop_monitor_and_external_monitor
$ chmod +x /home/fitzcarraldo/switch_on_laptop_monitor_and_external_monitor.sh

Switch on the laptop monitor and switch off an external monitor

I don’t need to use this one much either, given that the display mode reverts to the laptop monitor after I reboot or shutdown/power-up the laptop. The file ~/Desktop/Switch_ON_laptop_monitor_and_external_monitor contains the following text:

[Desktop Entry]
Comment[en_GB]=switch on laptop monitor and switch off external monitor
Comment=switch on laptop monitor and switch off external monitor
Exec=sh /home/fitzcarraldo/switch_on_laptop_monitor_and_switch_off_external_monitor.sh
GenericName[en_GB]=Switch on laptop monitor and switch off external monitor
GenericName=Switch on laptop monitor and switch off external monitor
Icon=computer-laptop
MimeType=
Name[en_GB]=Switch_ON_laptop_monitor_and_switch_off_external_monitor
Name=Switch_ON_laptop_monitor_and_switch_off_external_monitor
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

The Bash script it launches, ~/switch_on_laptop_monitor_and_switch_off_external_monitor.sh, contains the following code:

#!/bin/bash
xrandr --output CRT1 --off
xrandr --output LVDS --auto
xrandr --output LVDS --mode 1920x1080
# 1920x1080 is the native resolution of my laptop monitor

I did also create a fifth Desktop Config file and associated Bash script, to toggle between the three modes (laptop monitor only > both monitors > external monitor only) rather than having to double-click three different icons. But, to be honest, it’s quicker and easier to have the three icons and double-click on the one I want rather than toggling through three display modes. Anyway, in case you are interested, the Desktop Config file ~/Desktop/Toggle_Display contains the follow text:

[Desktop Entry]
Comment[en_GB]=Toggle between laptop monitor, external monitor and both
Comment=Toggle between laptop monitor, external monitor and both
Exec=sh /home/fitzcarraldo/toggle_display.sh
GenericName[en_GB]=Toggle between laptop monitor, external monitor and both
GenericName=Toggle between laptop monitor, external monitor and both
Icon=video-display
MimeType=
Name[en_GB]=Toggle_display
Name=Toggle_display
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

and the Bash script it launches, ~/switch_on_laptop_monitor_and_external_monitor.sh, contains the following code:

#!/bin/sh

# Using the xrandr command I found that the two video outputs from my laptop are named LVDS
# (the internal display) and CRT1 (the external display driven by the laptop's VGA socket).
# My external monitor at home has a resolution of 1440x900.

CONNECTED=`xrandr | grep -i ' connected' | grep LVDS | awk '{print $1}'`
CONNECTED="${CONNECTED} `xrandr | grep -i ' connected' | grep CRT | awk '{print $1}'`"

ENABLED=`awk '{print;exit}' ~/displays_enabled 2>/dev/null`

if [ "$CONNECTED" = "LVDS" -o "$CONNECTED" = "LVDS " -o "$CONNECTED" = " LVDS" ]; then
        # Only the internal display is connected, so don't do anything.
        echo "LVDS" > ~/displays_enabled
        ENABLED="LVDS"
        xrandr --output CRT1 --off
        xrandr --output LVDS --off
        xrandr --output LVDS --auto
        exit 0
elif [ "$CONNECTED" = "LVDS CRT1" ]; then
        # Both the internal and external displays are connected, so let's toggle
        # LVDS > LVDS,CRT1 > CRT1

        EXTERNALRES=`xrandr | awk 'c&&c--;/ connected/{c=1}' | awk '{print $1}' | grep 1440x900`
        if [ "$ENABLED" = "LVDS" ]; then
        # Switching on both displays.
                xrandr --output LVDS --off
                if [ "$EXTERNALRES" = "1440x900" ]; then
                         xrandr --output LVDS --mode 1440x900
                         xrandr --output CRT1 --off
                         xrandr --output CRT1 --auto
                else
                         xrandr --output LVDS --auto
                         xrandr --output CRT1 --off
                         xrandr --output CRT1 --auto
                fi
                ENABLED="LVDS CRT1"
                echo "LVDS CRT1" > ~/displays_enabled
        elif [ "$ENABLED" = "LVDS CRT1" ]; then
        # Switching on only external display.
                xrandr --output LVDS --off
                xrandr --output CRT1 --off
                xrandr --output CRT1 --auto
                ENABLED="CRT1"
                echo "CRT1" > ~/displays_enabled
        else
        # Switching on only internal display.
                xrandr --output CRT1 --off
                xrandr --output LVDS --off
                xrandr --output LVDS --auto
                ENABLED="LVDS"
                echo "LVDS" > ~/displays_enabled
        fi
fi

As I use KDE, I also used System Settings > Shortcuts and Gestures | Custom Shortcuts to create a keyboard shortcut which I named ‘Toggle display’, with Meta+P as Trigger and sh ~/toggle_display.sh as Action, but I tend to use the mouse rather than the keyboard in any case.

By the way, you might think some of the xrandr commands in the above Bash scripts are redundant. You would be correct in thinking that, but in practice I found that the displays did not switch if I didn’t include the additional commands shown (due to a bug in xrandr, perhaps?). Even then, when I switch to an external monitor, occasionally the screen resolution is slightly too big or too small, so I placed the icons at the top left of the desktop so that they are always accessible and I can just double-click on the same icon again if necessary. As I’m using KDE, I placed a Folder View Plasmoid for ~/Desktop/ at the top left of the desktop, as you can see in the screenshot.

Desktop showing icons for switching between monitors

Footnote

I’ve been using the above method of switching between displays for a couple of years now with an AMD ATI GPU. It works nicely and suits my needs perfectly. AMD has supported xrandr since 2008 (see Ref. 1), whereas NVIDIA only began to support xrandr last year (see Ref. 2) so I’m not sure how well these scripts would work with NVIDIA GPUs.

Ref. 1: AMD Catalyst 8.9 Gets WINE Fix, RandR 1.2 Support, September 18, 2008
Ref. 2: NVIDIA’s 302 Linux Driver Finally Has RandR 1.2/1.3, May 2, 2012

Setting the wireless regulatory domain in Linux on your laptop

I travel internationally and want to make sure that my laptop uses the legal wireless networking frequencies in the country I am visiting. In Linux, CRDA (Central Regulatory Domain Agent) is the udev helper used to communicate between userspace and the kernel, and it enables you to view and alter the wireless regulatory domain your kernel uses. For more information see the Regulatory page on the Linux Wireless Wiki site.

CFG80211 is the Linux wireless LAN (802.11) configuration API. The kernel on my main laptop has the following configuration settings relating to CFG80211:

# cat /usr/src/linux/.config | grep CFG80211
CONFIG_CFG80211=m
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_REG_DEBUG is not set
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
CONFIG_CFG80211_WEXT=y

and the cfg80211 module is loaded:

# lsmod | grep cfg80211
cfg80211 145747 3 iwlwifi,mac80211,iwldvm

I have the package crda installed, and I have the following udev rule file /etc/udev/rules.d/regulatory.rules to allow the kernel to communicate with userspace:

KERNEL=="regulatory*", ACTION=="change", SUBSYSTEM=="platform", RUN+="/sbin/crda"

So, how do you check which wireless regulatory domain your kernel is currently using, and switch to another domain if necessary? These tasks are performed using the iw command. You’ll need to install the package iw if it is not already installed.

To see the regulatory domain your laptop is using now, enter the following command as root user:

iw reg get

When I use the above command on my laptop after start-up, I normally see the following:

# iw reg get
country 00:
(2402 - 2472 @ 40), (3, 20)
(2457 - 2482 @ 20), (3, 20), PASSIVE-SCAN, NO-IBSS
(2474 - 2494 @ 20), (3, 20), NO-OFDM, PASSIVE-SCAN, NO-IBSS
(5170 - 5250 @ 40), (3, 20), PASSIVE-SCAN, NO-IBSS
(5735 - 5835 @ 40), (3, 20), PASSIVE-SCAN, NO-IBSS

The country code 00 is not the code of the country I am in at present. To tell the kernel which wireless regulatory domain you wish to use, enter the following command as root user:

iw reg set ISO_3166-1_alpha-2

where ISO_3166-1_alpha-2 is the 2-character code for the country you are in. You can find the list of ISO 3166-1 alpha-2 codes on the Wikipedia page ISO 3166-1 alpha-2.

For example, if I were in the UK then I would enter the following command:

# iw reg set GB

and the regulatory domain would then be reported like this:

# iw reg get
country GB:
(2402 - 2482 @ 40), (N/A, 20)
(5170 - 5250 @ 40), (N/A, 20)
(5250 - 5330 @ 40), (N/A, 20), DFS
(5490 - 5710 @ 40), (N/A, 27), DFS

It is not a big deal to use the command line, but I wanted to make it even easier. I’m using KDE on my main laptop, so I created a Desktop Configuration File /home/fitzcarraldo/Desktop/Set_wireless_regulatory_domain containing the following:

[Desktop Entry]
Comment[en_GB]=
Comment=
Exec=/home/fitzcarraldo/iw_reg.sh
GenericName[en_GB]=Set wireless regulatory domain
GenericName=Set wireless regulatory domain
Icon=/home/fitzcarraldo/national-flags-icon.png
MimeType=
Name[en_GB]=Set_wireless_regulatory_domain
Name=Set_wireless_regulatory_domain
Path=
StartupNotify=true
Terminal=true
TerminalOptions=\s--noclose
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=

and gave it the following file permissions:

# chmod 744 /home/fitzcarraldo/Desktop/Set_wireless_regulatory_domain
# ls -la /home/fitzcarraldo/Desktop/Set_wireless_regulatory_domain
-rwxr--r-- 1 fitzcarraldo users 496 Jan 15 21:53 /home/fitzcarraldo/Desktop/Set_wireless_regulatory_domain

I used a search engine to find a nice PNG icon consisting of several overlapping national flags, and saved it with the file name name national-flags-icon.png in my home directory.

I created a Bash shell script /home/fitzcarraldo/iw_reg.sh containing the following:

#!/bin/bash
echo "First you need to enter the password of your user account..."
sudo echo ""
echo "The ISO 3166-1 alpha-2 codes are listed on Web page https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2"
echo ""
echo "The current wireless regulatory domain is set as: "
echo ""
sudo iw reg get
echo ""
echo -n "Enter the ISO 3166-1 alpha-2 code (upper case) for the country you are in now, and press ENTER: "
read REGULATORYDOMAIN
sudo iw reg set $REGULATORYDOMAIN
echo ""
echo "The current wireless regulatory domain is now set as: "
echo ""
sudo iw reg get
echo ""
echo "All done. You can close this window."

and gave it the following file permissions:

# chmod 744 /home/fitzcarraldo/iw_reg.sh
# ls -la /home/fitzcarraldo/iw_reg.sh
-rwxr--r-- 1 fitzcarraldo users 632 Jan 15 21:33 /home/fitzcarraldo/iw_reg.sh

Now, if I double-click on the icon for Set_wireless_regulatory_domain on my desktop, a Konsole window pops up with a prompt for me to enter my user account password. When I enter my password the window displays the current wireless regulatory domain the kernel is using and prompts me to enter the 2-character code for the regulatory domain I wish to use instead. When I enter the country code the window displays the new regulatory domain, as shown in the sample below.


First you need to enter the password of your user account...
Password:

The ISO 3166-1 alpha-2 codes are listed on Web page https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

The current wireless regulatory domain is set as:

country SA:
(2402 - 2482 @ 40), (N/A, 20)
(5170 - 5250 @ 20), (3, 23)
(5250 - 5330 @ 20), (3, 23), DFS
(5735 - 5835 @ 20), (3, 30)

Enter the ISO 3166-1 alpha-2 code (upper case) for the country you are in now, and press ENTER: GB

The current wireless regulatory domain is now set as:

country GB:
(2402 - 2482 @ 40), (N/A, 20)
(5170 - 5250 @ 40), (N/A, 20)
(5250 - 5330 @ 40), (N/A, 20), DFS
(5490 - 5710 @ 40), (N/A, 27), DFS

All done. You can close this window.

The task of viewing and changing the regulatory domain after start-up is now very easy for me. The only thing that would be easier than this would be if Linux could detect automatically which country I’m in and set the regulatory domain automatically.

Converting ape music files to mp3 in Linux

I had a file in the lossless ape (Monkey’s Audio) file format, and wanted to convert it to a .mp3 file so that I could play it on my portable mp3 player. As is usual in Linux, several alternative solutions exist, and I thought I’d try three of them for fun: shntool, ffmpeg and KDE’s Konvertible (Konvertible is a GUI for ffmpeg).

I already had ffmpeg and Konvertible installed, but not shntool. So first I installed shntool and the Monkey’s Audio codecs it uses:

# emerge media-sound/mac
# emerge media-sound/shntool

Here are the details of these two installed packages:

# eix -I shntool
[I] media-sound/shntool
Available versions: 3.0.10-r1 {alac flac mac shorten sox wavpack}
Installed versions: 3.0.10-r1(08:11:30 19/12/12)(flac -alac -mac -shorten -sox -wavpack)
Homepage: http://www.etree.org/shnutils/shntool/
Description: A multi-purpose WAVE data processing and reporting utility

# eix -I media-sound/mac
[I] media-sound/mac
Available versions: 3.99.4.5.7-r1^m {mmx static-libs}
Installed versions: 3.99.4.5.7-r1^m(07:52:12 19/12/12)(mmx -static-libs)
Homepage: http://etree.org/shnutils/shntool/
Description: Monkey's Audio Codecs

Then I used the following command to convert the file My Band 1971 CoolSounds.ape to mp3:

$ shntool conv -i ape -o 'cust ext=mp3 lame - %f' My\ Band\ 1971\ CoolSounds.ape
Converting [My Band 1971 CoolSounds.ape] (59:15.39) --> [My Band 1971 CoolSounds.mp3] : 100% OK
$

The KDE utility Konvertible was also able to convert it. I double-clicked on the file My Band 1971 CoolSounds.ape in Dolphin to launch Konvertible, selected libmp3lame in the ‘Codec:’ drop-down picklist, 192.00 kbits/s in the ‘Bitrate:’ drop-down picklist, clicked on the folder icon and selected /home/fitzcarraldo as the destination directory, and finally clicked ‘Convert’.

The mp3 files created by shntool and Konvertible were of different sizes:

File created by Konvertible:

$ file My\ Band\ 1971\ CoolSounds.mp3
My Band 1971 CoolSounds.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
$ ls -la My\ Band\ 1971\ CoolSounds.mp3
-rw-r--r-- 1 fitzcarraldo users 85334024 Dec 19 08:11 My Band 1971 CoolSounds.mp3
$

File created by shntool:

$ file My\ Band\ 1971\ CoolSounds.mp3
My Band 1971 CoolSounds.mp3: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
$ ls -la My\ Band\ 1971\ CoolSounds.mp3
-rw-r--r-- 1 fitzcarraldo users 56889259 Dec 19 08:29 My Band 1971 CoolSounds.mp3
$

So I added the bitrate to the shntool command:

$ shntool conv -i ape -o 'cust ext=mp3 lame -b 192 - %f' My\ Band\ 1971\ CoolSounds.ape
Converting [My Band 1971 CoolSounds.ape] (59:15.39) --> [My Band 1971 CoolSounds.mp3] : 100% OK
$

and this time the mp3 file created by shntool is comparable to the mp3 file created by Konvertible:

$ file My\ Band\ 1971\ CoolSounds.mp3
My Band 1971 CoolSounds.mp3: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
$ ls -la My\ Band\ 1971\ CoolSounds.mp3
-rw-r--r-- 1 fitzcarraldo users 85333889 Dec 19 08:56 My Band 1971 CoolSounds.mp3
$

The ffmpeg command to do the same thing is:

$ ffmpeg -i My\ Band\ 1971\ CoolSounds.ape -ar 44100 -ab 192000 out.mp3
ffmpeg version 0.10.6 Copyright (c) 2000-2012 the FFmpeg developers
built on Nov 26 2012 07:06:40 with gcc 4.6.3
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --optflags='-O2 -march=native -pipe' --extra-cflags='-O2 -march=native -pipe' --extra-cxxflags='-O2 -march=native -pipe' --disable-static --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --disable-stripping --disable-debug --disable-doc --disable-vaapi --disable-vdpau --enable-runtime-cpudetect --enable-gnutls --enable-libmp3lame --enable-libvo-aacenc --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libfaac --enable-nonfree --enable-libdc1394 --enable-openal --disable-indev=v4l --disable-indev=oss --enable-x11grab --enable-libpulse --disable-outdev=oss --enable-libfreetype --enable-pthreads --enable-libgsm --enable-libspeex --disable-amd3dnow --disable-amd3dnowext --disable-altivec --disable-avx --disable-mmx2 --disable-ssse3 --disable-vis --disable-neon --cpu=ho
libavutil 51. 35.100 / 51. 35.100
libavcodec 53. 61.100 / 53. 61.100
libavformat 53. 32.100 / 53. 32.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 61.100 / 2. 61.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, ape, from 'My Band 1971 CoolSounds.ape':
Metadata:
Album : CoolSounds
Title : C:\1\My Band 1971 CoolSounds
Comment : Exact Audio Copy
Duration: 00:59:15.47, start: 0.000000, bitrate: 829 kb/s
Stream #0:0: Audio: ape (APE / 0x20455041), 44100 Hz, stereo, s16
Output #0, mp3, to 'out.mp3':
Metadata:
TALB : CoolSounds
TIT2 : C:\1\My Band 1971 CoolSounds
Comment : Exact Audio Copy
TSSE : Lavf53.32.100
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16, 192 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (ape -> libmp3lame)
Press [q] to stop, [?] for help
size= 83334kB time=00:59:15.55 bitrate= 192.0kbits/s
video:0kB audio:83333kB global headers:0kB muxing overhead 0.000892%
$

and, as you can see below, the resulting mp3 file is the same size as the mp3 file created using Konvertible (not surprising, since Konvertible is a GUI front-end for ffmpeg) and virtually the same as the mp3 file created by shntool.

$ file out.mp3
out.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
$ ls -la out.mp3
-rw-r--r-- 1 fitzcarraldo users 85334024 Dec 20 18:14 out.mp3
$

So, there you have it: GUI or command line; take your pick!

Let’s hear it for Konqueror

My browser of choice on the desktop has been Firefox for many years. Firefox uses the Gecko rendering engine. As a backup Web browser I use Konqueror but configured to use WebKit, rather than KHTML, as the rendering engine. I’ve tried Chromium, Opera, Midori, rekonq, SeaMonkey and a bunch of others, but always found them lacking in some way in comparison to Firefox (I find Opera Mobile better than Firefox for Android on my mobile phone, though).

However, Firefox sometimes lets me down. For example, some months ago I wanted to book tickets online for a concert but Firefox would not display the seat map correctly, stopping me from being able to select seats. Konqueror saved the day. And, recently, Firefox no longer displays the video component of trailers on Rotten Tomatoes; only audio works. Firefox correctly plays videos from virtually all other sites I visit (YouTube, IMDb, iTunes Trailers, Vimeo, eTelegraph etc.) so why the sudden inability to display Rotten Tomatoes trailers? Today Firefox wouldn’t play a product video on an Amazon page either. So I launched Konqueror and it can play Rotten Tomatoes trailers and the Amazon video. What gives? They are both running on the same laptop in the same OS (Gentoo Linux) and desktop environment (KDE), using the same version of Flash, the same video driver etc. The only thing I can think of is that the Firefox rendering engine Gecko is the culprit. I assume WebKit in Konqueror is more capable than Gecko, although I don’t know enough to be certain that Gecko is the cause of the problem.

Anyway, if you want to configure Konqueror to use the WebKit rendering engine instead of the KHTML rendering engine, click on ‘Settings’ on the Konqueror menu bar, select ‘Configure Konqueror…’ and click on ‘General’. You’ll see ‘Default web browser engine’ in the right pane. Select WebKit and click ‘OK’. You’ll also need to have WebKit itself installed, of course. I have the packages qt-webkit (the WebKit module for the Qt toolkit) and kwebkitpart (a WebKit KPart for Konqueror) installed.

A guided tour of my KDE 4.8.4 desktop (Part 2)

In A guided tour of my KDE 4.8.4 desktop (Part 1) I gave a brief overview of the KDE desktop on my main laptop. This time I’m going to cover some applications, KDE and non-KDE, that I use. Just to prove that I don’t look at KDE through rose-tinted spectacles, I’ll also mention a few problems too.

I don’t use a desktop PC. This laptop is my main PC and I use it for all my professional and personal tasks. I travel frequently and have to connect to public and private networks (wired, wireless and broadband modems) and to many different network printers, so a reliable desktop environment and reliable network management software are essential. KDE satisfies the first requirement. The desktop environment-independent NetworkManager and its KDE front-end, the Plasma widget NetworkManagement, satisfy the second requirement. I also use my laptop for the usual leisure activities such as watching DVDs, video files and TV programmes; listening to music files, Audio CDs and Internet radio; messaging/telephony (PC-to-PC and PC-to-landline/mobile internationally); browsing the Web, blogging and so on.

So this is very much a mission-critical machine for me. The fact that I’m using KDE successfully for all these tasks is a testament to the power of KDE (and Linux, of course). I should also point out that, for a mission-critical machine, I’m living a little dangerously as I use the testing branch (a.k.a. unstable branch), rather than the stable branch, of Gentoo Linux. I’ve been using the unstable branch for several years on this laptop and its predecessor, with only a few hiccups, although I do have to keep an eye on the Gentoo forums in case someone reports a problem.

Office suites

Microsoft Word and LibreOffice Calc

Snapshot 1 - Microsoft Word and LibreOffice Calc

I use both LibreOffice and Microsoft Office 2007, the latter under WINE (see WINE tips: Giving each Windows application its own environment). Office 2007 guarantees me 100 per cent compatibility at work but I also find it easier and more reliable than LibreOffice with the large, complex documents and spreadsheets I create. That said, I also have many Word 97 documents and Excel 97 spreadsheets that I still need to access, and LibreOffice opens some of them that Office 2007 cannot. I prefer to use Writer rather than Word for simple tasks such as typing a letter, as I dislike the Ribbon Interface. And I’m happy to use Calc rather than Excel in the majority of cases.

Once I got Office 2007 running under WINE I did not have to boot into Windows any more, although recently that changed for one very specific task on one work project: checking out (downloading) a Microsoft Word file from a Microsoft SharePoint repository, editing it locally and checking it back in (uploading it). Using Firefox in Linux I can upload a Word file to the SharePoint repository initially, but I have to boot into Windows and use Internet Explorer and Word to check-out, edit and check-in the revised document. I’ve used third-party document management and collaboration software in the past that does not require the use of Internet Explorer and Word. I can see how Microsoft lock you into their product line, and I don’t like that.

For schematic diagrams and flowcharts I usually use an old version of Visio (5 Professional) I bought in 1999, again under WINE. I find Visio easier and faster to use than Dia, a GNOME application I also use sometimes for simple diagrams.

E-mail client

I use Thunderbird to access several POP3 e-mail accounts and, via the excellent DavMail, a couple of Microsoft Exchange OWA (Outlook Web Access) accounts at different companies. DavMail is a life-saver. Having to access those two accounts via a Web browser was a hassle and inefficient. A single e-mail client which can be used to access and manage all my e-mail accounts is a godsend. I still have work e-mails from more than ten years ago, and Thunderbird enables me to find information in them with ease. For professional use by ‘power users’, WebMail cannot hold a candle to a good e-mail client such as Thunderbird. I use a number of Thunderbird extensions which I find essential: Lightning (calendar); Provider for Google Calendar (bidirectional access to Google Calendar); Timezone definitions for Mozilla Calendar; Change quote and reply format (why isn’t this functionality built-in to Thunderbird?); ConfigDate (ditto); Enigmail (encyption/decryption of e-mails); ImportExportTools (conversion tools for different e-mail formats); Dictionaries for several languages.

One of the reasons I chose Thunderbird was because it is available for both Linux and Windows. As I can dual boot this laptop, I put Thunderbird’s data files on the Windows NTFS partition (Windows cannot access Linux file systems), and Thunderbird in either OS accesses the same data files. I virtually never boot into Windows, but it is good to know that I can access my e-mail accounts from either operating system using the same application.

Scanning

I occasionally use SANE scanner interface software and its GUI front-end XSane for scanning images and documents to create image files. But I am much more likely to use the GUI front-end gscan2pdf, as I often need to create PDF files for work. gscan2pdf is another application I find indispensable.

Web browsing

Browsers and Google Earth

Snapshot 2 - Browsers and Google Earth

I use Firefox and the KDE browser/file manager/universal viewer Konqueror. I configured Konqueror to use the WebKit rendering engine instead of KHTML (Install the package kwebkitpart then launch Konqueror, select Settings > ‘Configure Konqueror…’ and select ‘WebKit’ as the ‘Default web browser engine’ on the General tab). There have been a few times when Firefox has not been able to display a Web page properly or at all, and Konqueror came to the rescue. The KIO Slaves I mentioned in Part 1 also add to Konqueror’s versatility.

I use the Oxygen KDE Firefox extension (see Snapshot 2), a theme for Firefox that makes it look like a native KDE application. Very nice indeed.

Google Earth needs no introduction. It runs well in KDE on my laptop, and I find it useful both in my work and for personal use.

I have the KDE blogging client Blogilo installed and it was easy to configure it to synchronise with my blog. In fact I started preparing this article in Blogilo but had to abandon it as Blogilo would not save reliably my incomplete work to my hard disk. After losing changes several times I gave up and turned to my tried and tested KWrite to draft the article offline first. Shame, really, as Blogilo looks really handy for preparing blog posts offline and then uploading them. Hopefully the next release will work for me.

For Web site creation and editing I use KompoZer. It’s not as sophisticated as Dreamweaver, but is easy to use and does a good job for my purposes.

Messaging and telephony

I use Skype for Linux for PC-to-PC and PC-to-phone communication domestically and internationally. There is simply no alternative if I want to communicate with my Windows-using friends, family and work colleagues: they are not going to switch to anything else. Actually, I find Skype for Linux perfectly usable (unlike Skype for Android on my Motorola Xoom tablet, which has a fiddly and rather annoying user interface). In some countries the state-owned telecom provider blocks Skype for commercial reasons, but I have been able to circumvent this using Tor (see How to install and use Tor for anonymous browsing or to access country-restricted content from another country). Furthermore, some office networks I use also block Skype, to enforce the use of another product or to stop personal communication, but Tor has helped me out there too.

Graphics

I use the GIMP quite a lot, mostly for photo editing/retouching for work purposes but sometimes to edit/retouch personal photos. I have only used the vector graphics application Inkscape a few times at work and at home. I enjoyed using it to produce the graphics for a laptop ‘Powered by’ sticker.

Gwenview

Snapshot 3 - Gwenview

Apart from the excellent KDE image viewer Gwenview, which gets better with every release of KDE, I use GQView. GQview has been around for many years and its UI looks rather dated, but it has some powerful features which I find useful at work (and at home). GQview makes it easy for me to assign keywords to image files and to search on keywords; to examine EXIF data; to print thumbnail proof sheets; to view multiple image files and page through directories of image files, and so on. This application has often been of help to me at work.

Okular and Adobe Reader

Snapshot 4 - Okular and Adobe Reader

KDE’s Okular document viewer and Adobe Reader are in frequent use on my laptop. I use them both but resort to Adobe Reader for the huge PDF files I sometimes have to view at work, as they load quicker in Adobe Reader. Also, Okular has had a rather irritating habit of printing Landscape pages in Portrait, and vice versa. This problem seems to come and go with different releases of Okular.

CAD

I hardly ever need to use CAD applications, but occasionally I do need to view some old AutoCAD files. For this I use an old version (2009-en-1.06-1) of VariCAD Viewer which opens those old files although it can’t open newer AutoCAD files. I tried unsuccessfully to install newer versions of VariCAD Viewer in the past, but have not tried again recently.

E-books

I only recently began reading e-books. The EPUBReader Firefox extension is an excellent and easy-to-use e-book reader, library manager and shop window for both free and commercical e-books in ePub format. The display of book pages when using the extension as a reader is better than many of the dedicated e-book applications I have seen.

Calibre is an excellent dedicated e-book reader and format converter that I discovered by accident when reading a review of the Amazon Kindle. If you are looking for an application that can handle all the various e-book formats, convert between them, manage your e-book library, upload and download e-books, and act as a reader, look no further. Even the application’s Web site oozes class.

Multimedia

SMPlayer multimedia player, and YouTube in Firefox

Snapshot 5 - SMPlayer multimedia player, and YouTube in Firefox

I have far too many multimedia players installed, but I like to alternate between them. In any case it’s useful to have several players installed because sometimes one of them is able to play a certain file that another cannot.

SMPlayer, VLC and Xine play DVDs, CDs, music files, video files, Internet radio, and digital TV (DVB). I like all three.

Miro is a music and video player, torrent downloader, Internet TV and podcast viewer, and more. Another very polished application I enjoy using.

Dragon Player is a KDE player for CDs, DVDs, audio and video files. It plays DVDs, audio and video files well on my laptop, but cannot play Audio CDs for some reason. It is not as versatile or as polished as the multimedia players mentioned above, so I rarely use it.

Clementine music player

Snapshot 6 - Clementine music player

The music players I have installed are Audacious, Clementine and Amarok. These three applications focus on playing and managing collections of music files, Audio CDs and streaming Internet radio.

In the days of KDE 3 I used exclusively Amarok 1.4, which was darn near a perfect music player. But new releases of Amarok were buggy in early releases of KDE 4, and today Amarok still does not work as well for me as the KDE 3 version did. Some of the album covers disappear randomly from the album cover manager, and it is irritating to have to restore covers. Clementine, on the other hand, has no trouble managing album covers and I find it is more polished than Amarok and nicer to use all round. I cannot get Amarok to play Audio CDs with the KDE GStreamer Phonon backend, only with the KDE VLC Phonon backend. Even then the optical drive in my laptop spins very fast and produces a loud noise, making listening to Audio CDs painful. Audacious, on the other hand, plays Audio CDs quietly and perfectly on my laptop. Although Clementine is superb in other respects, for some reason it cannot play Audio CDs on my laptop, whichever KDE Phonon backend is selected. All three players can stream Internet radio without problem, although the long pre-configured list of radio stations in Clementine is simply excellent. If Clementine could play Audio CDs on my laptop, it would be my favourite music player.

MIDI players and Karaoke

I have four different MIDI players installed. PyKaraoke (see HOWTO: PyKaraoke) and KDE’s own KMid can both play MIDI files with and without embedded karaoke lyrics. TiMidity++ is a MIDI file player, as well as an ALSA sequencer which can be used by the other MIDI player applications here. Drumstick has three applications: a MIDI player, a drumkit sequencer and a virtual piano keyboard. I enter the following command once before launching any of them:

modprobe snd_seq && timidity -iA -Os

Actually, I have put the above command in a Desktop Configuration File with a nice icon in my Desktop directory, so I just double-click on it. I could have instead loaded the snd_seq module automatically at startup by specifying it in the file /etc/conf.d/modules.

Audio CDs

KsCD is a simple KDE application with a sole purpose: to play Audio CDs. For me it fails miserably in this task, and has done in several releases of KDE. The last time I remember it working for sure was in KDE 4.3.3, and here we are today with KDE 4.8.4. The KDE Bug Tracking System has quite a few bug reports regarding KsCD. I don’t know if the application itself has a bug, or if the KDE Phonon backends are buggy, or if KDE has a bug, or if there is a problem with udev, or a combination. Anyway, whatever the reason, in my case KsCD is useless. Come to that, for Audio CDs Amarok is next to useless. Luckily for me, Audacious, SMPlayer, VLC and Xine can play Audio CDs perfectly on my laptop.

YouTube

I should mention the excellent command line tool youtube-dl (‘YouTube download’) which is great for downloading videos from YouTube. You can specify the resolution, extract the audio, and various other tricks. Well worth adding to your set of mutlimedia tools. Or, if you prefer a GUI, Minitube is a cracking application for watching and streaming YouTube videos without using a Web browser, and also enables you to download them.

Backing up CDs/DVDs or ripping audio and video

K3b is a superb KDE application. It’s a one-stop shop for making back-ups of CDs and DVDs, creating data CDs and DVDs, and ripping CDs and DVDs. I use K3b to rip my Audio CDs to mp3 files.

Another well-known KDE application is the excellent K9Copy DVD ripper. Unfortunately the developer stopped working on it in July 2011. I hope someone else picks it up, as K9Copy has an intuitive GUI and I have used it on a number of occasions to rip my DVDs to my hard disk so that I could watch them when travelling.

dvd::rip does just what the name suggests, and I’ve used this excellent application too. The GUI is intuitive and the online documentation is very good.

Winki the Ripper is a good application for ripping DVDs to MKV files (it can also rip to AVI files). I have used it but noticed recently that the Web site is up for sale, so I hope the application is still being developed.

WINE

WINE menu in Lancelot Launcher

Snapshot 7 - WINE menu in Lancelot Launcher

I have mentioned Office 2007 already, but I have a few other Windows applications installed under WINE, such as IE7 (so that I can see how a Web site looks in a Windows browser), IrfanView, Lotus ScreenCam Player (so that it is still possible to view some videos of a specialist application running in Windows 95 many years ago), Notepad, Pinball and a few applications and utilities I need that are not available in Linux. WINE is not perfect, but it is wonderful software that also makes it possible to run some older Windows applications that are probably not able to run in Windows Vista and 7.

Utilities

Some utilities

Snapshot 8 - Some utilities

I used to use the brilliant command line utility ImageMagick to scale image files, but have not had to resort to the command line since the GUI front-end Converseen was released (see Converseen, a GUI batch image converter and resizer using Qt4 and ImageMagick).

I encrypt and decrypt some of my sensitive files using GnuPG GUI front-ends KGpg and Kleopatra. Kleopatra is slightly easier to use than KGpg, but they’re much of a muchness. The Enigmail extension I use in Thunderbird also uses GnuPG.

KAlarm is a handy KDE utility to produce sounds or pop-up reminder messages, or issue commands, at specific times or time intervals. The GUI is easy to use and KAlarm can be used in many cases as an alternative to setting up a cronjob. It was simple to configure it as a talking clock (see Setting up a talking clock easily in Linux).

AutoKey is a macro utility I use frequently. It can be used in a number of ways, but I use it to insert text in documents and e-mails. For example, I have configured AutoKey to insert the output of the Linux date command where my cursor is in an open document or e-mail if I press Ctrl-Alt-D: Sun Jul 22 14:41:25 BST 2012. For another example, I have configured AutoKey to enter my full postal address when I type “adr” and press the Space key (but puts it back to “adr” if I press the Backspace key). It is a very handy utility and can be configured to execute simple or complex scripts.

Easystroke is the mouse equivalent of AutoKey. For example, I have configured Easystroke to type “———- Original Message ———-” when I press the mouse scroll wheel and move the mouse pointer diagonally from left to right on the screen. As another example, I have configured it to launch an instance of DavMail to access a specific company’s OWA Exchange Server when I trace the first letter of the company’s name on the screen with the mouse cursor. It’s a clever utility!

BasKet Note Pads is a KDE application for recording and reading notes. The notes can be simple text or complex with embedded pictures, hyperlinks and so on. I switched to BasKet from Tomboy as the latter is a GNOME application and requires some GNOME-specific packages that I didn’t want cluttering up my hard disk. However, I can’t say I like BasKet: I miss the simplicity and easy-to-use UI of Tomboy which was a pleasure to use. I think I may have to try another KDE application (KJots) instead of BasKet, as it may fit my needs better.

KRename is a batch file renamer for KDE that has come in handy both at work and at home.

Filelight is a KDE utility that shows you graphically how much of each partition is occupied and how much is free. I like it because it makes it easy for me to see at a glance how much disk space I have left.

JDiskReport is another utility for showing you disk occupancy graphically. You can select pie carts, segment charts or bar charts. It is freeware but not open-source, but is nevertheless a nice utility to have in your set of tools.

Antivirus software

BitDefender Antivirus for Unices

Snapshot 9 - BitDefender Antivirus for Unices

As I run some Windows applications under WINE, and as I dual boot with Windows 7, I use both BitDefender Antivirus Scanner for Unices and ClamTk, the GUI front-end to ClamAV. That way I can scan my Windows directories from Linux. My work colleagues sometimes pass work files to me on USB pen drives, and I use these two anti virus utilities to scan the pen drives just to be a bit safer. Yes, it has flagged the occasional malware in Windows files.

Games

Games

Snapshot 10 - Games

I hardly ever play games, but still installed the entire KDE Games suite (you never know, after all!). Of the KDE games, I play KPatience, KCheckers, KBlocks (a Tetris clone), KBreakOut (takes me back to playing BreakOut written in Applesoft BASIC on an Apple II+!) and KMahjongg, a solitaire game using beautifully rendered Mahjong tiles.

I have also installed a few non-KDE arcade games such as Missile Command and Pacman Arena (nicely done in 3D). I loved Pac-Mania on my Acorn Archimedes in the early 1990s, so I also use SDLMame and its GUI front-end GMameUI to play Pac-Mania and a few other old favourites such as Frogger.

As far as chess is concerned, I installed the 3D DreamChess, as well as the older but perfectly decent XBoard and eboard.

Scrabble and Boggle are popular games in my family, so I installed XScrabble and GBoggle, the latter being one of only a handful of the packages mentioned in this article that I had to install outside the Portage package manager because there is no ebuild (another being the commercial game Machinarium, which is available for Linux, beautiful and I recommend highly).

I occasionally play TORCS, which is not bad for a car racing game.

There are a lot more Linux games to discover, if you’re that way inclined.

Summary

I’ve just scratched the surface, but hopefully have given you a taste of how I use KDE (and Linux). Of course my needs and uses are different from everyone else’s, but I hope this and the previous article have shown you the breadth of KDE and Linux applications, and that they are completely viable on the desktop. If you have not tried KDE yet, I hope this has tempted you. And, if you’re new to Linux, I hope this has tempted you to try Linux too.

A guided tour of my KDE 4.8.4 desktop (Part 1)

I have used GNOME, LXDE, Xfce and others, but KDE is my favourite desktop environment and I’ve used every release since 3.5.2. Although there are a few things that still need improving, by and large I find KDE to be an excellent desktop environment with every feature and facility I need, and highly configurable. It is the only desktop environment I choose to use professionally (I virtually never have to touch Windows at work, although I can dual boot Windows 7 on my laptop just in case I come across an application that only runs in Windows), and it is the main Linux desktop environment I use at home, although from time to time at home I use Xfce on another laptop, Android 3.2 on my Motorola Xoom tablet and Windows Vista on the family PC. I can honestly say that Windows Vista and Windows 7 feel clunky and old fashioned to me after using KDE, not to mention less easy on the eye.

All but one of my work colleagues use Windows or Mac OS X, and they notice the KDE desktop on my laptop and ask questions about it. So I thought I’d provide a guided tour of the KDE desktop on my laptop, as it might be of interest to newcomers to Linux or to Linux users contemplating trying KDE. There is too much to show in one or even two articles, but I thought I’d at least cover some of the main features in a couple of articles. So here is the first installment…

KDM greeter screen

The KDM Greeter screen (log-in screen) is the first KDE screen to appear, and it follows the framebuffer console decoration (‘bootsplash’) displayed after I select Linux from the GRUB 2 bootloader menu. I chose a simple KDM log-in screen called gentoo-linux-kde that I downloaded from the openDesktop.org Web site.

KDM Greeter screen

Snapshot 1 - KDM Greeter screen

Incidentally, if you’re wondering how I made a snapshot of the KDM log-in screen, I used a tip by Todd Partridge and added the following command to the file /usr/share/config/kdm/Xsetup and restarted my machine:

sleep 10 && import -window root /tmp/kdm.png &

KDE Splash Screen

The KSplash screen is displayed briefly after log-in. I chose the Air and Ariya Splash Screen, one of the splash screens that comes with KDE 4.8.4 and is selected via System Settings > Workspace Appearance.

KDE Splash Screen

Snapshot 2 - KDE Splash Screen

If you’re wondering how I made that screenshot, System Settings > Workspace Appearance has a ‘Test Theme’ button. I just clicked on that and pressed the Prt Sc key on my keyboard to capture it with the KSnapshot utility, which I had previously linked to the Prt Sc key by using System Settings > Shortcuts and Gestures.

My desktop

The five icons on KSplash pop up one by one and the KDE desktop itself then appears. I’m using the Air desktop theme with Oxygen windows decorations, Oxygen icon set, Oxygen Black cursor theme, Oxygen widget style and DejaVu Sans 8 fonts.

KDE desktop

Snapshot 3 - KDE desktop

I tend to change the wallpaper quite often, but the rest has been the same for I can’t remember how long. This wallpaper is a poster image of beautiful Chinese actress Ziyi Zhang (who doesn’t really have blue eyes) in Memoirs of a Geisha.

In KDE the number of Panels (‘task bars’, in Windows parlance) and their dimensions and position are up to the user, but I prefer to have only one Panel, and I prefer it to be situated at the bottom of the desktop. I suppose I’m traditional that way.

Everything you see on my desktop is a KDE Plasmoid (also known as a ‘Plasma widget’), and there are many KDE widgets to chose from, both bundled with KDE and available for download from the Web. Some excellent widgets have been developed by individuals who have nothing to do with the KDE development team. The positioning of widgets, be it on the desktop itself or on the Panel, is entirely up to the user. In fact, there is nothing stopping you from having mutliple instances of the same widget. For example you could have two instances of the Comic Strip widget, each showing a different comic strip.

The only widgets I want on the desktop itself are, clockwise from top left:

Folder View

I use the Folder View widget to view the icons in my ~/Desktop directory. This is perhaps one of the most confusing concepts for Windows users to grasp, and also confused a lot of KDE 3 users (me included). On a traditional desktop the user can place icons for applications, directories (folders), files and shortcuts. In KDE 4, if you wish, the icons in the ~/Desktop directory can be shown in a Folder View widget on the desktop instead of on the desktop itself. Initially I preferred the traditional way, but I finally came to like using a Folder View widget to show the contents of my ~/Desktop directory on my desktop. The width and height of a Folder View widget are user-configurable, so I can keep it out of the way of the wallpaper image yet still easily access my most commonly used applications, scripts, directories and files. The widget automatically adds scroll bars when you resize it.

Folder View widget

Snapshot 4 - Folder View widget

Folder View widget showing tooltip

Snapshot 5 - Folder View widget showing tooltip

By the way, you can see above that I have Microsoft Office 2007 installed on my machine. It runs under WINE (see my earlier article WINE tips: Giving each Windows application its own environment for how I installed Office 2007). I use LibreOffice too, but have found that Office 2007 does some things better. Those three Office 2007 icons in my ~/Desktop directory launch Bash scripts that set up the WINEPREFIX and WINEARCH environment variables and issue the WINE command to launch the relevant Office 2007 application.

Folder View also allows the user to preview the contents of directories and sub-directories, so you can drill down very quickly into nested directories without clicking.

Folder View widget viewing directory contents

Snapshot 6 - Folder View widget viewing directory contents

Note that you can have as many Folder View widgets as you want on your desktop, and they can be used to view any directory, not just the ~/Desktop directory.

Hardware Temperature

This widget displays the current reading of the two ACPI temperature sensors in my laptop, both as trend graphs and on dashboard-type dials.

Network Monitor

This widget displays trend graphs of throughput in KiB/s for network interfaces specified by the user. I choose to display both wired (eth0) and wireless (wlan0) network graphs.

yaWP

yaWP is an excellent weather widget with a lot of options. It is easily configurable for multiple locations, which is handy for my frequent travels.

My Panel

The widgets I added to the left end of my Panel are Lancelot Launcher, Takeoff Launcher, Pager (the four rectangles; more about that later) and Dictionary. The widgets I added to the right end of my Panel are: System Tray, Digital Clock and Wastebin. With the exception of Wastebin, all the icons shown on the right side of the Panel are inside the System Tray widget. Additionally, I placed the Icon-Only Task Manager widget in the middle of the Panel, to display an icon for each running application (file manager, browser, and so on), be it maximised or minimised.

An application launcher is a common feature of any Desktop Environment, and a number of launchers are available for KDE. The standard launcher is Kickoff, which originated in openSUSE. Naturally it is also a widget and, as with any widget, can be placed anywhere on the Panel or on the desktop itself (or both, if you feel like it!). Although I find the Kickoff launcher good, I prefer another launcher: Lancelot. I placed the Lancelot widget on the left side of the Panel, and configured it to use the Genxigen KDE menu icon. A click on the icon reveals Lancelot’s intuitive menu:

Lancelot Launcher

Snapshot 7 - Lancelot Launcher

The three System Actions buttons along the bottom of the Lancelot launcher pane are configurable. I have configured them to be Lock Session, Leave and Switch User. Clicking on Leave displays a menu with buttons Log Out, Reboot, Shut Down, Suspend to Disk and Suspend to RAM. A nice feature is that you can configure KDE to display a sub-menu for Reboot that allows you to specify which of the entries in your GRUB 2 bootloader menu you wish to boot (see GRUB2/BURG Integration in KDE).

I used to have more widgets and icons on my Panel, to enable me to quickly launch the applications I use most frequently (Firefox, Konqueror, Thunderbird, Dolphin, KCharSelect, KWrite, KCalc and so on). However, the icons took up space on the Panel and reduced the space available to the Icon-Only Task Manager for displaying the icons of running applications. So I added a second launcher widget on my Panel: Takeoff Launcher, the icon next to the Lancelot widget’s icon. I downloaded a crisp SVG Gentoo icon to use as that launcher’s icon on the Panel. Takeoff Launcher is a full-blown launcher, but I only use its Favourites pane, to launch my most frequently used applications.

Takeoff Launcher

Snapshot 8 - Takeoff Launcher

Lancelot also has a Favourites pane, but Takeoff is easy to configure to have a large pane with big, widely-spaced icons, and it is therefore good for quickly launching my most-used applications. So the only application I have left on the Panel is the KDE dictionary widget:

Dictionary widget on my Panel

Snapshot 9 - Dictionary widget on my Panel

System Tray

System Tray on my Panel

Snapshot 10 - System Tray on my Panel

The System Tray widget is the ‘notification area’ and holds a number of applets and widgets. The KDE icons for Clipboard, Volume, Device Notifer, Network Management, Printer Applet, Notifications, KOrganizer Reminder daemon, Desktop Search File Indexing and Battery Monitor (some of which are themselves widgets) are monochrome. I don’t think it is a coincidence that they were made monochrome after Microsoft changed to monochrome icons in the notification area of Windows 7. I wish I could change those KDE icons, as I prefer coloured notification icons in a System Tray: I find coloured icons quicker to recognise and I also prefer coloured icons from an aesthetic point of view. The coloured icons you can see in my System Tray are, from left to right, Compiz Fusion Icon, Easystroke, AutoKey, BasKet Note Pads, KAlarm and Keyboard Layout (clicking on the flag allows me to switch to other keyboard layouts, each with its own flag). One of these days I’ll get rid of the Compiz Fusion Icon, as I rarely use Compiz anymore because KWin Desktop Effects are now a match for Compiz in most areas.

EDIT (July 16, 2012): I have just discovered that there is a way to change the System Tray icons: see How to Use Custom Tray Icons in KDE.

Notifications applet pop-up messages can be disabled, but I prefer to leave them enabled as they come in handy when I’m sending photos from my phone to my laptop via Bluetooth. Here is what a pop-up from the Notifications applet looks like when Yakuake is launched at start up:

Notifications applet

Snapshot 11 - Notifications widget

By the way, Yakuake is another cool KDE application. Pressing F12 toggles a slide-down/up terminal window:

Yakuake

Snapshot 12 - Yakuake slide-down window

System Settings

The main GUI configuration menu for KDE is System Settings, which I can launch from either launcher. This is used to configure account details, workspace and application appearance, file associations, shortcuts, hardware settings, applications to run at startup, and just about anything else you can think of. I never bother to use System Settings to configure printers, though, as I prefer to use the CUPS Management interface http://localhost:631/ in a browser window.

System Settings main window

Snapshot 13 - System Settings main window

The items in the System Settings menu depend on which KControl modules are installed. For example, I installed the UFW KControl Module (the package kcm-ufw) so there is an entry in System Settings for UFW.

Firewall - System Settings

Snapshot 14 - Firewall - System Settings

One of the other configuration menus in System Settings is Desktop Effects, to configure the 3D and compositing effects that the KWin window manager provides. For screenshots of some of the effects see my earlier article Pimping my Desktop: have KWin Desktop Effects improved in KDE 4.6.2?

UFW KControl Module

Snapshot 15 - Desktop Effects - System Settings

Some people derisively call these effects ‘eye candy’ or ‘wobbly windows’ (the latter being one of the available effects) but I find some of them useful. The Desktop Cube (Ctrl-F11) and windows transparency (Alt + mouse scroll wheel) are two that I often use at work. Being able to place open windows on different faces of the cube, and flip quickly between them either with a mouse click, mouse wheel scroll or keyboard shortcut is handy. And sometimes I need to refer to text in a window underneath the one I’m typing in, and being able to make the latter transparent or semi-transparent quickly just to check something is also handy. Wobbly windows themselves are pure eye candy, but cool nonetheless. I’m so used to wobbly windows that I miss the effect if using another machine without it.

KWin Desktop Cube

Snapshot 16 - KWin Desktop Cube

I have configured the Pager widget to display the four virtual desktops (cube faces) as a row of four rectangles on the Panel, and I can click on any of the four rectangles to rotate the cube to the relevant virtual desktop (cube face). I have also configured the Pager’s keyboard shortcuts so that Ctrl-Alt- and Ctrl-Alt- rotate the cube left and right, respectively (see Switching from Compiz to the KDE Native Composite Engine).

Selecting Plasmoids (widgets)

Adding widgets to a Panel or to the desktop is easy. There is a small Tool Box icon in the top right of the desktop. Because of its shape, this icon is often called ‘the cashew’.

Tool Box ('the cashew')

Snapshot 17 - Tool Box ('the cashew')

You just click on it, select ‘Unlock Widgets’ then ‘Add Widgets’ (right-clicking on the desktop allows you to select ‘Add Widgets’ too), and a scrollable menu bar with widgets appears above the Panel:

Widgets menu

Snapshot 18 - Widgets menu

You can then select the widget you want and drag it to a place on the Panel or on the desktop itself. A ‘Get New Widgets…’ button allows you to search for, select and download other widgets from the Web or to install a new widget from a local file you downloaded earlier.

While ‘Unlock Widgets’ is selected there is also a cashew icon (‘Panel Tool Box’) at the right end of the Panel. If you click on that a menu pops up to allow you to configure the Panel itself (position, length, height, auto-hide, spacers and so on).

Activities

Activities are another unique KDE feature, and probably the least understood and least used of all KDE features. If you select Activities in the cashew menu (see Snapshot 17) or in the Widgets menu (see Snapshot 18), a new menu pops up:

Activities config menu

Snapshot 19 - Activities menu

Apart from my existing ‘Desktop’ activity (my normal environment with its four virtual desktops), I have three template activities titled ‘Search and Launch’, ‘Photos Activity’ and ‘Desktop Icons’. I could delete any or all of those or customise them as I wish (I could also click on the ‘Create Activity’ button to create further activities). For example, if I click on the ‘Photos Activity’ icon, I see the following desktop, which I could go on to customise by adding widgets and wallpaper that are unique to this activity.

an Activity

Snapshot 20 - an Activity

To see a screencast of Activities in action, check out ChaniBlog post Activities in Action. To read more about KDE Activities, see The Mystery of KDE Activities.

To be honest, I’m not particularly interested in using Activities, as I find the traditional virtual desktops in KDE adequate for my purposes. But I can see that Activities might have their uses. You can read some comments on the current state of Activities design, and suggestions to improve it, in the article Nine Ways to Make KDE Activities More Useful.

Docks

Mac OS X has made the dock concept popular, and there are a number of dock widgets specifically for KDE, such as Daisy. Cairo Dock is not specifically designed for KDE but works well in KDE. As you can see from the snapshot below, I installed it. To be honest, though, I never use it, as Lancelot Launcher, Takeoff Launcher, Folder View and the Panel do everything I want and more.

Cairo Dock

Snapshot 21 - Cairo Dock

Desktop Search

‘Desktop Search’ is one of the entries in System Settings. If I double-click on that entry I can then enable or disable Nepomuk Semantic Desktop (tagging and rating of files), Nepomuk File Indexer (searching of files by content instead of just by name) and E-mail Indexing (full text search in e-mails and their attachments).

If I click on the ‘Desktop Search File Indexing’ icon in the System Tray (the icon to the left of the Keyboard Layouts icon in Snapshot 11) then the following window pops-up, telling me the status of file indexing:

Nepomuk

Snapshot 22 - Nepomuk

To give you an example of how I use Desktop Search, I was looking for a MIDI file of The Monkees’ ‘I’m A Believer’ that I saved a long time ago. I can press Alt-F2 to launch KRunner, and enter a search string:

Searching via KRunner

Snapshot 23 - Searching via KRunner

or I can click on the Lancelot Launcher icon and enter the search string there:

Searching via Lancelot

Snapshot 24 - Searching via Lancelot

Either way, clicking on the file they find launches KMid, the KDE MIDI file player:

Searching via Lancelot

Snapshot 25 - KMid

By the way, both KRunner and Lancelot will accept commands as well as file names.

File Managers

Dolphin file manager

Snapshot 26 - Dolphin file manager

Dolphin is the default file manager in KDE. It has a raft of features and is very easy to use. Features have been added to Dolphin in each KDE release, and it is now a powerful file manager. Other KDE file managers I use frequently are Krusader and Konqueror, the latter also a Web browser that I have found will sometimes display Web pages that Firefox cannot (I installed the kwebkitpart package and configured Konqueror to use the WebKit rendering engine by default rather than the KHTML rendering engine). Konqueror is not so popular since the advent of Dolphin, but I use it quite often as it has several strings to its bow.

Konqueror and Dolphin can use KIO Slaves (in Gentoo these are available by installing the packages kdebase-kioslaves, kdemultimedia-kioslaves and kio-sysinfo), which provide additional functionality. One of the KIO Slaves for Konqueror is sysinfo:/, which I have bookmarked to save typing it in the address bar:

Konqueror using sysinfo:/

Snapshot 27 - Konqueror using sysinfo:/

For more detailed system information, I select System > KInfoCenter from the Lancelot menu, or enter the command kinfocenter in KRunner or in the input field of Lancelot or in a terminal window (you are spoilt for choice in Linux!).

Applications and Tools I use

If you’re wondering what I used to capture the images for this article, apart from the ImageMagick import command to capture the KDM Greeter screen, I used KSnapshot:

KSnapshot

Snapshot 28 - KSnapshot


And, after installing the package media-gfx/scrot, I used the following command in a Konsole window to take the above snapshot of the KSnapshot window:

$ scrot -d 6 -b -s snapshot.png

Coming in Part 2…

In my next article I’ll show you a few of the other applications and tools – both KDE and non-KDE – that I use regularly in KDE on my laptop.

Getting the integrated fingerprint reader on my laptop to work in Linux

My Compal NBLB2 laptop has a built-in Upek TCS5B fingerprint scanner:

$ lsusb | grep -i upek
Bus 002 Device 003: ID 147e:1001 Upek

I’m running 64-bit multilib Gentoo Linux with KDE 4.8.1 on this laptop. I decided it was about time I got the built-in fingerprint scanner/sensor working.

The FOSS application Fingerprint GUI caters for this model of fingerprint reader, as well as several other models: see the application’s Home Page (Ref. 1 at the end of this post) for a list of the models supported.

The Gentoo Bugzilla has a bug report (Ref. 2) that I found very helpful (my thanks, in particular, go to Jan Buecken), but the ebuilds in it were not for the latest version of Fingerprint GUI, which is 1.04 as I write this. The required packages are sys-auth/fingerprint-gui and sys-auth/upekbsapi-bin. So I had to modify a little the ebuilds from the Gentoo Bugzilla, and I installed the packages using a Portage local overlay as explained below (/etc/make.conf had already been edited accordingly and /usr/local/portage/profiles/repo_name had already been created).

1. First I created the local overlay directories for the two packages:

# mkdir -p /usr/local/portage/sys-auth/fingerprint-gui
# mkdir -p /usr/local/portage/sys-auth/upekbsapi-bin

2. Then I edited the fingerprint-gui-1.03 ebuild from Ref. 2 to create the file /usr/local/portage/sys-auth/fingerprint-gui/fingerprint-gui-1.04.ebuild containing:

# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=3

inherit qt4-r2 versionator

MAKEOPTS="$MAKEOPTS -j1"

MY_PV=$(replace_version_separator 2 -)
DESCRIPTION="Use Fingerprint Devices with Linux"
HOMEPAGE="http://www.n-view.net/Appliance/fingerprint/"
SRC_URI="http://www.n-view.net/Appliance/fingerprint/download/${PN}-${MY_PV}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
IUSE="upekbsapi"

DEPEND=">=sys-auth/libfprint-0.1.0_pre2
|| ( ( x11-libs/qt-core:4 x11-libs/qt-gui ) x11-libs/qt:4 )
>=app-crypt/qca-2.0.0
>=app-crypt/qca-ossl-2.0.0_beta3
x11-libs/libfakekey
>=dev-libs/libusb-1.0.0
sys-auth/polkit-qt
sys-libs/pam
!sys-auth/pam_fprint
!sys-auth/fprintd
!sys-auth/thinkfinger
"
RDEPEND="${DEPEND}
upekbsapi? ( sys-auth/upekbsapi-bin[headers] )"

S=${WORKDIR}/${PN}-${MY_PV}

src_configure() {
if has_version '>=sys-auth/polkit-qt-0.99.0'; then
eqmake4 LIBPOLKIT_QT=LIBPOLKIT_QT_1_1 || die "qmake4 failed"
else
eqmake4 || die "qmake4 failed"
fi
}

src_install() {
emake INSTALL_ROOT="${D}" DESTDIR="${D}" install || die "emake install failed"

domenu bin/fingerprint-gui/fingerprint-gui.desktop

dodoc CHANGELOG README COPYING\
doc/*.html\
doc/*.png
}

pkg_postinst() {
elog "1) Please see /usr/share/doc/${P}/Install-step-by-step.html to configure your device."
elog "   A fast (not recommended) way to use fingerprint-gui with your pam based application"
elog "   you can add the following line to the first off /etc/pam.d/system-auth"
elog "   auth        sufficient  pam_fingerprint-gui.so"
elog "   For more security we recommend that you don't enable fingerprint-gui authentication for all pam services."
elog "   See Install-step-by-step.html again."
elog "2) You must be in the plugdev group to use fingerprint"
if use upekbsapi; then
elog "3) You select to install upeks bsapi library, it's not open-sourced. Use it on your own risk."
fi
}

3. I edited the upekbsapi-bin-3.5.2.ebuild from Ref. 2 to create the file /usr/local/portage/sys-auth/upekbsapi-bin/upekbsapi-bin-3.5.2.ebuild containing:

# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=3

FP_GUI=fingerprint-gui-1.04
MY_PN=${PN/bsapi-bin/}
DESCRIPTION="UPEK Biometric Services SDK for PC"
HOMEPAGE="http://www.upek.com/solutions/eikon/default.asp"
SRC_URI="http://www.n-view.net/Appliance/fingerprint/download/${FP_GUI}.tar.gz"

LICENSE="EULA"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE="-headers"

DEPEND=""
RDEPEND="${DEPEND}"

S=${FP_GUI}/${MY_PN}

src_unpack() {
unpack ${FP_GUI}.tar.gz
}

src_install() {
cd "${S}"/
dodoc Readme.pdf releasenotes.txt UPEK_EULA.pdf
if use headers; then
dodoc doc/BSAPI.pdf  doc/BSAPIUsageonLinux.pdf
insinto /usr/include
doins include/bsapi.h
doins include/bserror.h
doins include/bstypes.h
fi
if use x86; then
dolib lib/libbsapi.so
elif use amd64; then
dolib lib64/libbsapi.so
fi
insinto /etc/udev/rules.d
doins 91-fingerprint-gui-upek.rules
dodir /var/${MY_PN}_data
fperms 777 /var/${MY_PN}_data
echo "nvmprefix=\"/var/${MY_PN}_data/.NVM\" dualswipe=0" > ${MY_PN}.cfg
insinto /etc
doins ${MY_PN}.cfg
}

4. Then I entered the following commands to create manifests for the two packages and to merge (install) them:

# cd /usr/local/portage/sys-auth/upekbsapi-bin
# ebuild upekbsapi-bin-3.5.2.ebuild manifest
# cd /usr/local/portage/sys-auth/fingerprint-gui
# ebuild fingerprint-gui-1.04.ebuild manifest
# USE="headers" emerge -1v upekbsapi-bin
# USE="upekbsapi" emerge -1v fingerprint-gui

5. The file /etc/pam.d/system-auth on my laptop contained the following lines:

auth            required        pam_env.so
auth            required        pam_unix.so try_first_pass likeauth nullok
auth            optional        pam_permit.so

account         required        pam_unix.so
account         optional        pam_permit.so

password        required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password        required        pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password        optional        pam_permit.so

session         required        pam_limits.so
session         required        pam_env.so
session         required        pam_unix.so
session         optional        pam_permit.so

and I edited it to be as follows:

auth            required        pam_env.so
auth            sufficient      pam_fingerprint-gui.so -d try_first_identified
auth            required        pam_unix.so try_first_pass likeauth nullok
auth            optional        pam_permit.so

account         required        pam_unix.so
account         optional        pam_permit.so

password        required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password        required        pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password        optional        pam_permit.so

session         required        pam_limits.so
session         required        pam_env.so
session         required        pam_unix.so
session         optional        pam_permit.so

6. The UPEK fingerprint scanner on my laptop is Device 003 on USB Bus 002:

# lsusb | grep -i upek
Bus 002 Device 003: ID 147e:1001 Upek

As you can see below, the device is correctly a member of the plugdev group:

# ls -la /dev/bus/usb/002
total 0
drwxr-xr-x 2 root root 120 Mar 20 15:31 .
drwxr-xr-x 4 root root 80 Mar 20 15:31 ..
crw-rw-r-- 1 root usb 189, 128 Mar 20 15:31 001
crw-rw-r-- 1 root usb 189, 129 Mar 20 15:31 002
crw-rw-r-- 1 root plugdev 189, 130 Mar 20 17:37 003
crw-rw-r-- 1 root usb 189, 131 Mar 20 15:31 004

and my user account is a member of the plugdev group too:

$ groups
disk lp wheel floppy uucp cron audio cdrom dialout video games cdrw usb users kismet clamav haldaemon plugdev scanner pulse-access pulse-rt pulse kvm crontab vboxusers polkituser

7. I don’t think it was necessary to do, but I changed the file permissions to make sure all the devices on Bus 002 were completely accessible:

# chmod 777 /dev/bus/usb/002 -R
# ls -la /dev/bus/usb/002
total 0
drwxrwxrwx 2 root root 120 Mar 20 15:31 .
drwxr-xr-x 4 root root 80 Mar 20 15:31 ..
crwxrwxrwx 1 root usb 189, 128 Mar 20 15:31 001
crwxrwxrwx 1 root usb 189, 129 Mar 20 15:31 002
crwxrwxrwx 1 root plugdev 189, 130 Mar 20 17:37 003
crwxrwxrwx 1 root usb 189, 131 Mar 20 15:31 004

When I reboot, the file permissions revert to those shown in Step 6 above anyway.

8. Two udev rules files were created when I installed the packages:

# locate fingerprint | grep rule
/etc/udev/rules.d/91-fingerprint-gui-upek.rules
/lib64/udev/rules.d/91-fingerprint-gui-upek.rules

The file /etc/udev/rules.d/91-fingerprint-gui-upek.rules contained the following:

# udev rules for fingerprint-gui (libbsapi)

# set permissions
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="201[56]",   SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="201[56]",   SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="100[0123]", SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="300[01]",   SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="500[23]",   SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"

# enable power saving
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="201[56]",   ATTR{power/control}=="*", ATTR{power/control}="auto"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="201[56]",   ATTR{power/control}=="*", ATTR{power/control}="auto"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="100[0123]", ATTR{power/control}=="*", ATTR{power/control}="auto"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="300[01]",   ATTR{power/control}=="*", ATTR{power/control}="auto"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="500[23]",   ATTR{power/control}=="*", ATTR{power/control}="auto"

The file /lib64/udev/rules.d/91-fingerprint-gui-upek.rules contained the following:

# udev rules for fingerprint-gui (libbsapi)

# set permissions
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="201[56]", SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="201[56]", SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="100[01]", SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="3000",    SYMLINK+="input/touchchip-%k", MODE="0664", GROUP="plugdev"

# enable power saving
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="201[56]", ATTR{power/level}=="*", ATTR{power/level}="auto"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="201[56]", ATTR{power/level}=="*", ATTR{power/level}="auto"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="100[01]", ATTR{power/level}=="*", ATTR{power/level}="auto"
ATTRS{idVendor}=="147e", ATTRS{idProduct}=="3000",    ATTR{power/level}=="*", ATTR{power/level}="auto"

9. After reading a post in the Fingerprint GUI Forum (see quote further on) I decided to delete a file in /var/upek_data/ but, in retrospect, I’m not sure it was necessary, and, in any case, the file was subsequently recreated (perhaps when I reinstalled the packages?) and apparently has no adverse effect at present:

# ls -la /var/upek_data/
# rm /var/upek_data/.NVMe3031dcc911668f65aaeb5209f4db5ad5be21fbdbc810ac101963da0bf952f9a.bin

I had decided to delete the file because I was seeing the error message “ABSOpen() failed -1057 (Fingerprint sensor device communication error.)” in the log file /var/log/messages, and a post in the Fingerprint GUI Forum suggested deleting the file:

> Setting up the NVM emulation caused fingerprintGUI not to directly display the error, but after a second or two. Auth.log now shows a different error.

Yes. This one:

ABSOpen() failed -1057 (Fingerprint sensor device communication error.)

In some cases I’ve seen that removing all *.bin files in /var/upek/ did help. Try it.

In other cases there was some other process which had held open the device (e.g. a virtual machine running Windows on that host).

W.U.

Wolfgang Ullrich
March 18th, 2010 10:06am

(The Fingerprint GUI Forum refers to error messages being in a log file /var/log/auth.log, but, in my case, they were in the log file /var/log/messages.)

10. Anyway, now when I press e.g. Ctrl-Alt-F2 to open a VT, as usual I see a login prompt:

meshedgedx login:

However, when I enter my username and press Enter, not only is the usual Password prompt displayed but some additional text is displayed below it:

meshedgedx login: fitzcarraldo
Password:
Fingerprint Login 1.04
Authenticating fitzcarraldo
Swipe your finger or type your password:

If I enter my password, I am logged in as usual. But if I instead swipe my finger on the fingerprint scanner, I am also logged in. Nice. :-)

11. If I open a Konsole window and enter any command using sudo, let’s say sudo whoami for example, I am prompted as usual for my user password but now a GUI widget (see image below) also pops up prompting me to swipe my finger over the fingerprint scanner. Either entering my password or swiping my finger will allow me to launch the command. Nice. :-)

Fingerprint GUI widget

12. The instructions in Ref. 3 say to launch fingerprint-gui using sudo to register a fingerprint for the root user (i.e. to enable you to use the fingerprint scanner in order to log in as root user from e.g. a Konsole/Terminal window). In fact I had to use the command kdesu fingerprint-gui to launch Fingerprint GUI and register a fingerprint to enable me to log-in as the root user either by entering the root user’s password as usual or by swiping my finger. Having done that, now when I enter the su command in a Konsole window I am prompted to enter the root user’s password as usual but am also prompted to swipe my finger instead if I want:

$ su
Password:
Fingerprint Login 1.04
Authenticating root
Swipe your finger or type your password:
OK
No protocol specified
No protocol specified
#
# whoami
root
#

Nice. :-)

By the way, this also means I can swipe my finger to log-in as root user via a VT.

According to the Fingerprint GUI Forum, the error messages “No protocol specified” shown above are confined to KDE. It is possible to avoid them by using an export command first:

$ export XAUTHORITY=~/.Xauthority
$ su
Password:
Fingerprint Login 1.04
Authenticating root
Swipe your finger or type your password:
OK
#
#

I simply added the export command to my ~/.bashrc file, and the problem is fixed.

13. My only problem now is with the kdesu command: I have to enter both the root user's password and swipe my finger to launch an application using kdesu. For example, if I enter the command kdesu kwrite in a Konsole window, I am first prompted by a KDE pop-up window to enter the root user's password as usual, and, once I have entered the password in that window, I am then prompted in the Konsole window to swipe my finger. I have to do both in order for the kdesu command to execute.

14. According to Ref. 1, a limitation in KDM means that it is not possible to use the fingerprint scanner to log-in to KDE (although no such limitation exists in the case of GDM: see Ref. 3 for details). However, I'm using KDM and KDE 4.8.1 and, as soon as I enter my user name on the KDM login page, the Fingerprint GUI window pops up prompting me to swipe a finger or type my login/password. If I do either then I am logged in to KDE. Nice. :-)

So, there you have it: Fingerprint GUI 1.04 + UPEK BSAPI SDK for Linux 3.5.2 + KDE 4.8.1 + Gentoo Linux + Upek TCS5B (147e:1001) fingerprint scanner are a working combination. Kudos to Wolfgang Ullrich for creating Fingerprint GUI (and the Web site to accompany it).

REFERENCES

1. Fingerprint GUI

2. Gentoo's Bugzilla – Bug Report No. 341105 – fingerprint-gui (new package)

3. Fingerprint GUI Step-by-Step Manual

4. Fingerprint GUI User's Manual

EDIT (May 23, 2012): An ebuild for Fingerprint GUI was added to the Portage main tree on May 21, 2012. It is not identical to the ebuild I posted here a couple of months ago but also installs version 1.04 of the utility, so try merging the package from the main Portage tree as that is an easier way to install it.

Installing the Takeoff Launcher in KDE 4.8.0

My application launcher of choice is Lancelot, which comes as part of the package kde-base/kdeplasma-addons. If you haven’t already tried it, you really should.

Anyway, recently on the blogsphere I read about Takeoff, another Plasmoid application launcher for KDE, first issued end July 2011. Looking at screen snapshots of Takeoff reminded me of a tablet’s screen: an uncluttered array of large application icons. My curiosity was piqued, so I decided to install the Takeoff Plasmoid. Here’s what I did to install it in KDE 4.8.0 in Gentoo Linux. The same straightforward procedure should also work in other Linux distributions with KDE 4.8, although installation is a bit easier for Arch Linux, Chakra, Fedora, openSUSE and Ubuntu, as packages exist for those distributions (see the Download page on the project’s Web site for details).

I downloaded takeoff-1.0.tar.gz to ~/Desktop

I right-clicked on the tarball and selected Extract > Extract Archive To… and extracted the files to the directory ~/takeoff-1.0

I opened a Konsole window and entered the following commands:

cd ~/takeoff-1.0

cat README

The README file tells you exactly how to install the Plasma widget (although I ignored the instruction to create the directory ~/takeoff-1.0/build/ as it already existed):

cd build

cmake .. && make

sudo make install

kbuildsycoca4

Then I did the usual in KDE to add the Takeoff widget to the Panel.

To configure Takeoff I right-clicked on its icon, clicked on ‘Takeoff Settings’ and, under ‘General Settings’, I unticked ‘Show Takeoff in full screen mode’. I also clicked on the icon under ‘General Settings’ and changed the icon to one of my choice. If you fancy a picture as the background of the launcher’s panel, tick ‘Show background image’, click on the ‘browse for file’ icon and select any wallpaper file that you have stored on your disk. There are other configuration options you can play with, such as the number of columns and rows of application icons to display in the launcher’s panel.

To display the launcher’s panel, just click on the Takeoff icon on your Panel. The Takeoff panel will pop up, as shown in the snaphot below of my screen.

Takeoff Launcher in KDE 4.8.0

Notice that there are tabs across the top of the launcher’s panel; these are the different categories of application available: Favourites, All Applications, Accessories, Education, Games, Graphics, Internet, Office, and so on. Click on one of these tabs to view all the applications in that category. If there are too many applications in that category to fit on the launcher’s panel, there will be a slider button at the bottom of the panel; just click on the next number on it to view the next page of applications in the category.

By the way, in case you’re wondering, naturally those are Gentoo penguins on my Desktop wallpaper. :-)

EDIT (July 10, 2012): For users of Gentoo there is now an ebuild (kde-misc/takeoff) in the Portage main tree, so use that to install Takeoff Launcher.

Moving Compiz to a local overlay in Gentoo

Sadly, Compiz’s heyday has passed and the Compiz ebuilds in the Gentoo Portage main tree were recently masked for removal. I rarely use Compiz these days, as KWin’s Desktop Effects are now almost as good. Nevertheless I want to keep Compiz installed for the time being, so I decided to move the ebuilds to a local overlay before the Gentoo developers remove them from the main Portage tree. Here’s how I did it.

The masked Compiz packages installed on my machine were:

# eix -I compiz
[D] dev-python/compizconfig-python
Available versions: [M](~)0.8.4 [M](~)0.8.4-r1 [M](~)0.8.4-r3
Installed versions: 0.8.4-r3(00:52:18 01/09/11)
Homepage: http://www.compiz.org/
Description: Compizconfig Python Bindings

[D] x11-libs/compiz-bcop
Available versions: [M](~)0.8.4
Installed versions: 0.8.4(23:33:17 27/08/11)
Homepage: http://www.compiz.org/
Description: Compiz Option code Generator

[D] x11-libs/compizconfig-backend-gconf
Available versions: [M](~)0.8.4-r2
Installed versions: 0.8.4-r2(18:39:26 27/08/11)
Homepage: http://www.compiz.org/
Description: Compizconfig Gconf Backend

[D] x11-libs/compizconfig-backend-kconfig4
Available versions: [M](~)0.8.4 {aqua}
Installed versions: 0.8.4(23:35:31 27/08/11)(-aqua -kdeenablefinal)
Homepage: http://www.compiz.org/
Description: Compizconfig Kconfig Backend

[D] x11-libs/libcompizconfig
Available versions: [M](~)0.8.4-r2!t
Installed versions: 0.8.4-r2!t(18:32:41 27/08/11)
Homepage: http://www.compiz.org/
Description: Compiz Configuration System

[D] x11-plugins/compiz-plugins-extra
Available versions: [M](~)0.8.6-r1 {gconf libnotify}
Installed versions: 0.8.6-r1(23:35:08 27/08/11)(libnotify -gconf)
Homepage: http://www.compiz.org/
Description: Compiz Fusion Window Decorator Extra Plugins

[D] x11-plugins/compiz-plugins-main
Available versions: [M](~)0.8.6-r1 {gconf}
Installed versions: 0.8.6-r1(18:33:51 27/08/11)(-gconf)
Homepage: http://www.compiz.org/
Description: Compiz Fusion Window Decorator Plugins

[D] x11-plugins/compiz-plugins-unsupported
Available versions: [M](~)0.8.4-r1!m
Installed versions: 0.8.4-r1!m(18:36:55 27/08/11)
Homepage: http://www.compiz.org/
Description: Compiz Fusion Window Decorator Unsupported Plugins

[D] x11-wm/compiz
Available versions: [M](~)0.8.6-r3 {+cairo fuse gconf gnome gtk kde +svg}
Installed versions: 0.8.6-r3(18:54:59 23/11/11)(cairo gtk kde svg -fuse -gconf -gnome)
Homepage: http://www.compiz.org/
Description: OpenGL window and compositing manager

[D] x11-wm/compiz-fusion
Available versions: [M](~)0.8.4-r1 [M](~)0.8.6 {emerald gnome kde unsupported}
Installed versions: 0.8.6(18:55:16 23/11/11)(emerald kde -gnome -unsupported)
Homepage: http://www.compiz.org/
Description: Compiz Fusion (meta)

Found 10 matches.
# eix -I fusion
[D] x11-apps/fusion-icon
Available versions: [M](~)0.1-r2 {gtk qt4}
Installed versions: 0.1-r2(18:55:09 23/11/11)(gtk qt4)
Homepage: http://compiz-fusion.org
Description: Compiz Fusion Tray Icon and Manager

[D] x11-wm/compiz-fusion
Available versions: [M](~)0.8.4-r1 [M](~)0.8.6 {emerald gnome kde unsupported}
Installed versions: 0.8.6(18:55:16 23/11/11)(emerald kde -gnome -unsupported)
Homepage: http://www.compiz.org/
Description: Compiz Fusion (meta)

Found 2 matches.
# eix -I ccsm
[D] x11-apps/ccsm
Available versions: [M](~)0.8.4-r1
Installed versions: 0.8.4-r1(23:33:31 27/08/11)
Homepage: http://www.compiz.org/
Description: Compizconfig Settings Manager

# eix -I emerald
[D] x11-themes/emerald-themes
Available versions: [M](~)0.5.2
Installed versions: 0.5.2(18:47:58 27/01/11)
Homepage: http://compiz-fusion.org
Description: Emerald window decorator themes

[D] x11-wm/emerald
Available versions: [M](~)0.8.4-r2
Installed versions: 0.8.4-r2(21:28:46 27/08/11)
Homepage: http://www.compiz.org/
Description: Emerald Window Decorator

Found 2 matches.

Using the locate command I quickly located the ebuilds:

/usr/portage/dev-python/compizconfig-python/compizconfig-python-0.8.4-r3.ebuild
/usr/portage/x11-libs/compiz-bcop/compiz-bcop-0.8.4.ebuild
/usr/portage/x11-libs/compizconfig-backend-gconf/compizconfig-backend-gconf-0.8.4-r2.ebuild
/usr/portage/x11-libs/compizconfig-backend-kconfig4/compizconfig-backend-kconfig4-0.8.4.ebuild
/usr/portage/x11-libs/libcompizconfig/libcompizconfig-0.8.4-r2.ebuild
/usr/portage/x11-plugins/compiz-plugins-extra/compiz-plugins-extra-0.8.6-r1.ebuild
/usr/portage/x11-plugins/compiz-plugins-main/compiz-plugins-main-0.8.6-r1.ebuild
/usr/portage/x11-plugins/compiz-plugins-unsupported/compiz-plugins-unsupported-0.8.4-r1.ebuild
/usr/portage/x11-wm/compiz/compiz-0.8.6-r3.ebuild
/usr/portage/x11-wm/compiz-fusion/compiz-fusion-0.8.6.ebuild
/usr/portage/x11-apps/fusion-icon/fusion-icon-0.1-r2.ebuild
/usr/portage/x11-apps/ccsm/ccsm-0.8.4-r1.ebuild
/usr/portage/x11-themes/emerald-themes/emerald-themes-0.5.2.ebuild
/usr/portage/x11-wm/emerald/emerald-0.8.4-r2.ebuild

I first created the necessary directories in my local overlay:

mkdir -p /usr/local/portage/dev-python/compizconfig-python
mkdir -p /usr/local/portage/x11-libs/compiz-bcop
mkdir -p /usr/local/portage/x11-libs/compizconfig-backend-gconf
mkdir -p /usr/local/portage/x11-libs/compizconfig-backend-kconfig4
mkdir -p /usr/local/portage/x11-libs/libcompizconfig
mkdir -p /usr/local/portage/x11-plugins/compiz-plugins-extra
mkdir -p /usr/local/portage/x11-plugins/compiz-plugins-main
mkdir -p /usr/local/portage/x11-plugins/compiz-plugins-unsupported
mkdir -p /usr/local/portage/x11-wm/compiz
mkdir -p /usr/local/portage/x11-wm/compiz-fusion
mkdir -p /usr/local/portage/x11-apps/fusion-icon
mkdir -p /usr/local/portage/x11-apps/ccsm
mkdir -p /usr/local/portage/x11-themes/emerald-themes
mkdir -p /usr/local/portage/x11-wm/emerald

Then I copied the ebuilds and associated files into each directory and generated a manifest for each:

cd /usr/local/portage/dev-python/compizconfig-python
cp -r /usr/portage/dev-python/compizconfig-python/* .
ebuild compizconfig-python-0.8.4-r3.ebuild manifest
cd /usr/local/portage/x11-libs/compiz-bcop
cp -r /usr/portage/x11-libs/compiz-bcop/* .
ebuild compiz-bcop-0.8.4.ebuild manifest
cd /usr/local/portage/x11-libs/compizconfig-backend-gconf
cp -r /usr/portage/x11-libs/compizconfig-backend-gconf/* .
ebuild compizconfig-backend-gconf-0.8.4-r2.ebuild manifest
cd /usr/local/portage/x11-libs/compizconfig-backend-kconfig4
cp -r /usr/portage/x11-libs/compizconfig-backend-kconfig4/* .
ebuild compizconfig-backend-kconfig4-0.8.4.ebuild manifest
cd /usr/local/portage/x11-libs/libcompizconfig
cp -r /usr/portage/x11-libs/libcompizconfig/* .
ebuild libcompizconfig-0.8.4-r2.ebuild manifest
cd /usr/local/portage/x11-plugins/compiz-plugins-extra
cp -r /usr/portage/x11-plugins/compiz-plugins-extra/* .
ebuild compiz-plugins-extra-0.8.6-r1.ebuild manifest
cd /usr/local/portage/x11-plugins/compiz-plugins-main
cp -r /usr/portage/x11-plugins/compiz-plugins-main/* .
ebuild compiz-plugins-main-0.8.6-r1.ebuild manifest
cd /usr/local/portage/x11-plugins/compiz-plugins-unsupported
cp /usr/portage/x11-plugins/compiz-plugins-unsupported/* .
ebuild compiz-plugins-unsupported-0.8.4-r1.ebuild manifest
cd /usr/local/portage/x11-wm/compiz
cp -r /usr/portage/x11-wm/compiz/* .
ebuild compiz-0.8.6-r3.ebuild manifest
cd /usr/local/portage/x11-wm/compiz-fusion
cp -r /usr/portage/x11-wm/compiz-fusion/* .
ebuild compiz-fusion-0.8.6.ebuild manifest
cd /usr/local/portage/x11-apps/fusion-icon
cp -r /usr/portage/x11-apps/fusion-icon/* .
ebuild fusion-icon-0.1-r2.ebuild manifest
cd /usr/local/portage/x11-apps/ccsm
cp -r /usr/portage/x11-apps/ccsm/* .
ebuild ccsm-0.8.4-r1.ebuild manifest
cd /usr/local/portage/x11-themes/emerald-themes
cp -r /usr/portage/x11-themes/emerald-themes/* .
ebuild emerald-themes-0.5.2.ebuild manifest
cd /usr/local/portage/x11-wm/emerald
cp -r /usr/portage/x11-wm/emerald/* .
ebuild emerald-0.8.4-r2.ebuild manifest

My /etc/make.conf file contains the following lines required for my local overlay and to accept any licences:

PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /usr/local/portage/"
ACCEPT_LICENSE="*"

and I named my local overlay ‘local_overlay’:

mkdir /usr/local/portage/profiles
echo "local_overlay" > /usr/local/portage/profiles/repo_name

I then unmasked the ebuilds in my local overlay by listing them in the file
/etc/portage/package.unmask:

=dev-python/compizconfig-python-0.8.4-r3::local_overlay
=x11-libs/compiz-bcop-0.8.4::local_overlay
=x11-libs/compizconfig-backend-gconf-0.8.4-r2::local_overlay
=x11-libs/compizconfig-backend-kconfig4-0.8.4::local_overlay
=x11-libs/libcompizconfig-0.8.4-r2::local_overlay
=x11-plugins/compiz-plugins-extra-0.8.6-r1::local_overlay
=x11-plugins/compiz-plugins-main-0.8.6-r1::local_overlay
=x11-plugins/compiz-plugins-unsupported-0.8.4-r1::local_overlay
=x11-wm/compiz-0.8.6-r3::local_overlay
=x11-wm/compiz-fusion-0.8.6::local_overlay
=x11-apps/fusion-icon-0.1-r2::local_overlay
=x11-apps/ccsm-0.8.4-r1::local_overlay
=x11-themes/emerald-themes-0.5.2::local_overlay
=x11-wm/emerald-0.8.4-r2::local_overlay

I right-clicked on the Fusion Icon on the Panel and selected Quit, then I uninstalled the packages and reinstalled them from my local overlay:

emerge -aC compizconfig-python compiz-bcop compizconfig-backend-gconf compizconfig-backend-kconfig4 libcompizconfig compiz-plugins-extra compiz-plugins-main compiz-plugins-unsupported compiz compiz-fusion fusion-icon ccsm emerald-themes emerald

USE="-kde qt4" emerge -1v compizconfig-python compiz-bcop compizconfig-backend-gconf compizconfig-backend-kconfig4 libcompizconfig compiz-plugins-extra compiz-plugins-main compiz-plugins-unsupported compiz compiz-fusion fusion-icon ccsm emerald-themes emerald

The installed packages are now:

# eix -I compiz
[I] dev-python/compizconfig-python
Available versions: [M](~)0.8.4 {M}(~)0.8.4[1] [M](~)0.8.4-r1 {M}(~)0.8.4-r1[1] [M](~)0.8.4-r3 {M}(~)0.8.4-r3[1]
Installed versions: 0.8.4-r3[1](02:03:18 28/01/12)
Homepage: http://www.compiz.org/
Description: Compizconfig Python Bindings

[I] x11-libs/compiz-bcop
Available versions: [M](~)0.8.4 {M}(~)0.8.4[1]
Installed versions: 0.8.4[1](02:01:00 28/01/12)
Homepage: http://www.compiz.org/
Description: Compiz Option code Generator

[I] x11-libs/compizconfig-backend-gconf
Available versions: [M](~)0.8.4-r2 {M}(~)0.8.4-r2[1]
Installed versions: 0.8.4-r2[1](02:03:34 28/01/12)
Homepage: http://www.compiz.org/
Description: Compizconfig Gconf Backend

[I] x11-libs/compizconfig-backend-kconfig4
Available versions: [M](~)0.8.4 {M}(~)0.8.4[1] {aqua}
Installed versions: 0.8.4[1](02:03:59 28/01/12)(-aqua)
Homepage: http://www.compiz.org/
Description: Compizconfig Kconfig Backend

[I] x11-libs/libcompizconfig
Available versions: [M](~)0.8.4-r2!t {M}(~)0.8.4-r2!t[1]
Installed versions: 0.8.4-r2!t[1](02:01:31 28/01/12)
Homepage: http://www.compiz.org/
Description: Compiz Configuration System

[I] x11-plugins/compiz-plugins-extra
Available versions: [M](~)0.8.6-r1 {M}(~)0.8.6-r1[1] {gconf libnotify}
Installed versions: 0.8.6-r1[1](02:05:19 28/01/12)(libnotify -gconf)
Homepage: http://www.compiz.org/
Description: Compiz Fusion Window Decorator Extra Plugins

[I] x11-plugins/compiz-plugins-main
Available versions: [M](~)0.8.6-r1 {M}(~)0.8.6-r1[1] {gconf}
Installed versions: 0.8.6-r1[1](02:02:55 28/01/12)(-gconf)
Homepage: http://www.compiz.org/
Description: Compiz Fusion Window Decorator Plugins

[I] x11-plugins/compiz-plugins-unsupported
Available versions: [M](~)0.8.4-r1!m {M}(~)0.8.4-r1!m[1]
Installed versions: 0.8.4-r1!m[1](02:06:11 28/01/12)
Homepage: http://www.compiz.org/
Description: Compiz Fusion Window Decorator Unsupported Plugins

[I] x11-wm/compiz
Available versions: [M](~)0.8.6-r3 {M}(~)0.8.6-r3[1] {+cairo fuse gconf gnome gtk kde +svg}
Installed versions: 0.8.6-r3[1](02:41:46 28/01/12)(cairo gtk svg -fuse -gconf -gnome -kde)
Homepage: http://www.compiz.org/
Description: OpenGL window and compositing manager

[I] x11-wm/compiz-fusion
Available versions: [M](~)0.8.4-r1 {M}(~)0.8.4-r1[1] [M](~)0.8.6 {M}(~)0.8.6[1] {emerald gnome kde unsupported}
Installed versions: 0.8.6[1](02:07:11 28/01/12)(emerald -gnome -kde -unsupported)
Homepage: http://www.compiz.org/
Description: Compiz Fusion (meta)

[1] "local_overlay" /usr/local/portage

Found 10 matches.
# eix -I fusion
[I] x11-apps/fusion-icon
Available versions: [M](~)0.1-r2 {M}(~)0.1-r2[1] {gtk qt4}
Installed versions: 0.1-r2[1](02:06:20 28/01/12)(gtk qt4)
Homepage: http://compiz-fusion.org
Description: Compiz Fusion Tray Icon and Manager

[I] x11-wm/compiz-fusion
Available versions: [M](~)0.8.4-r1 {M}(~)0.8.4-r1[1] [M](~)0.8.6 {M}(~)0.8.6[1] {emerald gnome kde unsupported}
Installed versions: 0.8.6[1](02:07:11 28/01/12)(emerald -gnome -kde -unsupported)
Homepage: http://www.compiz.org/
Description: Compiz Fusion (meta)

[1] "local_overlay" /usr/local/portage

Found 2 matches.
# eix -I ccsm
[I] x11-apps/ccsm
Available versions: [M](~)0.8.4-r1 {M}(~)0.8.4-r1[1]
Installed versions: 0.8.4-r1[1](02:05:30 28/01/12)
Homepage: http://www.compiz.org/
Description: Compizconfig Settings Manager

[1] "local_overlay" /usr/local/portage
# eix -I emerald
[I] x11-themes/emerald-themes
Available versions: [M](~)0.5.2 {M}(~)0.5.2[1]
Installed versions: 0.5.2[1](02:07:05 28/01/12)
Homepage: http://compiz-fusion.org
Description: Emerald window decorator themes

[I] x11-wm/emerald
Available versions: [M](~)0.8.4-r2 {M}(~)0.8.4-r2[1]
Installed versions: 0.8.4-r2[1](02:06:55 28/01/12)
Homepage: http://www.compiz.org/
Description: Emerald Window Decorator

[1] "local_overlay" /usr/local/portage

Found 2 matches.

I launched KRunner (Alt-F2) and entered the command “fusion-icon” (without the quotes) to get the Fusion Icon back on the Panel, and then rebooted to check if everything was working correctly.

The only way I could get compiz-0.8.6-r3 to build this time was to specify "-kde" as a USE flag. The last time I merged that package, back in November 2011, it would build with USE="kde qt4" and enable me to select Emerald, GTK Window Decorator or KDE Window Decorator as the window decorator in Compiz. But, as the package will no longer build with the kde USE flag, I now only have the choice of Emerald or GTK Window Decorator. Perhaps this old, unmaintained compiz ebuild will no longer build with USE="kde" because I have since installed new versions of other packages on which it depends, and/or because I am now using KDE 4.8.0 instead of KDE 4.7.3. Anyway, at least I now have Compiz available for a while yet and can still select KWin or Compiz as the Window Manager.

EDIT (February 1, 2012): The stuff overlay has the following ebuilds, which do enable the KDE4 Window Decorator to be used with Compiz in KDE 4.8.0:

dev-python/compizconfig-python-0.8.4-r3
x11-libs/compiz-bcop-0.8.8
x11-libs/compizconfig-backend-gconf-0.8.8
x11-libs/compizconfig-backend-kconfig4-0.8.8
x11-libs/libcompizconfig-0.8.8
x11-plugins/compiz-plugins-extra-0.8.8
x11-plugins/compiz-plugins-main-0.8.8
x11-plugins/compiz-plugins-unsupported-0.8.8
x11-wm/compiz-0.8.8
x11-wm/compiz-fusion-0.8.8
x11-apps/fusion-icon-0.1-r2
x11-apps/ccsm-0.8.4-r1
x11-themes/emerald-themes-0.5.2
x11-wm/emerald-0.8.8

which can be installed as follows:

# layman -a stuff
# USE="kde qt4" emerge -1v compizconfig-python::stuff compiz-bcop::stuff compizconfig-backend-gconf::stuff compizconfig-backend-kconfig4::stuff libcompizconfig::stuff compiz-plugins-extra::stuff compiz-plugins-main::stuff compiz-plugins-unsupported::stuff compiz::stuff compiz-fusion::stuff fusion-icon::stuff ccsm::stuff emerald-themes::stuff emerald::stuff

Follow

Get every new post delivered to your Inbox.

Join 25 other followers