Pages this page links to:
Pages linking to this page:
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.
- administration -> language and text -> install/remove languages, install japanese, install IBus method & extra components
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:
- mod4 + search for "drivers", additional drivers -> enable nvidia driver
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
- passwordless sudo
- franz
- discord
- install Chrome
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:
- pressing esc in grub's boot menu
- typing
exit
into 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.
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:
- use
synaptics
driver +touchegg
for gestures (my preferred setup) - use
mtrack
driver
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