Friday, March 16, 2012

Installing Debian Linux on PPC Part IV - Configuring Stuff

[4/24/15: Updated for Jessie stable]

Once you've gotten past the login screen, you will likely be confronted with this as your desktop:


This is Openbox. Now take a minute to let your eyes adjust. I know the visual pizzazz is a bit overwhelming at first. The first thing you may notice is that middle-click brings down a desktop switcher menu and right-click brings down your root menu. The root menu starts off with very few items by default, so the first thing you want to do is add to it. Choose "Terminal emulator" from the root menu, then enter "obmenu".

Now just play with the editor and save changes. Add new items, then fill in the fields for label and execution command (usually the application's name, all lower case). To add a Debian menu with all your applications, install menu-xdg and then select "Reconfigure" from the root menu. Also, here's a nice video tutorial for adding a dynamic applications menu with icons (must have build-essential installed). For further creativity, you can add shortcuts for hibernate, restart, and shutdown, detailed below. And don't miss this great resource for Openbox, Urukrama's Openbox guide.

You can further spruce up your desktop by setting a wallpaper with feh and adding "sh ~/.fehbg &" to your autostart file (see Autostart on Login below). You can manage themes, fonts, and icons with LXAppearance, though you still may notice some things missing, like a taskbar, dock, and desktop icons. And that's the beauty of Openbox. You can add all those yourself, like your own favorite taskbar instead of the one handed to you by the Desktop Environment Gods. Or in low memory configurations, you can stick with the root menu, desktop switcher, and Openbox's Exposé-like keyboard shortcuts, because when push comes to shove that's really all you need.

More:

Sound
Graphics
Monitor Calibration
Wireless
Hotkeys
Swap Command and Control Keys
Trackpad
CPU Frequency Scaling
Speed Tweaks
Fstab
Yaboot
Lock Screen
Launchers, Docks, and Panels
Desktop Icons
Other Desktop Tools
Special Menu
Playing DVDs
Fonts
GTK Themes
Shadows & Transparency
Autostart on Login
Clean Caches

Sound

If sound isn't working out of the box, there are several steps you can take. First, you need a program that can unmute and change your master volume. For that:

sudo aptitude install alsa-base alsa-utils

Then run alsamixer in a terminal window. If it fails to open the mixer, run the following:

sudo modprobe snd-aoa-i2sbus

and retry alsamixer. If you now succeed in opening alsamixer, add "snd-aoa-i2sbus" to /etc/modules so the module is loaded after reboot. If, however, alsamixer still fails, skip a couple of paragraphs down to the soundcard detection bug.

Now that you have alsamixer open, unmute the Master Volume by selecting it and pressing the "m" key so the label switches from "MM" to "00", then turn it up with the up-arrow-key. Unmute "Speakers" and also "Headphone Detect Autoswitch" if you see it. Also, if you see a PCM level, turn it up to 75%. I read in an Ubuntu forum that a PCM level above that gives you distortion.

In the past, there was a bug in debian-installer that blacklisted your sound modules. I'm not sure it still applies, but look at the sound section on Ubuntu's PowerPCFAQ in case it's still causing problems.

If you still can't open alsamixer you're probably suffering from a soundcard detection bug in the new kernel that seems to afflict mostly iBooks. Your only choices are to compile a custom kernel with patches (this one and then this one on top of it) that fix this, or boot from Wheezy's 3.2.0-4 kernel that doesn't have the bug. (UPDATE: I've made available a custom Jessie kernel with the sound patches. You can find the download link at this post.)

So here's a quick digression on how to install the 3.2.0-4 kernel. If you've upgraded from an old Wheezy install, you should already have it in your /boot directory. If you don't or are running from a clean Jessie install, you need to add the following line to your /etc/apt/sources.list:

deb http://security.debian.org/debian-security wheezy/updates main

followed by a "sudo aptitude update". Then install "linux-image-3.2.0-4-powerpc" for single processors, "linux-image-3.2.0-4-powerpc-smp" for multiprocessors, or "linux-image-3.2.0-4-powerpc64" for 64 bit processors. Installing this will set it as your default boot kernel, and your previously installed kernel will be labeled "old" (i.e. on the second Yaboot screen, pressing tab will give you boot options "Linux" and "old", "Linux" being your default kernel and "old" being your previously installed kernel). The problem here is if a software upgrade automatically installs a newer kernel, that new kernel will become the default and your 3.2.0-4 kernel will be labeled "old". So to fix that issue, go to this Ubuntu post on how to symlink specific kernels and create permanently labeled sections for them in yaboot.conf. Then to make one of them your permanent default kernel, simply change the order in which they appear in yaboot.conf. Moving your Wheezy kernel section to the top will make it the default. As always, after making changes to yaboot.conf, don't forget to run "sudo ybin -v".

Once you've done all that, comment out or delete the added line in your /etc/apt/sources.list and run another "sudo aptitude update". After a reboot you should be able to open alsamixer.

I should finally mention PulseAudio. Friends don't let friends do PulseAudio. But if you must and you experience stuttering or crackling playback, this looks like a solution. Also, if alsamixer shows PulseAudio is muted after every reboot, you can fix it by installing pavucontrol (a gtk volume control app) and unclicking the mute button under Output Devices.

Graphics

(This section is mostly about Macs with ATI graphics cards since I don't have any experience with Nvidia cards. Go to the Ubuntu PowerPCFAQ for more on Nvidia. Pretty much that entire FAQ applies to Debian, too. The MintPPC forum is also a good resource. And a note on G5s, the yaboot parameter nouveau.noaccel=1 is sometimes used to get a useable desktop.)

ATI/Radeon:

The first thing is to install firmware-linux-nonfree from the non-free repository if you haven't already--this contains firmware for many ATI cards. (Just don't reboot quite yet, or you may encounter a graphics lock-up at your login screen. Read a little further down for the boot parameter "radeon.agpmode=-1" on how to deal with that.)

Beginning with Jessie, KMS (Kernel Modesetting) for Radeon cards is enabled by default. What's more, the latest radeon driver has dropped support for non-KMS modesetting, so if you disable KMS because of stability issues, you won't be able to use the radeon driver for even 2D acceleration. Instead, you'll be kicked back to the unaccelerated fbdev driver.

So let's focus on getting KMS and radeon to work for us first. Some caveats: KMS breaks sleep on PowerPC, and it was never adequately tested on PowerPC so it has stability issues. It is, however, the only way to get 3D acceleration; you can use hibernate instead of sleep; and there are workarounds to make it stable.

To first see if KMS is giving you 3D acceleration:

sudo aptitude install mesa-utils

to get the utilities glxgears and glxinfo. Then run:

LIBGL_DEBUG=verbose glxinfo | grep render

If you see "OpenGL renderer string: Software Rasterizer" or "libGL error: failed to load driver: ...", you're not getting 3D acceleration, only 2D acceleration. For 3D, you'd see something like, "OpenGL renderer string: Gallium 0.4 on ATI RV350". Seeing "Software Rasterizer" or other errors means you may be suffering from this r300 default depth bug. As a workaround, r300 (ATI 9700) users have to either patch the Mesa source or install these already-patched Ubuntu MATE .debs (link updated). I've tested the MATE .debs and they work fine in Debian. So to install them, unzip the .debs, use the cd command to change your current directory to where the .deb files are, and then run:

sudo dpkg -i *.deb

The "*.deb" means the command applies to all files ending in .deb in your current directory. This will downgrade those mesa packages, so afterward you'll want to pin or hold them to prevent aptitude from automatically installing newer unpatched versions when doing an "aptitude upgrade". Instructions for "holding" a package are at this Ubuntu help page (scroll down to "Introduction to Holding Packages").

Now when you reboot, you should have 3D (big sigh of relief). If you experience system freezes or other stability issues (and you'll know almost instantly), you need to force PCI mode by entering the following boot parameter at your second Yaboot screen:

Linux radeon.agpmode=-1

Note that's a negative one. I've also seen people recommend adding "video=offb:off" to turn off the open firmware framebuffer, but it wasn't necessary on my Powerbook. After testing, you can make these boot parameters permanent by opening /etc/yaboot.conf and adding the line append="boot parameters inside quotes". For example, like this:
image=/boot/vmlinux
    label=Linux
    read-only
    initrd=/boot/initrd.img
    append="video=offb:off radeon.agpmode=-1"
After you save the file, run "sudo ybin -v" to activate the changes in Yaboot.

Now your Radeon freezing problems should be solved.

There's one issue, though, that no boot parameter will fix. This is the black screen of death. This is something that affects 14" G3 iBooks, but I know of no other models affected. Once booting is finished, the system is active but the screen remains black, even after switching to a console. The only workaround is to reboot and disable KMS to get a working console screen and make some edits to give you (me) a usable desktop. So reboot and enter this at the second Yaboot prompt to disable KMS:

Linux nomodeset

This should take you to a login screen with psychedelic colors, so switch to a console with ctrl + alt + F1 and open /etc/modprobe.d/fbdev-blacklist.conf in a text editor and comment out (prepend with a #) the line "blacklist radeonfb". Then edit the file /etc/modules, adding the line "radeonfb" without quotes. These edits ensure that the radeon framebuffer module loads on boot. Next, reboot and enter this at the second Yaboot prompt:

Linux nomodeset video=offb:off

(video=offb:off is necessary to allow the radeon framebuffer to load) The psychedelic colors should be gone, but you may have only 8-bit colors. If that's the case, switch to a console and kill the X server with:

sudo /etc/init.d/lightdm stop (replace lightdm with whatever your login manager is)

Then generate a xorg.conf file and open it in a text editor with these commands:

sudo Xorg -configure
sudo cp /root/xorg.conf.new /etc/X11/xorg.conf
sudo nano /etc/X11/xorg.conf


Once in xorg.conf, enter "DefaultDepth 24" under the "Screen" section like this:
Section "Screen"
     Identifier "Screen0"
     Device     "Card0"
     Monitor    "Monitor0"
     DefaultDepth    24
...
Or for slightly faster performance you could enter 16 instead of 24. Also, you must change "radeon" to "fbdev" for "Driver" under the "Device" section. Finally, run startx and you should see a desktop with 24-bit colors.

Once everything works, make the above boot parameters permanent by adding this append line to your boot kernel in /etc/yaboot.conf:

append="nomodeset video=offb:off"

And then run:

sudo ybin -v

Now on reboot you should have a usable, though slow, desktop. Running Compton in the background will improve window dragging speed, but expect video playback with the fbdev driver to be poor. In MPlayer or VLC you'll be limited to X11 video output only.

ATI Rage 128:

For Rage 128 cards, you also need firmware-linux-nonfree. If the resulting desktop gives you garbled or jumbled text, you need to generate a xorg.conf file and add this line to the "Device" section:
    Option   "RenderAccel"   "false"
This should give you clearly rendered text in 24 bit color. Also, if your desktop is lower than your monitor's native resolution, you need to add more liberal horizontal sync and vertical refresh values to xorg.conf. Under the "Monitor" section, add these two lines:
    HorizSync    31.0 - 81.0
    VertRefresh    56.0 - 76.0
and then add a "Modes" line to your "Screen" section similar to this:
Section "Screen"
    Identifier    "Screen0"
    Monitor       "Monitor0"
    Device        "Device0"
    SubSection "Display"
        Depth    24
        Modes     "1280x1024"
    EndSubSection
EndSection
Old notes:

Finally, I'll leave some old notes that only apply to Wheezy and Ubuntu's still supported 12.04 LTS:

ATI users first need to install firmware-linux-nonfree for required firmware. At this point, Radeon users will have excellent 2D acceleration with the radeon driver, but if you want 3D working there are two ways to do it. First, you can activate KMS by entering the following boot parameters at your second Yaboot screen:

Linux video=radeonfb:off radeon.modeset=1

If this gives you instability issues, you can also force PCI mode by adding "radeon.agpmode=-1" (negative 1). If KMS just doesn't work for you, though, you can try a second method. First, downgrade these four Mesa packages (they're labeled ubuntu but they work the same on Debian):

libgl1-mesa-dri_7.11-0ubuntu3.3_powerpc.deb
libgl1-mesa-glx_7.11-0ubuntu3.3_powerpc.deb
libglapi-mesa_7.11-0ubuntu3.3_powerpc.deb
libglu1-mesa_7.11-0ubuntu3.3_powerpc.deb

Download the .deb files, use the cd command to change your current directory to the directory of the .deb files, and then run the following:

sudo dpkg -i *.deb

This assumes there are no other .deb files in that directory (the "*.deb" means the command will apply to all .deb files in that folder). Then reboot, and at the second Yaboot screen enter the following to ensure KMS is disabled:

Linux radeon.modeset=0

Now you should have 3D, and you can confirm by installing mesa-utils, then running:

glxinfo | grep render

As long as the output doesn't say Software Rasterizer, you're good. Now lock the mesa packages to prevent them from updating by following the instructions here (scroll down to "Introduction to Holding Packages"), and make the yaboot parameter permanent by opening /etc/yaboot.conf and adding the line:

append="radeon.modeset=0" (don't forget the quotes)

at the end of the subsections "image=/boot/vmlinux" and "image=/boot/vmlinux.old", etc., and tabbed in like the other lines. Finally, run "sudo ybin -v" to activate the Yaboot changes.

Monitor Calibration

I've never used hardware calibration, but others report that a Pantone Huey works with Gnome Color Manager. In any event, monitor calibration should look good out of the box, but my old G3 iBook screen looked a little washed out, so I installed Redshift to warm the color temperature a bit. The command I used was this:

redshift -O 6200

That's a capital O, not zero. Once I was happy with what I saw, I added the command to my autostart file so it runs on login (see Autostart on Login below).

Wireless

To get your wireless cards working, you need additional firmware from the "contrib" and "non-free" repositories. First generation Airport card users need to install firmware-linux-nonfree, while Airport Extreme users need firmware-b43-installer. There's also firmware-b43legacy-installer, but I'm not clear which cards, if any, require that.

If wireless-tools and wpasupplicant aren't already installed, do that, too. Then install wicd, a simple graphical client to set things up. You will also need your wireless interface, which can be found with "sudo iwconfig" (you may need to reboot after installing the firmware). The wireless interface should be eth1 or wlan0.

Next, launch wicd from your Debian menu or with "wicd-client" from a terminal. In preferences, add your wireless interface (as well as your OpenDNS servers I know you're all using 'cause it's good for you). After closing preferences, find your network on the list (you may have to click Refresh), check the "Automatically connect to this network" box, click the Properties button, and add in any preferred IP and DNS settings. Then check the "Use Encryption" box, choose WPA 1/2 (Passphrase), and enter your password. Click OK and you can connect. At some point a network icon should appear in your panel's system tray.

If you can't get a stable connection with wicd, there are a couple of options. You can reboot and hope the problem magically fixes itself (this sometimes works). You can also disable or uninstall wicd and set up a connection from the command line. Instructions are detailed at Debian's wifi wiki. Basically, the steps are:

sudo chmod 0600 /etc/network/interfaces
wpa_passphrase your-ssid your-passphrase
sudo nano /etc/network/interfaces


and then add the wireless section detailed in the wiki to the interfaces file. Then execute "sudo ifup wlan0" and your connection should be up, and automatically up after reboot. This may be more stable but not very flexible. There are instructions at this Debuntu page to configure wifi roaming, but first generation Airport cards don't seem to work with it.

Also on the subject of first generation Airport cards' shortcomings, they only support WPA + TKIP router security. They don't support WPA + AES, or WPA2 in any configuration.

Hotkeys

PBButtonsd takes care of this. To edit the PBButtonsd config file:

sudo nano /etc/pbbuttonsd.conf

Reading it, it should mostly make sense. The LCD_Brightness line is commented out by default, so uncomment it if you want the setting to carry over on restart. Also, if sleep on your machine is broken, don't forget to change the suspend options here to prevent it.

A few more notes. First, aluminum Powerbook users need to add "i2c-dev" to /etc/modules to get your keyboard backlight keys working. Second, you can install laptop-mode-tools to enable pbbuttonsd to spin down your hard drive when on battery, but often the spin down rate is too aggressive and can shorten the lifetime of the drive, so be wary. And third, your screen brightness on reboot will be determined by the LCD_Brightness setting in pbbuttonsd.conf. Your brightness levels changed by the hotkeys won't be "remembered."

And if your hotkeys still won't work and you're about to go insane, try them in conjunction with the fn key.

Swap Command and Control Keys

You can have your command and control keys behave like a Mac's by swapping them. Open a text editor and enter the following text:

remove Mod4 = Super_L Super_R
remove Control = Control_L Control_R
keysym Control_L = Super_L
keysym Control_R = Super_R
keysym Super_L = Control_L
keysym Super_R = Control_R
add Mod4 = Super_L Super_R
add Control = Control_L Control_R


Save the file as .Xmodmap (don't forget the leading dot) in your home directory, then run the command:

xmodmap ~/.Xmodmap

The above configuration works on my Powerbook. If the xmodmap command gives you errors, it's probably because you have an iBook which maps its command and control keys slightly differently. This is the text that works on my iBook:

remove Mod4 = Super_L
remove Control = Control_L
keysym Control_L = Super_L
keysym Super_L = Control_L
add Mod4 = Super_L
add Control = Control_L


Once everything works, add the above xmodmap command to your autostart file (see Autostart on Login below). A couple of notes: This will only work in an X session. If you switch to a console, your keys will revert. Also, restarting the mouseemu daemon (like if you change mouseemu's settings) may break this until you rerun "xmodmap ~/.Xmodmap".

Trackpad

To change the tap-to-click setting on your trackpad, you can use, ironically enough, the trackpad command (this didn't work on my aluminum Powerbook, see the Synaptics link at end of this section to use a synaptics.conf to enable tap-to-click). To turn off tap-to-click:

sudo trackpad notap

Replace the "notap" with "tap" to turn it on. "man trackpad" gives you all the options. To have your settings carry over after reboot, you can create a startup script with:

sudo nano /etc/init.d/trackpad

and enter these two lines in the new file:

#!/bin/sh
trackpad notap


After saving it, you make it executable like this:

sudo chmod 0755 /etc/init.d/trackpad

and then add it to your boot scripts with:

sudo update-rc.d trackpad defaults

You may see a warning about missing LSB information and overrides, but you can ignore it. See this Debian article about removing the script if you no longer want it.

Also, trackpads on later iBooks and Powerbooks can add multi-touch gestures by setting up the "Synaptics" driver. I wrote a post on this for my Aluminum Powerbook.

CPU Frequency Scaling

For x86 users, CPU frequency scaling is handled by the kernel, but PowerPC users need to install powernowd for this power-saving feature (extending your laptop's battery and possibly quieting your fans). It adjusts to CPU load, so you won't notice any performance slowdowns, and though the defaults work fine, you can edit /etc/default/powernowd to customize (UPDATE: Debian maintainers removed this from their repositories because..., but reader Eric H pointed me to a powernowd.deb file kept here new link here. You can install by downloading it, then cd to its current directory, and run "sudo dpkg -i powernowd_1.00-1.1+b1_powerpc.deb").

You can see it working by running:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

to display your current CPU frequency, and:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

to list available frequencies. Note: my laptops have two available frequencies, full power and 50% power, but my Sawtooth's 7400 chip has only one frequency, which means powernowd is somewhat useless on it.

Speed Tweaks

There are a few speed tweaks you can use to improve application responsiveness. First, as mentioned in Part II - Installing the Base System, you should use the mount option "noatime". It should be in your /etc/fstab file as one of the options on your Linux partition. If it's not there, add it. Not doing so will make your hard drive perform slower than it should. Also, there are a couple of things you can add to your /etc/sysctl.conf file. Open it with a sudo nano and add the following two lines at the bottom:

vm.swappiness=10
vm.vfs_cache_pressure=50


The default values are 60 and 100, respectively. Changing them will make your system less likely to swap to disk until it really needs to. I've seen some people recommend a swappiness value of 10 for desktop users, others say 20. If you're running a server, you should probably stick with the defaults, but desktop users will definitely want to lower them.

Fstab

Now let's edit our fstab file to auto-mount our Mac partitions on startup. First you need to create mount points like this:

sudo mkdir /mnt/MacOS
sudo mkdir /mnt/Media


These commands create new directories in the /mnt directory called MacOS and Media. You can name yours whatever you want, but these are mine. Then open your fstab file with:

sudo nano /etc/fstab

and add new lines at the end, for each partition you want to mount. In my case, this:

/dev/sda10 /mnt/MacOS hfsplus defaults 0 0
/dev/sda11 /mnt/Media hfsplus defaults 0 0


Put tabs between all the entries, not spaces. You can look up your own partition numbers by running "sudo mac-fdisk -l" (that's -l for list). They're either going to be /dev/hdaN or /dev/sdaN. And if you want read/write access to hfsplus volumes, you need to do a few extra things. First, make sure journaling is turned off on your OS X partition (OS 9 partitions don't have journaling). Then install hfsprogs and hfsutils and change "defaults" to "rw,user" in /etc/fstab for your partition. Finally, reboot.

If you still don't have write access, you may need to run fsck.hfsplus (a disk repair utility, installed by hfsprogs), so unmount the volume:

sudo umount /mnt/yourmountpoint

while noting there's no "un" in umount. Then run:

sudo fsck.hfsplus -f /dev/sdaN

Finally you can reboot, or remount with the "rw" and "user" options like this:

sudo mount -t hfsplus -o rw,user /dev/sdaN /mnt/yourmountpoint

One last note, you can write to a journaled OS X volume with the mount option "force", not that it's a good idea.

Yaboot

To configure boot options and set which system is the default, you need to edit /etc/yaboot.conf. It's good practice to back it up before editing since making a mistake here can have disastrous consequences, so:

sudo cp /etc/yaboot.conf ~/yaboot-bak.conf

Then open /etc/yaboot.conf in a text editor:

sudo nano /etc/yaboot.conf

Find the main section with options like "timeout" and "enablecdboot". If you're dual booting OS 9 and you don't see macos= (or macosx= for OS X), then add it yourself with the line:

macos=/dev/yourmacpartition

with yourmacpartition found with "sudo mac-fdisk -l". Subsequently, your MacOS will appear as a boot option alongside Linux. To set which OS boots by default after the timeout, add the line "defaultos=macosx" or "defaultos=macos" (without quotes). If you add no line, yaboot will automatically boot into Linux. And about the timeout, if it's too long you can change the value where increments of 10 equal one second. Finally save the file, and this is important, anytime you make changes to yaboot.conf you must run:

sudo ybin -v

for the changes to register. Run that and you're done.

Lock Screen

What do we do with a problem like XScreensaver? Its ugly lock screen is stuck in the '90s, and it's kind of entertaining reading its longtime maintainer stubbornly refuse to change it in bug report threads. But it's still ugly and people actually avoid whole distributions that include it by default. My solution is to not install it (See the beauty of building from the ground up?). Instead, I let DPMS take care of powering off the screen; your screen automatically shuts off after 10 minutes of inactivity unless overridden by another screensaver. For a lock screen, I use slock, part of the suckless-tools package. I also install xautolock and put the following in my autostart file to activate the lock screen after 30 minutes of inactivity:

xautolock -time 30 -locker "slock" &

Another screen locker with a bit more customization is i3lock. Here's an i3 thread that talks about taking a screenshot, blurring it, and using it as the screen lock image. Cool idea, but read the comments on how to mitigate certain security concerns.

One more cool idea is to have your Mac wake from hibernate with the lock screen activated. Do this by having your hibernate menu command point to a script file containing this:

#!/bin/bash

systemctl hibernate && slock


Replace "slock" with your screen locker of choice, save it as something.sh, and make it executable with:

chmod u+x /path/to/something.sh (the "u+x" making it executable for just you the user)

Launchers, Docks, and Panels

If right-clicking the desktop to bring down a root menu isn't your thing, you can add a Quicksilver-like capability with Kupfer. Just like Quicksilver, Kupfer is an application launcher that does much more, like locate and open files, search the web, etc. You can set its preferences to start automatically on login, and it's reasonably lightweight. An even lighter-weight option is dmenu from the suckless-tools package. Also, Synapse seems to be back from the dead and is available in Stretch.

As far as docks and panels go, LXPanel can be a good approximation for a Tiger dock. By default it looks like a Windows taskbar, but you can transform it in the panel's preferences. There's also Cairo-dock, a more Leopard-like 3D dock, though it's a bit buggy and overweight in features. For a lightweight but slick-looking panel and system tray, Tint2 is the answer to your call.

Desktop Icons

If you want to go further in achieving a more Mac-like interface, you can add icons to your desktop. There's the PCManFM or xfdesktop way detailed at this Crunchbang wiki, though they may not be satisfactory. PCManFM's desktop is prone to crashing, and xfdesktop copies your files dragged to the desktop rather than moving them (Why? Just why?).

For an alternative, you can try Rox-filer's pinboard. This will give you icons on your desktop, though they're iconified links; the actual files stay in their original folders. You can also add application launchers by dragging their /usr/share/applications/*.desktop files to the desktop. I wrote all about integrating Rox-filer on your desktop if you're interested.

Other Desktop Tools

So you probably want a few more desktop tools, starting with a system monitor. The best choice is Conky. It's very configurable and you can download other people's conkyrc files to tinker with (link to mine is at the bottom of this post). Just be aware, other people's battery monitor syntax is usually Intel only, but I posted this solution for PowerPC users.

You don't have Spotlight on your new desktop, but you can get something similar with Tracker. (UPDATE: this uses a ton of CPU, so it's probably not worth it) It's a search indexer that comes with a gui frontend, so install tracker-gui and aptitude will take care of all the dependencies. The command "tracker-needle" launches the search GUI, and "tracker-preferences" launches the preferences (you may need to enter "tracker-control -s" to start indexing).

Another search program, that has the advantage of not constantly indexing your drive, is Searchmonkey. It's a frontend for find and grep and can be quite powerful.

One cool feature OS X users are familiar with is the ability to right-click on a word to bring up a built-in dictionary. Linux users can have this with Artha. An offline dictionary, it runs in the background when you set it as a startup item, and you bring it up by highlighting a word and hitting a hotkey combination. Just make sure to dismiss the Artha window with close and not the quit button, because the quit button will quit the program.

Special Menu

In Openbox you have to manually add menu items for shutdown and reboot, etc., so why not add a Mac OS 9-style Special menu? Here's how to do it. In Jessie, you can now use systemd commands for shutdown and reboot, etc., without sudo, so no more "sudo shutdown now -r". You can find the whole list at this Arch Wiki. Armed with that, open obmenu and select New Menu and name it "Special". Then add items to it for Empty Trash..., Restart, Shutdown, etc. I'm using Rox-filer which technically has no trash folder, so the "Empty Trash..." is purely decorative;) But if you have a trash folder in Thunar or PCManFM, installing trash-cli and then entering the command trash-empty might be the trick.

There's one more important step: give these menu items popup boxes to prevent accidental shutdowns, etc., and ruining your unsaved work. You do this by opening ~/.config/openbox/menu.xml and adding the "<prompt>" option to each item along with the dialogue in the popup you want. For example, my Special menu items look like this:
<item label="Empty Trash...">
    <action name="Execute">
        <execute>command</execute>
        <prompt>Permanently remove the files in 
your trash?</prompt>
    </action>
</item>
<separator/>
<item label="Lock Screen">
    <action name="Execute">
        <execute>slock</execute>
    </action>
</item>
<item label="Logout">
    <action name="Exit"/>
</item>
<separator/>
<item label="Hibernate">
    <action name="Execute">
        <execute>systemctl hibernate</execute>
        <prompt>Set the computer to hibernate?
</prompt>
 </action>
</item>
<item label="Restart">
    <action name="Execute">
        <execute>systemctl reboot</execute>
        <prompt>Restart the computer?</prompt>
    </action>
</item>
<item label="Shut Down">
    <action name="Execute">
        <execute>systemctl poweroff</execute>
        <prompt>Shutdown the computer?</prompt>
    </action>
</item>
You see there's no <prompt> entry for Logout. That's because Openbox's Exit command (found in that menu's "Action" options in obmenu) already comes with a dialogue prompt.

Now when you save this and choose Reconfigure, your new Special menu should appear.

Playing DVDs

If you want to play copy-protected commercial DVDs, you need to install libdvdcss2 from the Deb-Multimedia repository. If you haven't already, add the repository to your sources list with:

sudo nano /etc/apt/sources.list

and add the single line:

deb http://www.deb-multimedia.org jessie main

Then run the commands:

sudo aptitude update
sudo aptitude install deb-multimedia-keyring
sudo aptitude install libdvdcss2


Ignore the scary language about untrusted packages and complete the install.

Fonts

You can make your fonts look nicer, especially in a web browser, by creating a ".fonts.conf" file. Open your text editor and paste in the following:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 <match target="font" >
  <edit mode="assign" name="autohint" >
   <bool>true</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hinting" >
   <bool>true</bool>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="hintstyle" >
   <const>hintslight</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="rgba" >
   <const>rgb</const>
  </edit>
 </match>
 <match target="font" >
  <edit mode="assign" name="antialias" >
   <bool>true</bool>
  </edit>
 </match>
<match target="font">
   <edit mode="assign" name="lcdfilter">
   <const>lcddefault</const>
   </edit>
 </match>
</fontconfig>
Then save it in your home folder as ".fonts.conf" (don't forget the leading dot), and when you login again your fonts should look much better. If you're dissatisfied, try changing "autohint" from true to false.

GTK Themes

If you've noticed GTK3 applications like Transmission and Abiword aren't following the theming you set in LXAppearance, it's because GTK3 applications aren't compatible with GTK2-only themes. To make everything consistent, choose a theme that's compatible with both GTK2 and GTK3. Zukitwo is one such theme. Make sure you have its required engines installed, then download it and unpack it to your ~/.themes folder (create the folder if it doesn't exist) and fire up LXAppearance to choose it. This should automatically insert a gtk-3.0 folder inside ~/.config, but if it doesn't you can add it manually like this (single line):

sudo cp -r ~/.themes/Zukitwo/gtk-3.0 ~/.config/gtk-3.0

Now your theme will be consistent across all GTK2 and GTK3 applications. And a Zukitwo Openbox theme is here, too.

There's also the problem of qt apps like VLC defaulting to the ugly Windows '95 theme, and to fix that you can install qt4-qtconfig. Its launch command is "qtconfig", and you can have it set all your qt apps to follow your GTK theme or several other choices.

Shadows & Transparency

Want fancy decorations like shadows and transparency? You need compton for that:

sudo aptitude install compton

Then start it up with:

compton -b

The -b option runs it as a background daemon. To enable all the effects you want, edit ~/.config/compton.conf, and run "killall compton && compton -b" to test your edits. I've linked to my compton.conf file at the bottom of this post. It creates shadows, background window transparency, and slight menu transparency.

Once you're happy with everything, add it to your autostart file.

Note: if your graphics configuration is giving you extremely slow window dragging, running Compton should help with that.

Autostart on Login

In order to have "compton -b" (and any other command) autostart on login, you must add it to an autostart file. Openbox's system-wide autostart file is /etc/xdg/openbox/autostart, but your user autostart is ~/.config/openbox/autostart. If it's not already there, create it with:

nano ~/.config/openbox/autostart

with a dot before config, and add your text. Mine looks like this:

# swap command and control keys
xmodmap ~/.Xmodmap &

# have Rox draw wallpaper and desktop icons
rox --pinboard=MyPinboard &

# draw the same wallpaper with feh to fix a
# Conky bug.
sh ~/.fehbg &

# warm the color temperature on my washed-out,
# ancient iBook display
redshift -O 6200 &

# shadows and transparency
compton -b &

# automount external devices to /media
udisks-glue &

# system monitor
conky &

# offline desktop dictionary
artha &

# system tray volume icon
volumeicon &

# run slock after 30 minutes inactivity
xautolock -time 30 -locker "slock" &

# 2s delay ensures tint2 transparency
(sleep 2s && tint2) &


Always add an "&" to the end of every command in this file. Otherwise, programs after it may not run.

Clean Caches

One last thing to do, if you have limited disk space, is to clear your aptitude cache. All .deb packages you download are stored there enabling you to reinstall something without re-downloading it, but they're not essential so you can clear them out with:

sudo aptitude clean

And with that, my to-do list is pretty much exhausted. Here are a few screenshots, the first of Openbox's root menu with an applications menu added, and also Conky at the bottom of the screen:

Openbox Applications Menu

Here's a Synapse launcher in the foreground with Iceweasel and Audacious in the background:

Openbox Synapse Audacious Iceweasel

And here's a more Mac-like interface with PCManFM drawing icons on the desktop and Cairo-dock on the bottom:

Openbox PCManFM Cairo-dock

My GTK theme is FlatStudioLight and my Openbox theme is EasyGray, slightly modded. If you're interested, here's my conkyrc file (for 1024x768 screens), my compton.conf (shadows, background windows transparent, slight menu transparency), my tint2rc (autohide, left side of screen), and two themerc files for EasyGray, one to match the FlatStudioLight GTK theme, and one to match FlatStudioGray.

Next is the final part of this series, "Bugs & Quirks".

Part I - Pre-Installation
Part II - Installing the Base System
Part III - Installing the GUI
Part V - Bugs & Quirks

50 comments:

  1. Very, very cool tutorial, Dan. I've just installed MintPPC 11 on my iBook G3 800mhz (only 384 MB of ram) and everything is running smoothly. Iceweasel is amazing, noticeable faster than TenFourFox on the G3. I guess Linux does the magic. Anyway, i'd like to see how much more i can improve my iBook's performance. You have tried Mint and now you've got a beautiful minimal Debian installation. Did you notice a significative difference of speed and general performance between the two of them? Mint seems to have a lot of pre-installed stuff i won't use. Basically, i want this laptop for the same purposes than you. So what do you think? Should i try Debian?

    And, by the way, what's the name of that Audacious skin? I like it a lot.

    ReplyDelete
  2. You can find the Audacious skin by choosing the View menu, then Interface --> Winamp Classic Interface. I really like Audacious. It's very low on system resources. I tried another player, Exaile, and it was using 30%-40% of my cpu just to play a music file.

    Since MintPPC and what I have are both Debian-based, there shouldn't be much difference in performance between the two systems. Unless you're running low on RAM. If I remember right, MintPPC used about 100 MB of RAM on startup, and my Openbox install uses about 60 MB. Also, if sleep works for you in MintPPC, it might not in Debian. So if you're not bumping up against your RAM limits, maybe stick with MintPPC as long as you're satisfied.

    I was also wowed by Iceweasel's speed. It's a real eye-opener.

    ReplyDelete
  3. Thanks mate... I think i'm going to stick with Mint for now. Everything works fine, including sleep and battery meter, so if there is not a significant difference in performance, i'll stay where i am. Have you tried the new Ubuntu 12 Live CD? They have released a PowerPC version! I'm typing this using Firefox 11 right from the CD on my G4. In case you're interested: http://cdimage.ubuntu.com/daily-live/current/

    ReplyDelete
  4. Late post but....

    I also installed MintPPC 11 on my ibook G4 1.07 ghz. Yowsa. Its faster than mintPPC 9. Like lots faster. Midori is gob smackingly fast, feels at times like I am on a dual processor intel macbook.No flash of course but Flashvideoreplacer and Downloadhelper continue to work well in Iceweasel. minitube is kinda buggy though...some videos play smooth, some herk and jerk and then crash minitube.

    I installed viewtube (a greasemonkey script) in midori to get some youtube playback capability. Yes, midori supports scripts....sorta. You have to turn scripts on in the preferences, when you go to a site that has a installabled script it will ask if you want to install. And now, words of caution. Not all scripts work right, and some will crash midori bigtime. They are stored in ~/.local/share/midori/scripts, I usually rm them from the commandline if there is a problem. It uses totem plug in and gtk streamer to play and it works well....sorta. Some videos will choke up halfway through, and go to a blank window. All other videos afterwards are the same. The only fix is to restart the computer, so maybe its a totem problem. Happens I'd say one in every twenty to thirty youtube videos.

    Viewtube has various settings at the top of the player window, you need to keep it on low def mp4 or low def flv for single processor PPC macs. If one setting doesn't work usually the other will. There is also a + setting at the far left, this is a "fake" fullscreen similar to HTML 5 video in Google Chrome.

    Also, you have to install flashblock to prevent Midori from trying to play the WebM file on site. HTML 5 is unwatchable.

    Finally, Fans on my ibook run at full blast above 50 C. Which is anytime you play any video. Doesn't seem to be an easy fix.

    ReplyDelete
  5. BTW: debian-multimedia.org is now deb-multimedia.org
    So /etc/apt/sources.list needs to be updated accordingly.

    Thanks so much for great tutorial!

    - Mr K.

    ReplyDelete
  6. That is a excelent guide!
    I'm starting a quick version using some of your tips and some others collected over Google.

    Cheers!

    ReplyDelete
  7. This comment has been removed by the author.

    ReplyDelete
  8. Thanks for the information. Ive installed Debian on my powerbook but my god it gets hot and the fans go full blast just reading the bbc website. Any ideas how to control the fans? thanks!

    ReplyDelete
    Replies
    1. So is something hogging the CPU? What does running top in a terminal say? If your browser is using 100% CPU and not stopping, you can disable plugins and see if that helps. Your Powerbook shouldn't be getting hot just by reading a webpage, so obviously something's wrong, maybe a runaway process in the background.

      Or if it's just your fans going full blast even when the CPU isn't taxed, there's this:

      http://mac.linux.be/content/fans-running-full-speed-g4-laptops

      Delete
    2. Dan, Thanks for this guide and the specific PM tips, too. I'd really like to use the section above on CPU Frequency Scaling, but here's what I'm getting in terminal emulator, after downloading the powernowd package:
      root@stp:/home/marlon/Downloads# sudo dpkg -i
      dpkg: error: --install needs at least one package archive file argument

      Type dpkg --help for help about installing and deinstalling packages [*];
      Use `dselect' or `aptitude' for user-friendly package management;
      Type dpkg -Dhelp for a list of dpkg debug flag values;
      Type dpkg --force-help for a list of forcing options;
      Type dpkg-deb --help for help about manipulating *.deb files;

      Options marked [*] produce a lot of output - pipe it through `less' or `more' !

      I'm sure this is an easy obstacle, but can anyone point me in the right direction? Thanks

      Delete
    3. I probably should have included the filename as part of that command, as in:

      sudo dpkg -i /path/to/file.deb

      Delete
  9. how can i get xbmc "eden" working?

    ReplyDelete
  10. Excellent tutorial, a big thank you! I'tried almost everything you posted, the only thing I couldn't manage to work is graphic acceleration. Installed non-free firmware and putting <video=radeonfb:off radeon.modeset=1 at yaboot prompt I can get openGL rendering (Gallium 0.4 on ATI R350) but the machine freezes as soon as I open a video. My Mac is a G4 Dual FW800 1,42Ghz, Radeon 9800XT 256Mb, 2Gb Ram, Debian 7.3 Mint PPC. Am I missing something? BTW it's not a deal breaker because the machine runs VERY well even without openGL rendering (software rasterizer)

    ReplyDelete
    Replies
    1. .EDIT Downgraded Mesa Utils to 7.11 and now openGL rendering works, very nice indeed!

      Delete
  11. Another option for menu transparency without using Compton is xcompmgr-dana, found at http://oliwer.net/xcompmgr-dana/. You'll have to configure, compile, and install it, then add the m switch to the autostart file, with the decimal percentage of how opaque you want the menus to be, i.e. -m .86 would be 14% transparency.

    ReplyDelete
    Replies
    1. I forgot to add that this is only for menu transparency. For window transparency, you would need transset-df, and configure it for EACH window that you want transparent. It's quite a bit of work and hassle, so Compton would be your best bet if you want both menu AND window transparency.

      Delete
  12. Dan, thanks for updating this guide. Upgraded from Wheezy to Jessie yesterday -- the "black screen of death" struck down my iBook G4, but your workaround (booting the Wheezy kernel with the radeonfb parameter) allowed me to boot the iBook and check out Jessie. Hoping these issues will go away in the near future. Thanks!

    ReplyDelete
    Replies
    1. I left a bug report here:

      https://bugs.freedesktop.org/show_bug.cgi?id=90220

      Delete
    2. Thanks for the report, Dan. FWIW, I noticed a thread on the debian-powerpc mailing list from earlier this month about a problem with Xorg 1.17 - workaround at the time was to downgrade Xorg.

      I'm having the same problem with my eMac. I used apt-get to upgrade to Jessie last night - on reboot, the boot process runs about halfway through and then the screen shuts off. Maybe it's me, but I couldn't even detect a backlight. Again, booting with the Wheezy kernel and the radeonfb parameters allowed me to boot successfully. Maybe it's the upgrade that is at issue, too? I'm going to try to reinstall from an .iso... who knows? Thanks again!

      Delete
    3. Don't reinstall! I've had yesterday the same problem with a black screen after an update and a reboot.
      I logged in from another machine via ssh and installed again the mesa libs.
      After a reboot, everything was fine again.

      Delete
  13. Huge thanks to rican-linux for his post over at PowerPC LIberation (http://powerpcliberation.blogspot.ca/2015/04/debian-testing-for-my-ibook-g4.html)

    Booting Jessie kernel with this worked on the iBook G4:

    Linux radeon.modeset=1 video=offb:off video=1024x768-32 video=radeonfb:off radeon.agpmode=-1

    ReplyDelete
  14. I have a iBook G4 1.33GHz and untill step 3 I've followed everything, installed all the same of you, and okay.
    But when I reboot to enter the GUI, the computer freezes in the Login Screen (a blue background with debian 8.0 writen, is this right?). For a few seconds if I press FN + F1 the screen bright control works, but then complete freezes. F1 don't work, switch to terminal don't work too. What should I do?
    I'm new in Linux and I don't know many about terminal stuff.

    ReplyDelete
    Replies
    1. Okay i've fixed it.

      Boot with the config:

      Linux radeon.modeset=1 video=offb:off video=1024x768-32 video=radeonfb:off radeon.agpmode=-1

      and system worked.

      Delete
  15. Usage of the pre-patched MESA .debs (http://1drv.ms/1CjA1IO) with the current Rage 128 (r128) driver (for Debian 8 Jessie; stable) results in garbled text on the entire screen on iMac G3's. Bummer. I don't even know if downgrading to MESA 7.x is a viable option any more with Jessie.

    ReplyDelete
    Replies
    1. Did you create a xorg.conf file and add the "Device" option "RenderAccel" "false"? That's what worked for me on a Sawtooth with a Rage 128 Pro.

      Delete
    2. I should add I didn't install the MESA .debs on that computer.

      Delete
  16. It is running perfect on my iMac G5. Thank you very much for your instructions.
    Currently I'm running Jessie with new desktop design from Bunsenlabs (crunchbang.org)

    ReplyDelete
  17. Hi & thank you very much for the detailed instructions. I have been using my old ibook as a VNC terminal at home and for traveling. Until yesterday (2015-8-24) my debian wheezy installation had been working just fine. After an upgrade (with apt) the system lost the ability to wake up from sleep which had always worked before. Is there anyone who just recently experienced the same? Has there been something in a kernel upgrade? Unfortunately I don't recall which packages were automatically upgraded. Entering sleep mode seems to work (hdd off, display off, white LED "snoring"). But when I want to resume the backlight goes on, "snoring" stops, but that's all. Screen stays black. No network connection. No reaction to keyboard keys (i.e. also like eject CD via pbbuttonsd).

    Is there anyone out there with an old ibook G3 14 inch (white) with debian wheezy and with suspend still working after the recent upgrade? If so, is it possible to get a list of all installed packages? Maybe I ruined something by removing a component required for sleep/resume to work while trying to fix the issue?
    (jurgen.hench(at)gmail.com).

    Any help appreciated!

    ReplyDelete
    Replies
    1. Your kernel probably got updated. Sleep broke for me, too, so I've switched to using hibernate (suspend-to-disk) instead.

      Delete
  18. Hi Dan
    thanks a lot - I filed a bug report at Debian, hoping they would fix it at some point. However, until then, I will try to enable hibernate. However, my attempt to hibernate my ibook only worked to the point where it powered down. Upon reboot, resuming failed. Are there any tricks or packages one needs to install? Is it enough to change all entried in the configuration file of pbbuttonsd from "suspend" to "hibernate". I see that hibernation also has its charme since it does not spend battery. But I would like to rely on the feature.

    Best

    Juergen

    ReplyDelete
  19. :( unfortunately, hibernate does not seem to "wake up" on my ibook G3. It but after reading the memory back, the system freezes. I have no idea why, and there are no helpful error messages. Now trying to upgrade to jessie, to be at least up to date with the system. It would be nice to do something useful with my old ibook.


    Thanks for your help.

    ReplyDelete
  20. The link you posted for powernowd is dead, so if you can't host the Debian version yourself, I've found the Ubuntu version (which seems to work fine with Jessie, since my iBook's less hot) here.
    http://ports.ubuntu.com/ubuntu-ports/pool/universe/p/powernowd/powernowd_1.00-1ubuntu5_powerpc.deb

    ReplyDelete
    Replies
    1. Thanks, I updated the link to a Mediafire download. I tried the Ubuntu version even before the Debian version, since I discovered it from their PowerPC FAQ, and it worked fine for me, too.

      Delete
  21. Hello Dan, can you upload the Patch Debs form KMS? Because the link Download from OneDrive is expired. Thank You So Much! Your Blog is amazing!

    Hank

    ReplyDelete
  22. Hello Mr. Dan, your Blog is so amazing! Thank you for share this Debian PPC tutorial with US. So i have a problem, i need of this Deb files from mesa. But this link http://1drv.ms/1CjA1IO is dead. Can you upload again?

    Thank You

    ReplyDelete
    Replies
    1. I'll try to find a new link, or since I have the original zip file, I'll upload it myself. Maybe in the next day or two.

      Thanks for pointing it out!

      Delete
    2. Thanks so much Dan, I'm Waiting for the new Package for continue the tutorial.

      Delete
    3. Hey Dan, you know some method to watch videos in HTML5 and Flash on Debian?

      Delete
    4. The flash equivalents in Linux never worked well for me. I stream video through Mpv player using Youtube-dl. There's also SMTube in Jessie backports. You can read a bit more here:

      https://wiki.debian.org/PowerPC/FAQ#How_do_I_watch_Youtube.3F

      Delete
  23. You ,Sir are a bloody freaking genius ! Have a usable ibook G4 now . The magic is/are the patched Mate debs , went from software render to Gallium 0.4 on ATI RV350 direct rendering . Faster than OS X 10.4.11 & tenfourfox .. The Ancient of Days sawtooth G4 400 mHz has lxde and Mesa 7 debs on it and works also as per your instructions.... We are in the presence of genius my friends

    ReplyDelete
  24. Trop gros merci.
    Ibook g4 tout jeune.
    Super travail !

    ReplyDelete
  25. I ran into the black screen of death on my eMac (7445, Radeon 7500)

    ReplyDelete
    Replies
    1. You can try installing the radeon UMS debs posted here:

      http://ubuntuforums.org/showthread.php?t=2294789

      They work in Debian, too, if you first install this:

      https://launchpad.net/ubuntu/trusty/powerpc/libgcrypt11/1.5.3-2ubuntu4

      The libgcrypt in Debian is too old.

      These packages should give you an accelerated non-KMS desktop by using the legacy Radeon driver that still supported non-KMS. So now when you disable KMS to get past the black screen, you use radeon instead of the unaccelerated fbdev driver.

      Delete
  26. Thank you !

    Your trick with the "snd-aoa-i2sbus" (sudo modprobe and add to etc/modules) worked on my Powerbook G4 (Powerbook5,4). Before that the soundcard was not recognized !

    ReplyDelete
  27. do you have any other suggestion on how to achieve the 3d acelleration for those affected by r300 bug on wheezy?

    You're on Wheezy? I don't think that bug existed on Wheezy. I think it started with Jessie. For getting 3D acceleration on Wheezy, I left some notes at the end of the Graphics section under "Old notes:".

    ReplyDelete
  28. I tried to install debian 10 ppc64 netboot to a iMac G5

    The installation was sucessful without using any mirrors.

    Now yaboot stuck at: "Unknown or corrupt file system"

    ext4 partition for System
    Swap partiton
    new world rom partition with yaboot

    ------------------------------------
    Booted into open firmware: Yaboot is found in devalias HD

    IDK whats wrong

    Can someone help me? :)

    ReplyDelete