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
- find the menuentry name with
grep menuentry /boot/grub/grub.cfg
- in
/etc/default/grub
, changeGRUB_DEFAULT
to this value (including the quotation marks) sudo update-grub
- find the menuentry name with
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
- Enter the proxy server at “Settings” -> “Network” -> “Network proxy” (which sets the required environment variables)
- Add the proxy to apt-get
- Add the proxy to the Snap installer
-
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-logindecoration { 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)
- Installation steps:
sudo vi /usr/share/applications/firefox.desktop
- replace
Exec=firefox %u
withExec=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 runencfs [crypted folder] [mount point]
, unmout withfusermount -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