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.

If you choose to install extra packages including proprietary during installation, then you don't need to install nvidia drivers manually. If you didn't, however:

general packages:

apt update && apt upgrade

apt install vim-gtk mdadm mysql-server mysql-client mysql-common git build-essential python-dev ttf-mscorefonts-installer compiz-mate 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 virtualbox ibus ibus-anthy ibus-gtk3 handbrake

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

At this point, it's good to reboot to get whatever my old desktop environment was active under those configurations. Sometimes, they are not compatible with newer software:

ppas and other proprietary/non-ubuntu software

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: