A suckless debian installation
Remember my last story about my awesome debian installation? Well it didn’t work out as I wanted it. Awesome itself was somehow to heavy for my taste. So many customization options. Huge lua
scripts for all kind of tasks - no matter how simple they where etc etc.
Well I was reading suckless.org a lot lately and liked it more and more.
I like:
- the idea that they don’t parse configfiles but instead you modify a
config.h
or the sourcecode and recompile the project - keeping there projects small and simple
- don’t implement to many unnecessary features
All that makes the strength of their projects
Challenges:
Since they think you should recompile the project if you want some custom options/configurations or changes packaging doesn’t make sense for thier software. This is a bit of a problem on debian - since it has such a nice package managment and security concept around it.
I recommend to completly avoid all the suckless software packaged by debian (it’s very outdated anyways) and follow the official suckless recommendations to compile thier software by hand. Good thing - you normally just need the offical source tar files and can easily compile them (except of surf
but I’ll show you how to compile it since it’s a bit more tricky to compile webkitgtk+)
In the end you have a nice debian system and a very tiny suckless desktop environment which fits perfectly to your taste.
Let’s Begin
Install Debian stretch on A1181 Macbook
We start with a Apple Macbook 2006 (A1181)
- which can be a bit tricky to install since it has a 32bit i686
cpu. If you have a different device skip this step.
I have two of those and found that the offical installation guide found in the official debian wiki was only working with one of those two
This is a way to install debian stretch on it which always works.
Start out with a MacOS X Tiger (10.4) or MacOS X Leopard (10.5). Make sure to backup the following file /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
it’s the firmware file for the iSight Webcam which later can be installed on linux to get the integrated iSight Webcam to work.
Install rEFInd
Bootmanager to boot an debian stretch netinstall i686 USB-Drive. Download the A binary zip file
from http://www.rodsbooks.com/refind/getting.html unzip it and run the script sudo ./refind-install
inside the unzipped folder.
Now plugin the debian flashdrive - reboot and boot the debian installer.
At section [!] Software selection
untick everything except standard system utilities
and maybe SSH server
.
Inside a fresh debian minimal install
Wifi
This will put the psk and other stuff into the interfaces
file.
wpa_passphrase SSID >> /etc/network/interfaces
Afterwards edit the mess in the file into the following:
auto wls1
iface wls1 inet dhcp
wpa-ssid SSID
wpa-psk <PSK FROM wpa_passphrase>
Install Software
You might want to install sudo
and add your normal user to the sudo
group.
apt-get update; apt-get install -y vim tmux xinit git build-essential wget curl
vim
Set vim
as default system editor
update-alternatives --config editor
Keyboard settings
Edit /usr/share/X11/xkb/symbols/us
section xkb_symbols "mac"
comment the following and add the missing lines.
// key <LSGT> { [ section, plusminus, section, plusminus ] };
// key <TLDE> { [ grave, asciitilde, dead_grave, dead_horn ] };
key <TLDE> { [ section, plusminus, section, plusminus ] };
key <LSGT> { [ grave, asciitilde, dead_grave, dead_horn ] };
This switches the keys with the ±/§
and the ~/\
`.
// include "level3(ralt_switch)"
include "level3(lalt_switch)"
This makes it possible to use the left alt key as the modifier for the alt+u + umlaut
.
tmux
Start tmux
everytime automatically (add to ~/.bashrc
) - you might want to add this to the root account too.
# tmux
[[ $TERM != "screen" ]] && exec tmux
Default configuration (add to ~/.tmux.conf
)
set-window-option -g mode-key vi
alsa audio
apt-get install -y alsa-utils
make sure to use alsamixer
to turn the volume up and unmute everything.
Suckless Suite
dwm
# install dependencies
sudo apt-get install -y libx11-dev libxft-dev libxinerama-dev
# dwm
wget https://dl.suckless.org/dwm/dwm-6.1.tar.gz
tar xvf dwm*.tar.gz
cd dwm-*/
# fix for linux
sed -i 's,FREETYPEINC = ${X11INC}/freetype2,#FREETYPEINC = ${X11INC}/freetype2,g' config.mk
Replace #define MODKEY Mod1Mask
in config.h
with #define MODKEY Mod4Mask
to set MODKEY to CMD
/Windows Key
sed -i 's/#define MODKEY Mod1Mask/#define MODKEY Mod4Mask/g' config.h
enable mac like copy/pase -> cmd
+c
and cmd
+v
sudo apt-get install -y xclip xvkbd
add the follwing to config.h
static const char *mcopycmd[] = { "sh", "-c", "xclip -selection primary -o | xclip -selection clipboard -i", NULL };
static const char *mpastecmd[] = { "sh", "-c", "xclip -selection clipboard -o | xvkbd -xsendevent -file - 2>/dev/null", NULL };
[...]
{ MODKEY, XK_c, spawn, {.v = mcopycmd } },
{ MODKEY, XK_v, spawn, {.v = mpastecmd } },
Compile and install
make
sudo make install
st - suckless terminal (xterm alternative)
wget https://dl.suckless.org/st/st-0.8.1.tar.gz
tar xvf st*.tar.gz
cd st-*/
make
sudo make install
dmenu
wget https://dl.suckless.org/tools/dmenu-4.8.tar.gz
tar xvf dmenu*.tar.gz
cd dmenu-*/
make
sudo make install
surf
First you need to install webkitgtk+
# install ninja build system
wget https://github.com/ninja-build/ninja/archive/v1.8.2.tar.gz
tar xvf v1.8.2.tar.gz
cd ninja-*/
./configure.py --bootstrap
sudo cp ninja /usr/local/bin/
# install dependencies
wget http://ftp.at.debian.org/debian/pool/main/b/brotli/libbrotli1_1.0.3-1_i386.deb
wget http://ftp.at.debian.org/debian/pool/main/w/woff2/libwoff1_1.0.2-1_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/b/brotli/libbrotli-dev_1.0.3-1_i386.deb
wget http://ftp.de.debian.org/debian/pool/main/w/woff2/libwoff-dev_1.0.2-1_i386.deb
sudo dpkg -i lib*
sudo apt-get install -y libgcr-3-dev
# webkitgtk
wget https://webkitgtk.org/releases/webkitgtk-2.20.0.tar.xz
tar xvf webkitgtk-*.tar.xz
cd webkitgtk-*/
Tools/gtk/install-dependencies
cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja
ninja
sudo ninja install
install surf from git
git clone https://git.suckless.org/surf
cd surf/
make
sudo make install
install codecs for youtube and similar sites
sudo apt-get install -y libxvidcore4 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-fluendo-mp3 gstreamer1.0-libav
slstatus
git clone git://git.suckless.org/slstatus
cd slstatus
I use the following configurations config.h
// [...]
static const struct arg args[] = {
/* function format argument */
{ cpu_perc, "[CPU %3s%%] ", NULL },
{ ram_perc, "[RAM %2s%%] ", NULL },
{ battery_state, "[BAT %s", "BAT0" },
{ battery_perc, "%s%%] ", "BAT0" },
{ run_command, "[VOL %s%%] ", "/bin/sh -c \"amixer get Master | tail -n1 | grep -Po '\\[\\K[^%]*' | head -n1\"" },
{ ipv4, "[wls1 %s] ", "wls1" },
{ datetime, "[ %s ]", "%F %T" },
};
this shows CPU, RAM, Battery state and percent, audio volume, wifi ip, date and time
compile and install
make
sudo make install
.xinitrc
Add ~/.xinitrc
to prepare our keyboard layout and start dwm
setxkbmap us mac
slstatus &
st &
exec dwm
X11 autostart
Start startx
automatically after console login on tty1
(add to ~/.bashrc
)
# X11
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
startx
fi
Optional Software
iSight Firmware
To use the integrated iSight Webcam of the Macbook A1181 install isight-firmware-tools
https://packages.debian.org/de/stretch/isight-firmware-tools.
Copy the file AppleUSBVideoSupport
to a place on the Macbook and take a note of it’s absoulute path. The installation of isight-firmware-tools will ask for the path and you need to enter it there.
wget http://ftp.de.debian.org/debian/pool/contrib/i/isight-firmware-tools/isight-firmware-tools_1.6-2+b2_i386.deb
sudo dpkg -i isight-firmware-tools_1.6-2+b2_i386.deb
Now the firmware should be installed and you can remove ~/Desktop/AppleUSBVideoSupport
if you want to.
Golang
wget https://dl.google.com/go/go1.10.1.linux-386.tar.gz
cd /opt && sudo tar xvf ~/go1.10.1.linux-386.tar.gz && cd -
mkdir -p $HOME/workspace/go
add to ~/.bashrc
# GOLANG
export GOROOT=/opt/go
export GOPATH=$HOME/workspace/go
mkdir -p $GOPATH
export PATH=${PATH}:${GOROOT}/bin
export PATH=${PATH}:${PATH}/bin
More infos
Links
- https://wiki.debian.org/InstallingDebianOn/Apple/MacBook/2-1
- https://wiki.koumbit.net/SeBas/LinuxSurMacbook (french but might help - use google translate)