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.
- mod4 + search for "drivers", additional drivers -> enable nvidia driver
- administration -> language and text -> install/remove languages, install japanese, install IBus method & extra components
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
apt-get install virtualbox-nonfree skype
(it appears skype might be in the ubuntu partner repos?)
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)
- install Chrome
sudo apt-add-repository ppa:stebbins/handbrake-snapshots apt-get update && apt-get install handbrake-gtk
Adjustments for Linux on MacbookAir6,2 (2013)
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:
- pressing esc in grub's boot menu
exitinto its command line
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.
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:
toucheggfor gestures (my preferred setup)
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:
- it doesn't really work well (mouse events still sneak through)
- it stops you from moving the cursor shortly after you've typed something
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:
- typing recognition still kinda lets events through, maybe play with the polling interval
- I get double-taps really easily sometimes even if i only want to single-tap
- It seems the tap-drag gesture is always enabled, but it just times out after a couple hundred msec instead; it's still there and annoying enough.
- 3-finger swipe to activate MOVE_WINDOW in touchegg seems to ignore mouse sensitivity settings