page info

Setting Up a Linux Box

Every year or two I like to put a fresh coat of linux paint on my main workstation. Once upon a time, this involved installing Slackware, then Gentoo, then Debian, then Ubuntu. After the Gnome3 debacle, I moved on to Mint+Gnome3 Fallback. Now I'm using MATE, but it's all still much of a sameness.

Despite it's continuously declining standards, the Linux desktop is still probably my favorite of the "Big Three." The base install of any OS is going to be pretty spartan. This is a list (mostly for my own future usage) for the steps I have to take to install a new Machine.

general packages:

apt-get update && apt-get upgrade

apt-get install vim-gtk mdadm python-setuptools banshee mysql-client mysql-server mysql-common mysql-server git subversion build-essential python-dev ttf-mscorefonts-installer libqt4-network libqt4-opengl libqtcore4 libqtgui4 compiz-gnome compizconfig-settings-manager compiz-plugins-extra usb-creator-gtk humanity-icon-theme gnome-dust-icon-theme elementary-icon-theme breathe-icon-theme shiki-dust-theme feh gnome-terminal pan gmtp postgresql openssh-server xclip scrot

mint-only packages:

apt-get install virtualbox-nonfree skype

(it appears skype might be in the ubuntu partner repos?)

raid5 homedir:

On my desktop, the homedir is all on raid5.

sudo mdadm --assemble -s
sudo mkdir /mnt/omocha
# add this to /etc/fstab;  mount `/mnt/omocha` to test:
echo "/dev/md/1 /mnt/omocha auto defaults,user,exec 0 0" | sudo tee /etc/fstab
# edit /etc/passwd, change /home/jmoiron => /mnt/omocha/jmoiron

(reboot to get nvidia drivers active)

handbrake:

sudo apt-add-repository ppa:stebbins/handbrake-snapshots
apt-get update && apt-get install handbrake-gtk

Adjustments for Linux on MacbookAir6,2 (2013)

Bootloader

Ubuntu 15.04 MATE edition installed just fine using EFI on the MacbookAir6,2, though it refused to not install a bootloader. Since I am using rEFInd this was a bit of a problem, but it was solved by:

This allowed me to fall through to rEFInd, which let me boot OSX and re-install it to whatever boot sector it needed to go in.

Synaptics Touchpad

This is still a work in progress.

The default configuration for the synaptics touchpad is diabolical, and MATE is a small project that has its hands full treading water and migrating to gtk3 and doesn't have time for all this multitouch mumbo jumbo.

Nearly all of the information out there on the internet for this is 5 years old and many pieces of software in the stack appear to be unmaintained. Here are the options you have:

The mtrack driver actually figures out gestures itself, and binds them to mouse buttons, allowing you to just straight up bind those buttons to actions in the wm like normal. This sounds nice, but the synaptics driver seems to work better out of the box, and has a few notable features (chiefly scroll inertia, aka "Coasting"). The other advantage it has is synclient which allows you to modify settings on the fly without restarting X.

Assuming you go the synaptics + touchegg route, the touchegg defaults are actually pretty excellent. I added two additional things:

<gesture type="DRAG" fingers="4" direction="LEFT">
    <action type="SEND_KEYS">Super+Left</action>
</gesture>

<gesture type="DRAG" fingers="4" direction="RIGHT">
    <action type="SEND_KEYS">Super+Right</action>
</gesture>

These map the 4-finger left & right swipe to cmd+Left and cmd+Right, which for me switches virtual desktop.

In addition to this, I encountered a few bugs I simply couldn't work around and wrote quick scripty solutions to. The first is that the touchpad driver was spontaneously deciding to configure the speed & acceleration completely differently to what I wanted them to be:

[   482.676] (--) synaptics: bcm5974: Vendor 0x5ac Product 0x291
[   482.676] (**) Option "FingerHigh" "50"
[   482.676] (**) Option "RTCornerButton" "0"
[   482.676] (**) Option "RBCornerButton" "0"
[   482.676] (**) Option "TapButton2" "0"
[   482.676] (**) Option "PalmDetect" "on"
[   482.676] (**) Option "PalmMinWidth" "12"
[   482.676] (**) Option "PalmMinZ" "255"
[   482.676] (**) Option "ResolutionDetect" "true"
[   482.676] (**) Option "MinSpeed" "0.8"
[   482.676] (**) Option "MaxSpeed" "2.0"
[   482.676] (**) Option "TapAndDragGesture" "off"
[   482.676] (**) Option "SoftButtonAreas" "0 0 0 0 0 0 0 0"
[   482.676] (--) synaptics: bcm5974: touchpad found
[   482.676] (**) bcm5974: always reports core events
[   482.688] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.2/input/input7/event7"
[   482.688] (II) XINPUT: Adding extended input device "bcm5974" (type: TOUCHPAD, id 11)
[   482.688] (**) synaptics: bcm5974: (accel) MinSpeed is now constant deceleration 1.2
[   482.688] (**) synaptics: bcm5974: (accel) MaxSpeed is now 2.50
[   482.688] (**) synaptics: bcm5974: (accel) AccelFactor is now 0.017
[   482.688] (**) bcm5974: (accel) keeping acceleration scheme 1
[   482.688] (**) bcm5974: (accel) acceleration profile 1
[   482.688] (**) bcm5974: (accel) acceleration factor: 2.000
[   482.688] (**) bcm5974: (accel) acceleration threshold: 4

I'm not the only person to experience this, but I tried for an hour to fix it and then decided to just use synclient + autostart to wipe over all the configs manually. I did this with a pretty simple Python script called synpad which saves and restores synclient settings. I've added my settings to that gist as well.

The other problem with the touchpad has to do with syndaemon and its typing recognition. This is actually useful in theory: if you are typing, it temporarily disables the touchpad so that you can't click on things and interrupt your typing.

In practice there are two problems:

The default config is 2s, and it was being started by something or other somewhere. I wrote a very small script that just killed it and ran with the timeout of 200msec and the -t command which has it just disable clicks and scrolls and not mouse movement. This has fixed the problem where I go to move the mouse and it doesn't move.

I have a few remaining problems, I'll update this page if I figure out the right settings or tweaks to fix them: