Long long ago, I tried Debian and it struggled to do a lot of pretty basic things (play DVDs, hardware, graphics, laptops). I respect Debian’s enhanced wholesomeness, but the functionality was just too constrained. These days however, Debian is fine for me. In fact, it’s the only sane distribution that "doesn’t break userspace". Add your stupid new features and ways of doing things, but, jeez, don’t take away perfectly good things that people have come to depend on. I find that today (2016) Debian with MATE is 100% configurable to be exactly how I want it with minimal fuss. Here are my notes for doing that, not because it’s complicated, but because if I have a list I won’t forget anything and I will be able to set up a perfect system from scratch in about 15 minutes.

Install

When it asks for packages choose the MATE package and sanity will be preserved.

Or, just go with minimal Debian Desktop with no window manager and then choose the window manager. This can save time when you have to install from a lower version and dist-upgrade to a higher one after.

sudo apt-get install mate-desktop-environment-core

Or this if you want all the bells and whistles.

sudo apt-get install mate-desktop-environment \
                     mate-desktop-environment-extras

Even after doing this I still had a hard time getting it activated. Here is one plausible thing to explore.

sudo update-alternatives --config x-window-manager

For some reason that did not work at all for me. Eventually, I needed to install lightdm and then try update-alternatives. This changed the display manager and with lightdm there is a pull down at the top for choosing Mate. After doing that once, everything is fine.

Remove Exim

Do you need a MTA moving email around? No, me neither. I’m accessing all my mail on my proper server and normal people often are 100% web mail, so this large complex system can be a real mess. I’ve found it is often the top CPU consuming process on my Debian system. Here’s how to completely get rid of mail handling on Debian.

sudo apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light

Wifi

By being wholesome with respect to licenses, Debian is at odds with wifi manufacturers who are notoriously unfriendly to open source efforts. This is because they worry that they’ll get on the wrong side of the FCC with respect to radio transmission regulation if they let just anybody have complete control. Tricky problem. But once your Debian is installed and not happy with the wifi, you can go get the lesser of evils.

Here’s how to see what kind of wifi device you have.

$ lspci | grep -i net
01:00.0 Ethernet controller: Qualcomm Atheros AR8151 v1.0 Gigabit Ethernet (rev c0)
02:00.0 Network controller: Broadcom Limited BCM43225 802.11b/g/n (rev 01)

Looking through the list for "43225", I find that the driver I need is brcm80211. Following to the link I find that this cures it.

$ sudo apt-get install firmware-brcm80211

Then on reboot (you could load modules manually too) the networking icon in the bar should work.

Update/Upgrade

Dang, don’t you hate it when you start a lengthy update and walk away only to come back in an hour and find that 2 minutes into the process it stopped to ask you to read some stupid thing (ahem Debian, why don’t you guys have a look at how Gentoo does it?).

I think this generally works.

sudo apt-get -y update

But maybe you need this.

sudo apt-get -y --force-yes update

Then of course you have to do this.

sudo apt-get upgrade

No Really, Seriously, UPDATE

Debian likes its little updates, but there comes a time when all the cool people are laughing at your make version 4.0 because they’re all using 4.1. You do the update/upgrade dance and it says everything is up to date. But it is not. There may be a newer major release and the only way to know that, as far as I can tell, is to look some place like this.

https://www.debian.org/releases/

For example, this page might say something like this.

  • The next release of Debian is codenamed "stretch" — no release date has been set

  • Debian 8 ("jessie") — current stable release

  • Debian 7 ("wheezy") — obsolete stable release

  • Debian 6.0 ("squeeze") — obsolete stable release

  • Debian GNU/Linux 5.0 ("lenny") — obsolete stable release

  • Debian GNU/Linux 4.0 ("etch") — obsolete stable release

(I won’t inquire about why they dropped "GNU/Linux", sorry RMS!) I had Debian 8 and I thought everything was ok. But the cool kids were using Ubuntu 16.04. Turns out that this required a more aggressive upgrade to "stretch" despite how dodgy it looks.

The procedure for doing this is nicely covered here and basically entails the following.

  • sudo apt-get update # Get current system well up to date.

  • sudo apt-get upgrade

  • sudo apt-get dist-upgrade

  • sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

  • sudo sed -i s/jessie/stretch/g /etc/apt/sources.list

  • sudo apt-get update # Start the new system upgrading.

  • sudo apt-get upgrade

  • sudo apt-get dist-upgrade

Curing Caps Lock

Go to System→Preferences→Keyboard→Layouts→Options→Ctrl key position Check "Caps Lock as Ctrl".

Amazingly the virtual console can also be cured with minimal fuss.

sudo sed -i 's@\(XKBOPTIONS="\)@\1ctrl:nocaps@' /etc/default/keyboard
sudo dpkg-reconfigure -phigh console-setup

Takes effect after the next reboot.

Users

When installing give a bogus account because it will get the numbering wrong. Just use root to do it properly.

Get rid of the temporary account. Do this as root.

# /usr/sbin/deluser --remove-all-files delme

Use delgroup if the group lingers.

Create the real account.

# useradd -m -U -u 11111 -d /home/xed -s /bin/bash xed
# passwd xed
# gpasswd -a xed sudo

Remove Useless Bars

The bar at the bottom of the screen is absurdly redundant. It normally contains a Workspace Switcher which can sometimes be useful. Still, absolutely no need for two screen wasting bars.

Right click the top panel. Choose "Add To Panel" and find "Workspace Switcher" at the very bottom of the list. Feel free to add System Monitor if that makes sense. Now you can safely get rid of the bottom panel by right clicking on it and selecting "Delete this panel".

Right click on the top panel and choose "Properties". Orientation should be "Left" and check "Autohide".

Terminal

Open a terminal with Applications→System Tools→MATE Terminal

On the menubar click Edit→Profiles and select "Default" and click Edit. Choose Colors tab and uncheck "Use colors from system theme". Choose "White on black" from the pull down. Choose Scrolling tab and choose "Scrollbar is: Disabled" and give a scrollback buffer of 5000. Close.

Create a new keyboard shortcut for this command.

/usr/bin/mate-terminal --hide-menubar

Bind it to Ctrl+Shift+N.

Remove Useless Desk Icons

First install dconf-editor.

apt-get install dconf-editor

Run that as a normal user since these settings are done per user. If you run it as sudo it will apply the settings to the root account.

Go to org->mate->caja->desktop and unclick the following.

  • computer-icon-visible

  • home-icon-visible

  • trash-icon-visible

I’ll leave "volumes-visible" because I want to know if that kind of automounting ever happens. See below.

No Automounting

I don’t need USB flash drives doing nefarious things behind my back; I’ll mount things explicitly, thanks.

Again use dconf-editor as previously mentioned look for this.

org->gnome->desktop->media-handling
  • Uncheck automount

  • Uncheck automount-open

  • Check autorun-never

Also look at this.

org->mate->desktop->media-handling

Same deal. This seems to cure it if the first doesn’t.

Theme

System→Preferences→Appearance In the Theme tab I like "TraditionalOkTest"; you can’t miss it which is the point.

Meddling with Firefox default CSS can be fun too. Power to the client where it belongs! Check this out.

~/.mozilla/firefox/hash7c28.default/chrome/userContent-example.css

Displays

System→Preferences→Monitors Uncheck "Same image in all monitors".

Trackball

Out of the box, the middle buttons on my Logitech Marble Mouse are not activated. Somewhat outdated Ubuntu chatter is possibly helpful here.

What worked was to put this in ${HOME}/.xsessionrc.

# Fix the marble mouse problems.
if grep "Logitech USB Trackball" /proc/bus/input/devices >/dev/null 2>&1 ; then
    xmodmap -e 'pointer = 1 8 3 4 5 6 7 2 9' >/dev/null 2>&1
fi

Check .Xsession-errors and /var/log/lightdm/* if there are errors, especially ones that prevent you from starting a session.

Screensaver Lock

Under System→Preferences→Screensaver, uncheck Screensaver and Locking. Click the Power Management button and from there set "Put display to sleep when inactive for:" to "Never".

Also if it’s not installed, install mate-power-manager and under System→Preferences→Power Management look for "Put display to sleep when in active for:" should be "Never" (since it takes so damn long for it to wake up).

Browser

Start browser for the first time with this.

iceweasel https://noscript.net

Go ahead and add Self-Destructing Cookies, Privacy Badger, HTTPS Everywhere, and JS free DDG.

Add this to .bashrc.

export BROWSER=/usr/bin/iceweasel
alias ff='bash -c "${BROWSER} &";exit'

Vim

sudo apt-get install vim
sudo apt-get purge nano
echo 'export EDITOR=/usr/bin/vim' >> .bashrc
sudo update-alternatives --config editor

This may also be good in .bashrc

alias visudo='sudo EDITOR=/usr/bin/vim /usr/sbin/visudo'

Display Manager Fixes

I understand not publishing a list of users at the login prompt but for a single user system, that’s just annoying. Strangely Debian seems to default to this.

The fix appears to be in the greeter-hide-users setting in /etc/lightdm/lightdm.conf. [Untested]

Skeleton

  • .vimrc

  • .bashrc (put . ~/.bashrc in .bash_profile)

  • .screenrc

Software

  • rsync WTF? How is this not here????

  • feh

  • htop

  • dstat

  • lftp

  • xpdf (seems to bring in cups)

  • screen

  • inkscape

  • mercurial

  • make

  • gcc

  • asciidoc (Maybe not… 1,209 MB!!! This needs fixing.)

  • chromium

  • mate-system-monitor (note1)

  • mate-applets (for system monitor) (note1)

  • mplayer

  • mpg123

  • abcde

  • xrandr

Note
1. Needed only if installed from mate-desktop-environment-core.

Nvidia

Screen going blank after a new install on an Nvidia system. Well, those Debian folks have mixed feelings about Nvidia’s proprietary drivers. On one hand they make it so it doesn’t work, but on the other hand you can fix that. Official help is here.

Try to log in some how and install

nvidia-detect

Run that program and install what is recommended. For my NVIDIA Corporation GK104 [GeForce GTX 760] I had to install

nvidia-driver

Make sure this is just like this (add it, directory too) if needed.

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
    Identifier "My GPU"
    Driver "nvidia"
EndSection

Reboot.

Steam

Steam was pretty easy to install. First, add this to /etc/apt/sources.list. Replace jessie with the proper version (e.g. stretch) if needed.

deb http://httpredir.debian.org/debian/ jessie main contrib non-free

Then you can just do the obvious.

sudo apt-get install steam

If you get the error an error like this…

You are missing the following 32-bit libraries:
libGL.so.1

I used to have luck with this.

apt-get install libgl1-nvidia-glx-i386

Now on Stretch, I’ve had luck with this.

apt-get install libgl1-nvidia-glx libnvidia-glcore:i386

How to move downloads from previous installations is an ongoing area of research, but it looks like you’ll want the manifest files as well as the directories actually containing the game.

:->[usb128][~/old_steam/.steam/steam/steamapps]$ cat appmanifest_370360.acf
"AppState"
{
    "appid"     "370360"
    "Universe"      "1"
    "name"      "TIS-100"
    "StateFlags"        "4"
    "installdir"        "TIS-100"
    "LastUpdated"       "1482809267"
    "UpdateResult"      "0"
    "SizeOnDisk"        "84036583"
    "buildid"       "717588"
    "LastOwner"     "76561198123579102"
    "BytesToDownload"       "29826000"
    "BytesDownloaded"       "29826000"
    "AutoUpdateBehavior"        "0"
    "AllowOtherDownloadsWhileRunning"       "0"
    "UserConfig"
    {
        "Language"      "english"
    }
    "MountedDepots"
    {
        "370363"        "1208369354753219700"
    }
}
:->[usb128][~/X/old_steam/.steam/steam/steamapps]$ ls -d common/TIS-100/
common/TIS-100/

This seems to work. Shut down Steam first. Copy the .acf manifest files into the steamapps directory. Then copy or move the directory containing the game (referred to in the manifest) to the steamapps/common directory. When Steam starts back up, it will find these things and assume they’re good to go. As normal, it does its update check and usually starts updating some of them.