Awesome 3.4.8 on Slackware

Update April 2012: It has been brought to my attention (Thanks to wildwizard and idnotcrae from LQ) that due to the split of xcb-util into the base package and xcb-util-wm as of version 0.3.8, the tutorial below does NOT work for Awesome 3.4.11. Unfortunately, upgrading the stock xcb-utils on 13.37 breaks a few things and as I no longer run AwesomeWM, I am afraid I am not going to update this tutorial. If someone would like to run Awesome 3.4.11 on Slackware 13.37, please have a look at this thread.

[This tutorial has been tested on Slackware64 13.1, Slackware64 13.37 and Slackware64-current as of 20/06/2011]

Ever since I started using the i3 window manager, I’ve really become a fan of tiling WMs. They are quick, efficient and make good use of your screen space. Having used i3 for a few months, I decided to give AwesomeWM a try. I followed the steps from this guide. What turned out was that things have changed since the publication of the above mentioned guide and now it’s much easier to install Awesome 3.x on Slackware64 13.1 (and -current).

First of all you need to grab the cairo’s slackbuild and source from Slackware’s source/l and recompile it with xcb. In order to achieve it you need to edit cairo.Slackbuild and add the line in bold:

CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--mandir=/usr/man \
--sysconfdir=/etc \
--disable-gtk-doc \
--disable-glitz \
--disable-quartz \
--disable-static \
--enable-xcb \
--disable-win32

Dependencies:

Afterwards, you need to install all the dependencies needed by AwesomeWM: lua, imlib2, libev. They are available from www.slackbuilds.org. Finally, you can grab the source of libxdg form here and create a Slack package. You can either do it manually, or use src2pkg. Once a libxdg package is created in /tmp, you can install it with the following command:

# installpkg /tmp/libxdg-basedir*.tgz

Awesome

The only thing that’s left is to grab the latest Awesome source, build a package and install it on the system.  There’s, however, one thing you might want to change. The default Awesome source code installs config files to /usr/etc which is against Slackware’s standard filesystem policy.  Normally all the config files in Slackware go to /etc.  We need to make some slight modifications of the code:

1. Untar the source:

tar xvjf  awesome-3.4.8.tar.bz2
cd awesome-3.4.8

2. Open awesomeConfig.cmake with you favourite editor

3. Change the following:

if(DEFINED SYSCONFDIR)
set(SYSCONFDIR ${SYSCONFDIR} CACHE PATH "config directory")
else()
set(SYSCONFDIR ${PREFIX}/etc CACHE PATH "config directory")
endif()

To

if(DEFINED SYSCONFDIR)
set(SYSCONFDIR /etc CACHE PATH "config directory")
else()
set(SYSCONFDIR /etc CACHE PATH "config directory")
endif()

4. Run ‘make’
5. As root:

mkdir /tmp/awesome-3.4.8
make install DESTDIR=/tmp/awesome-3.4.8
cd /tmp/awesome-3.4.8
makepkg -l y -c n /tmp/awesome-3.4.8.tgz
installpkg /tmp/awesome-3.4.8.tgz

The Awesome Window Manager is now installed on your system.
This is an example of Awesome’s xinitrc (taken from the Awesome Slackbuild for 13.0). To add it to xwconfig you need to create xinitrc.awesome and copy it to /etc/X11/xinit/

#!/bin/sh
# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    /usr/bin/xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    /usr/bin/xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
    /usr/bin/xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
    /usr/bin/xmodmap $usermodmap
fi

exec awesome

That’s it! You can start the Awesome Window Manager.

I shall discuss its configuration in a separate post.

have fun.

Read More

Spring cleaning of your Slackware system

Sometimes you can find yourself in a situation where you are suddenly faced with a message telling you that there’s no more free space on your system. There might be a few things you can do to free some of it.

The first reason for that can be /tmp which doesn’t get cleaned automatically. I create my temporary files in my home directory so I can safely delete the contents of /tmp every time I shut down the system. You don’t have to do it manually, though. The following command should be placed in /etc/rc.d/rc.local_shutdown

/usr/bin/find /tmp -mindepth 1 -maxdepth 1 -print0 | xargs -0r /bin/rm -rf

As this file doesn’t exist on the default installation of Slackware, you need to create it first and give it execution permission:

# chmod +x /etc/rc.d/rc.local_shutdown

This will delete ALL the files in the /tmp directory every time the system shuts down, so be careful what you put there! Generally, the rc.local_shutdown file might also be useful in other ways. If you need to perform any other tasks on shutdown, you can put them in the file. Remember to test your commands well before you include them in the shutdown file.

The /tmp directory can also be mounted on a separate partition,  which makes it easy to limit the size of the temporary files directory.

If you have been using sbopkg (an excellent Slackbuilds browser) for a long time, it might also have kept a lot of source files.  First you can check (and optionally delete) if there are any obsolete cached sources:

# sbopkg -o
[ Checking for obsolete sources ]
This may take a few moments. Press <ESC> to abort.
100%[====================================================]
It appears there are no obsolete sources in /var/cache/sbopkg.

As most people do not need the sources of packages installed via sbopkg, you may also want to clean  the whole sbopkg cache. You can do it in sbopkg’s utility menu.

It’s also good practice to find directories/files that take up most space. The following command will display 20 largest files/directories  in a specified place:

du -a /home/user/ | sort -n -r | head -n 20

You can go through the list and decide which things you want to delete.

Update: A quicker way may be using ncdu.

Another way of freeing some space is by uninstalling the apps that you no longer need. If you don’t know what you are doing, it is NOT recommended to uninstall anything from the Slackware’s default installation. You might  break some parts of  the system . A safer approach would be  uninstalling programs that you have manually installed either through sbopkg or any other way. You can browse programs installed via sbopkg using one of its menu items.
You can also remove packages using pkgtool. In order for pkgtool to be able to manage your package, it shouldn’t be compiled using the traditional ./configure ; make ; make install method. You can either create your own slackbuild which will compile, package and install your application, or let the excellent src2pkg tool do it for you.

Happy cleaning

Read More

Mouse woes after the last batch of upgrades

I have installed the huge batch of updates that Pat gave us for -current.  One of the major changes were the switch from HAL to udev of a new shiny X system.

The only problem I had after restarting X was that my USB mouse pointer seemed to have acquired a mind of its own. Following AlienBOB’s advice on new ways

of configuring X I extracted the relevant portion of my old xorg.conf dealing with the input device and saved it in a separate file in /etc/X11/xorg.conf.d/10-usbmouse.conf.

Works like a charm:)

Read More

emacs remember.el

For quick jotting down one can use the remember.el module of emacs. Simply add the following to your ~/.emacs:

(org-remember-insinuate)
(setq org-directory “~/data/orgs/”)
(setq org-default-notes-file (concat org-directory “/notes.org”))
(define-key global-map “\C-cr” ‘org-remember)

Obviously you need to adjust the paths accordingly.  As you can see Ctrl-c r will bring up a remember window where you’ll be able to jot down ideas. As it automatically loads the org mode, you can make use of all its features while making a note. Once you’re done, simply press C-c C-c to save the note in the org directory (in my case it’s ~/data/orgs/notes.org). The entry will start with the date of note creation and the first line of the note as a kind of the title.

edit: I realise there’s so much more to ‘remember’ than I’ve posted here. I’ll look into it in the near future.

Read More

Upgraded to -current

Recently I haven’t been actively blogging.  One of the contributing factors was the stability of 13.1. In pursuit of living on the edge I’ve upgraded  the system to Slackware64-current. No complaints so far. I’ve been using Robby’s XFCE-4.6.2 most of the time.

Read More

SSH login without a password

If you regularly use ssh to log in to another machine within your LAN, you might be interested in establishing some level of trust between the machines. In order to achieve it we can generate a pair of keys. If it’s to be a mutual trust the keys need to be generated on all machines. In my case, it’s going to be a one-way trust. First create a pair of keys on the machine you usually log in from. Let’s call the machine ‘local_machine’ and the username will be ‘sheldon’:

sheldon@local_machine:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sheldon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sheldon/.ssh/id_rsa.
Your public key has been saved in /home/sheldon/.ssh/id_rsa.pub.
The key fingerprint is:
3d:23:ab:6b:f3:27:46:44:6b:76:e2:41:5e:79:b8:d1 sheldon@local_machine
The key's randomart image is:
+--[ RSA 2048]----+
|           +     |
|        o = E    |
|       + o +     |
|        O.o      |
|       =S++      |
|        oo o     |
|       ..        |
|      o.o .      |
|     .o=.o       |
+-----------------+

Note that we need to leave the passphrases blank.

Then you need to copy the public key on the remote machine (remote_machine) with the user ‘fred’:

ssh-copy-id -i ~/.ssh/id_rsa.pub fred@remote_machine

Now fred@remote_machine ‘trusts’ sheldon@local_machine and lets him in without asking for his password. If it doesn’t work, you can edit /etc/ssh/sshd_config on the remote machine and add the following lines and restart ssh:

RSAAuthentication yes
PubkeyAuthentication yes

Have fun!

Read More

BCM4312 on Slackware

UPDATE: 09/06/2012 – I haven’t used much of my netbook since I wrote this post. I’ve just installed Slackware 13.37 on it and to it appears that now it’s just a question of installing b43-fcutter and broadcom-wl from SlackBuilds.org.

It’s been with great pleasure that I welcomed the recent release of Slackware 13.1. I decided to refrain from commenting on it until I have tested it for a few days. In my honest opinion, it’s one of the best Slackware releases to date. So far I haven’t encountered a single problem with it.

So far I have configured Slackware64 on 2 machines. I’ve started setting up my netbook – it’s a Dell Inspiron mini 1011 with the infamous BCM4312 wireless chipset. I am going to describe the steps necessary to get it work in Slackware.

To enable it, you need to load the device firmware. Here’s how you do it on Slackware:

1. Install b43-fwcutter, which is a tool to extract Broadcom’s wireless chip firmware.
It is available from Slackbuilds.org.
2. Download the firmware form here.
3. Extract it and copy the necessary files to the firmware directory:

tar xjf broadcom-wl-4.150.10.5.tar.bz2

cd broadcom-wl-4.150.10.5/driver

b43-fwcutter -w /lib/firmware/ wl_apsta_mimo.o

You are ready to go!

Read More

The emacs way: boxquote.el

Finally I found a nice way of quoting in Emacs. It is particularly useful in gnus. The module in question is called boxquote and can be obtained from here.

It’ll draw a nice border around the quoted text:

 ,----
 | This is the quoted text.
 `----

That’s the relevant entry from .emacs:

(require 'boxquote)
(global-set-key [f7] 'boxquote-region)

(global-set-key (kbd "C-c q y")   'boxquote-yank)
(global-set-key (kbd "C-c q r")   'boxquote-region)
(global-set-key (kbd "C-c q u")   'boxquote-unbox-region)
(global-set-key (kbd "C-c q t")   'boxquote-title)
(global-set-key (kbd "C-c q i")   'boxquote-insert-file)
(global-set-key (kbd "C-c q k")   'boxquote-kill)
(global-set-key (kbd "C-c q s")   'boxquote-shell-command)

(global-set-key (kbd "C-c q b")   'boxquote-buffer)
(global-set-key (kbd "C-c q p")   'boxquote-paragraph)
(global-set-key (kbd "C-c q n")   'boxquote-narrow-to-boxquote)
(global-set-key (kbd "C-c q w")   'boxquote-where-is)
(global-set-key (kbd "C-c q d f") 'boxquote-describe-function)
(global-set-key (kbd "C-c q d k") 'boxquote-describe-key)
(global-set-key (kbd "C-c q d v") 'boxquote-describe-variable)

If you use org-mode with standard key bindings, you are quite likely to encounter problems
as C-c b is also a common mapping for org-iswitchb:

(define-key global-map "\C-cb" 'org-iswitchb)

I personally changed the boxquote mappings to C-c q, which semantically makes more sense to me anyway

Read More

Hello world!

Hello world!

Starting with anything else would be highly inappropriate.

Are we there yet? Today we’ve been given another shot of updates to the -current branch of Slackware. Thank you for that. Looking at the state of things I’m inclined to believe that 13.1 might still be released this month, which would be great.

Read More