Some months ago, I installed Ubuntu 18.04 (the most recent LTS version) in addition to Windows 10 on my notebook and started a dual-booting life (Linux for work, Windows for private stuff). Now this soon became annoying, so I tried to get rid of Windows alltogether in the last few days.

This is a kind of checklist for what changes I applied to a standard Ubuntu system so that it serves my needs as a Windows replacement…

System Configuration

Boot Menu

sudo vi /etc/default/grub
sudo update-grub
  • Change the default boot menu entry
    1. find the menuentry name with grep menuentry /boot/grub/grub.cfg
    2. in /etc/default/grub, change GRUB_DEFAULT to this value (including the quotation marks)
    3. sudo update-grub

Timezone adjustment

Wrong time when switching between Windows and Ubuntu: Force Ubuntu to use local time instead of UTC timedatectl set-local-rtc 1

Import SSH key

copy id_rsa to ~/.ssh and execute ssh-add

Mount NAS-Folders via NFS

Manual mount:

sudo apt install nfs-common
sudo mkdir -p /mnt/share
sudo mount -t nfs 192.168.123.5:/share /mnt/share

Automatic monut: add the following line to /etc/fstab:

192.168.123.5:/share  /mnt/share  nfs  defaults  0  0

Corporate proxy server

  1. Enter the proxy server at “Settings” -> “Network” -> “Network proxy” (which sets the required environment variables)
  2. Add the proxy to apt-get
  3. Add the proxy to the Snap installer
  4. For Docker, add proxy to /etc/systemd/system/docker.service.d/http-proxy.conf, then restart the Docker daemon (sudo systemctl daemon-reload, sudo systemctl restart docker)

    [Service] Environment=”HTTP_PROXY=http://my.proxy.com:8080/” “HTTPS_PROXY=http://my.proxy.com:8080/” “NO_PROXY=localhost,127.0.0.1,my.host.com”

UI (Gnome) adaptions

  • Remove the dock: sudo apt remove gnome-shell-extension-ubuntu-dock, the log off and on again
  • Leave monitor on after locking

    sudo apt install xdotool echo -e ‘#!/bin/bash\nxdg-screensaver lock\nxdotool sleep 1 key Ctrl\n’ > ~/locknoblank.sh chmod +x ~/locknoblank.sh # open keyboard settings, remove shortcut from System/Lock screen and add a new shortcut for the shellscript

  • Limit number of workspaces with “gnome-tweaks” (sudo apt install gnome-tweaks)
  • Use the “Alt-Tab” behaviour of Windows: Settings -> Keybord -> Keyboard Shortcuts
    • “Switch applications” -> disabled
    • “Switch windows” -> Alt-Tab
  • Increase font size:
    • sudo apt install gnome-tweaks
    • Fonts -> Scaling Factor -> 1.50
  • Window borders: add file ~/.config/gtk-3.0/gtk.css with content below, the re-login

    decoration { border: 2px solid gray; background: gray; }

  • Active window titlebar (different colors for active and inactive windows) - use the same gtk.css file as above (the second part is optional):

    .titlebar { background: #810101; color:white; } .titlebar:backdrop { background: #3E3D3A; color:#807D78; }

Third-party Software

Firefox

(preinstalled via Snap)

Enable touch-screen scrolling

  • Installation steps:
    • sudo vi /usr/share/applications/firefox.desktop
    • replace Exec=firefox %u with Exec=env MOZ_USE_XINPUT2=1 firefox %u
    • restart Firefox
  • alternatively, execute sudo sed -i "s|Exec=|Exec=env MOZ_USE_XINPUT2=1 |g" /usr/share/applications/firefox.desktop and restart Firefox
  • this doesn’t work when using a favourite link
  • must be done after each Firefox update :-(

Keepass integration

  • Install Keepass

    sudo add-apt-repository ppa:jtaylor/keepass sudo apt update sudo apt install keepass2 mono-complete

  • Integrate with Firefox
    • Install the “Kee” Firefox extension
    • Download latest plugin version: sudo wget -O /usr/lib/keepass2/Plugins/KeePassRPC.plgx https://github.com/kee-org/keepassrpc/releases/download/v1.9.0/KeePassRPC.plgx
    • Restart Keepass - the new plugin should be compiled and an authentication dialog should appear in Firefox
  • see https://github.com/kee-org/KeeFox/wiki/en-%7C-Installation-%7C-Linux
  • see https://forum.kee.pm/t/installing-kee-instructions/23

Docker

  • https://docs.docker.com/install/linux/docker-ce/ubuntu/
  • https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user (restart after adding the user to the group!)
  • https://docs.docker.com/compose/install/
  • Add to “/etc/docker/daemon.json” and restart Docker (sudo systemctl restart docker):

    { “registry-mirrors” : [ “https://my_corporate_docker_registry_url” ] }

NPM

curl -sL https://deb.nodesource.com/setup_11.x | sudo bash -
sudo apt-get install -y nodejs

Java 8

  • sudo apt install openjdk-8-jdk
  • JAVA_HOME is /usr/lib/jvm/java-8-openjdk-amd64

Microsoft Teams

  • Download DEB file
  • sudo apt install ./teams_1.2.00.32451_amd64.deb
  • add /usr/share/teams/teams to “Startup Application Properties” app

BoxCryptor-Classic

Since BoxCryptor classic uses plain EncFS, mounting is straight forward:

  • Install EncFS (sudo apt install encfs), then run encfs [crypted folder] [mount point], unmout with fusermount -u [mount point]
  • Or better: use Gnome Encfs Manager
sudo add-apt-repository ppa:gencfsm
sudo apt-get update
sudo apt-get -y install gnome-encfs-manager

Wine

…for some indispensable Windows applications. See https://tecadmin.net/install-wine-on-ubuntu/

sudo dpkg --add-architecture i386
wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'
sudo apt-get update
sudo apt-get install --install-recommends winehq-stable
  • The “C:" drive is mapped to ~/.wine/drive_c/
  • Install applications by running the setup program with Wine: wine setup.exe.
  • Run applications with e.g. wine ~/.wine/drive_c/Program\ Files\ \(x86\)/My-App/My-App.exe
  • Adjustment for HiRes displays: Open winecfg, on the “Graphics” tab increase the DPI value by factor 1.5 or 2.0 (I changed it from 96 to 192)
  • Adjust country/locale settings by running wine regedit and changing the “HKEY_CURRENT_USER\Control Panel\International” values:
    • negative currencies: change “iCurrency” from “0” to “2”, change “iNegCurr” from “0” to “9”
    • date format: change “sShortDate” from “M/d/yyyy” to “dd.MM.yyyy”

Git

git config --global core.autocrlf input
git config --global user.name "..."
git config --global user.email "..."
git config --global pull.rebase true
git config --global push.default upstream
git config --global branch.autosetuprebase always
git config --global alias.hist "log -10 --oneline --decorate"
git config --global core.editor "vi"

Other Software installed with Snap

  • IntelliJ IDEA
  • KeePassXC
  • Nextcloud client
  • Postman
  • Sublime
  • VirtualBox
comments powered by Disqus