Few things to do after fresh Ubuntu install

Note: updated for 20.04

Install a few packages

#remove crap
apt remove gnome-shell-extension-desktop-icons-ng

#always
apt install curl nfs-common mc openssh-server tilix gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad papirus-icon-theme gnome-tweak-tool epiphany-browser vim nano flatpak gnome-backgrounds

# flatpak installation
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

flatpak install -y flathub org.gnome.PasswordSafe

flatpak install -y io.github.celluloid_player.Celluloid

flatpak install -y libreoffice

flatpak install -y firefox --channel=beta

flatpak override --socket=wayland --env=MOZ_ENABLE_WAYLAND=1 org.mozilla.firefox

echo "alias lsblk='lsblk -o name,type,size,fstype,mountpoint,vendor,model'" >> ~/.bashrc

#only on dev
apt install gnome-builder golang fastboot heimdall-flash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup component add rls rust-analysis rust-src

#if one needs crap below (java and electron, go figure)
#snap install intellij-idea-community --classic 
#snap install code --classic 
#qt dev on ubuntu gnome
apt install qtcreator qtbase5-dev qtwayland5 
apt install qt5-style-plugins libqt5sql5-psql libqt5sql5-mysql

#kde crap
apt install libkf5style5 kde-style-qtcurve-qt5 kde-style-breeze qml-module-qtquick-controls-styles-breeze qml-module-org-kde-qqc2desktopstyle

sudo echo "QT_QPA_PLATFORM=wayland" >> /etc/environment
#then reboot#

#libvirt
apt install libvirt-daemon virt-manager

 

Handle sudo

visudo

%sudo ALL=(ALL) NOPASSWD: ALL

If needed, add user to group and then reset the root password

gpasswd -a mspehar sudo
sudo passwd -dl root

Firefox on wayland

cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop
sed 's/Exec=firefox/Exec=env MOZ_ENABLE_WAYLAND=1 firefox/g' -i ~/.local/share/applications/firefox.desktop

found here: https://blog.szypowi.cz/en/post/ubuntu-wayland/

Reconfigure locales

dpkg-reconfigure locales

 

Change sources.list if needed

sed -i "s/ftp.hr.debian.org/ftp.at.debian.org/" /etc/apt/sources.list

 

Change prompt for root

PS1="\[\033[01;31m\][\u@\h:\w]\\$\[\033[00m\] "
export EDITOR=vi

 

Add user to several groups

gpasswd -a mspehar sudo
gpasswd -a mspehar kvm
gpasswd -a mspehar libvirt

 

Remove snaps for gnome-apps

sudo snap remove gnome-system-monitor
sudo snap remove gnome-logs
sudo snap remove gnome-characters
sudo snap remove gnome-calculator

 

Disable few services

systemctl disable switcheroo-control.service
systemctl disable ModemManager.service

 

Fix idiotic handling of gnome wallpaper settings

rm -r ~/.cache/gnome-control-center/backgrounds
ln -s ~/Pictures/Wallpapers/ ~/.cache/gnome-control-center/backgrounds

Set red mount point

 

Handle netplan

  • if desktop/laptop, leave as is
  • if server
network:
    renderer: networkd
    version: 2
    ethernets:
        enp5s0:
            dhcp4: false
            addresses: [192.168.42.99/24]
            gateway4: 192.168.42.1
            nameservers:
                addresses: [192.168.40.1]

 

Change settings for journal in /etc/systemd/journald.conf

[Journal]
Storage=persistent

This can be done with the following statement

sed -i "s/^#Storage=auto/Storage=persistent/" /etc/systemd/journald.conf && systemctl restart systemd-journald

 

Disable overlay on ubuntu dock and animation for showing all apps (check previous post)

 

gsettings set org.gnome.shell.extensions.dash-to-dock animate-show-apps false
gsettings set org.gnome.shell.extensions.dash-to-dock hotkeys-overlay false

Disable ctrl-alt-d shortcut by changing “Hide all normal windows” to “Super-D”

This fixes opening “down” terminal in tilix.

Screenshot from 2019-04-27 13-41-20

 

Gnome boxes

If using gnome boxes, use the following pattern for adding remote machines

qemu+ssh://user@remoteserver/system

systemd-resolved explanation

resolved has three modes:

1. If /etc/resolv.conf is a regular file, resolved will *consume* it for DNS configuration, and never change it or modify it or replace it. If this mode is selected arbitrary other programs that do DNS will talk directly to the provided DNS servers, and resolved is out of the loop.

2. Alternatvely, /etc/resolv.conf can be made a symlink to /run/systemd/resolve/stub-resolv.conf. That file is updated by resolved whenever DNS configuration changes. In it you’ll find as DNS server the local host configured, where resolved is listening. In this mode other programs that do DNS will talk to resolved, and resolved propagates it to other DNS servers.

3. Alternatively /etc/resolv.conf can be made a symlink to /run/systemd/resolve/resolv.conf. That file is also updated by resolved whenever DNS configuration changes. In it you find a merged set of configured upstream DNS servers. In this mode programs that do DNS will talk directly to the upstream DNS servers, but resolved will still tell them which ones, based on all the information it has.

In mode #1 resolved neither manages /etc/resolv.conf nor inserts itself into DNS resolution in any way. In mode #2 it manages *and* inserts itself into DNS resolution. In mode #3 it manages DNS resolution but will not insert itself to.

copied from https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/ULWHVEREIWR2IXXUPJ54B42DP7CJ7MEV/

fedora pxe boot

function load_video {
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod all_video
}

load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
insmod http

default vesamenu.c32

menuentry ‘Ubuntu’ {
linux (tftp,192.168.40.1)/mounts/ubuntu/casper/vmlinuz root=/dev/nfs rw nfsroot=192.168.40.1:/srv/pxe/mounts/ubuntu ip=dhcp boot=casper netboot=nfs
initrd (tftp,192.168.40.1)/mounts/ubuntu/casper/initrd
}

menuentry ‘Ubuntu Server’ {
linux (tftp,192.168.40.1)/mounts/ubuntu.server/casper/vmlinuz root=/dev/nfs rw nfsroot=192.168.40.1:/srv/pxe/mounts/ubuntu.server ip=dhcp boot=casper netboot=nfs
initrd (tftp,192.168.40.1)/mounts/ubuntu.server/casper/initrd
}

menuentry ‘Fedora Live’ {
linuxefi (tftp,192.168.40.1)/mounts/fedora/images/pxeboot/vmlinuz ip=dhcp root=live:nfs://192.168.40.1/srv/pxe/mounts/fedora/LiveOS/squashfs.img ro rd.live.image
initrdefi (tftp,192.168.40.1)/mounts/fedora/images/pxeboot/initrd.img
}

Wireguard, easy config

All this explanations with too many words on the internet. Here is simple config for 2 clients connecting to one server

Server

#
# server
#
[Interface]
Address = 192.168.91.1/24
SaveConfig = true
PrivateKey = SERVER_PRIVATE_KEY
ListenPort = 51820

#client 1 specification
[Peer]
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 192.168.91.2/32

#client 2 specification
[Peer]
PublicKey = DUPFv3VULbMaf7da+V8s+15/uCoQCv3vLlLiaYdA3X4=
AllowedIPs = 192.168.91.3/32

 

Client1

#
# client 1
#

#physical interface on the client 1
[Interface]
PrivateKey = CLIENT1_PRIVATE_KEY
Address = 192.168.91.2/32

#specification of the "other" side when looking from the client
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_PUBLIC_IP_ADDRESS_VISIBLE_ON_THE_INTERNET:51820
AllowedIPs = 192.168.91.1/32
PersistentKeepalive = 25

 

Client2

#
# client 2
#

#physical interface on the client 2
[Interface]
PrivateKey = CLIENT2_PRIVATE_KEY
Address = 192.168.91.3/32

#specification of the "other" side when looking from the client
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_PUBLIC_IP_ADDRESS_VISIBLE_ON_THE_INTERNET:51820
AllowedIPs = 192.168.91.1/32
PersistentKeepalive = 25

Year of Linux desktop is 10 years from today. Always.

WIP.

 

Seeing a lot of projects going bad in my own environments, i could see some patterns in open source communities and linux on desktop. This post is a bit of a rant and a cry for different approach.

I was a consultant, now just a developer working mostly in data processing for big organizations. Not a single organization where i have stepped into has been using linux other than on servers. Not a single one.

Why?

1. Quality

While kernel has exact guidelines, strong quality control, oversight and personalities behind, desktop projects are a lot more loose. Instead of having a common goal, open source organizations are splitting their resources instead of pooling them together.

Before:

  • one X server implementation, reference one, used everywhere
  • higher complexity then wayland

Now:

  • many window managers / compositors, one for every desktop environment
    • not a revolutionary approach, rather evolutionary, still very much relying on Xorg so no real incentive to migrate

While many window managers approach can bring innovation into this space, this seems very unlikely since no innovation has taken place 10 years after starting wayland project. Basis of the project can be used among all compositors, with maybe minor things just being different, everyone started egotripping and inventing their own. “Fixed” pool of people working on common goal was now split amongĀ  different goals. As of now, Gnome has architecture problems and KDE is so buggy that just by leaving my PC alone, session crashes. Quality situation got worse while architecture and implementation got simplified. Paradox in the making?

Proposals like wlroots and libmiral are discarded for reasons unknown, i guess NIH and/or “we invested so many time into this we are going to use it”. Basically this will be long fucking ride until this thing gets on the right track.

There are many, many examples where linux quality is lacking and actually, having shitty experience just makes people go back to windows. Several people i know did exactly that – they tried, really tried, then just went back to the devil. They got sick of bad ux and mediocrity.

2. Fragmentation

Fragmentation of projects, as said before can be seen in wayland/xorg space.

Then there is

  • compositors: kwin, mutter, …
  • office: libreoffice/openoffice/calligra.
  • desktop: mate, cinnamon, gnome, xfce, lxqt,…

These important pieces of software should be used among the distribution. We need a Torvalds equivalent for linux desktop. One really smart guy that will set the rules for the whole industry.

Another example of this is GTK vs Qt camps. Those two have been “cooperating” for a long time. First there was Qt. Due to license issues, people started working on GTK. Reasons seem valid when checking what happened beginning of 2020, but generally, two toolkits for linux space is too much since Propriatery vendors do not know what do develop on thus making situation worse. Win32 api has been there for decades now and tere is a stable target to which develop on.

3. Office

Due to fragmentation, libreoffice (as most advanced and used one) is the prime example of why this fragmentation sucks. Instead of implementing e.g. dropdowns for formulas, people are working on openoffice and calligra. Result of this is shitty quality among all 3 products.

Microsoft Excel drives the corporate world. Libreoffice has to look better, has to have convenience better than it is now to attract people.

As a knowledgable user, i still hate to use it due to visuals, due to different behavior and overall performance. Microsoft office has no alternative and it will have no alternative until office community starts to work on one product and not split their time reinventing the wheel.

 

Minimal Fedora Install

At the time of the writing it was Fedora 31.

Start with:

  • download network installer
  • select minimal fedora option with additional tools

After installation

# basic gnome
sudo dnf install gnome-shell gdm gnome-tweaks tilix gedit gnome-tweaks gnome-backgrounds mozilla-fira-mono-fonts.noarch mozilla-fira-sans-fonts.noarch firefox chromium nautilus mc openssh-server xdg-user-dirs-gtk geary gnome-shell-extension-dash-to-dock postgresql gnome-system-monitor snapd firefox-wayland alsa-utils vim evince libreofffice papirus-icon-theme

# basic kde
sudo dnf install konsole plasma-workspace-wayland kscreen papirus-icon-theme firefox vim

# set boot option
systemctl set-default graphical.target

# create Documents, Downloads, ... folders in home
xdg-user-dirs-update

# development stuff
dnf install git gnome-builder golang extra-cmake-modules golang git gdb

# qt stuff
dnf install qt5-qtwayland qtcreator qgnomeplatform qt5-qtbase-postgresql

# kde dev stuff
dnf install kf5-kdoctools-devel kf5-ki18n-devel kf5-ktexteditor-devel kf5-kactivities-devel kf5-kcrash-devel kf5-kdbusaddons-devel kf5-kiconthemes-devel kf5-kwindowsystem-devel

# flatpak stuff 
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub io.github.celluloid_player.Celluloid
flatpak install flathub org.gnome.PasswordSafe
flatpak install org.gnome.Fractal

 

Postinstall:

Changing the prompts

For root

PS1="\[\033[01;31m\][\u@\h:\w]\\$\[\033[00m\] "
export EDITOR=vi

 

For normal users

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
export EDITOR=vi

 

Kde 5.17 notes

The good

  • performance improvements
  • krunner
  • still fully supporting tray icons
  • listening to the user wishes

The bad

  • pimple by default on desktop, why is this still a thing?
    • seems to be going away in 5.18
  • speed of changes. example coming up in 5.18: that pimple on the desktop from the bullet before. this thing took how long to remove?
  • still unstable, when changing stuff in settings (cursors), plasma session crashed.
  • organization of settings
    • global theme – is this a bundle of all other components? what is then plasma style? why is color not part of global theme? naming of things and reasonable organization is not something we find in kde settings
    • there was a project years back which started to analyze how the settings should be organized. i think abandoned.
  • logo
    • there was an idea of changing a logo, even contest was organized, but for some reason nothing came out of this. some really nice logos were done.
  • speed of settings.
    • changing between modules kinda freezes slower computers due to loading of kcm modules.
  • while languages like golang and rust are gaining grounds, the only viable IDEs to use for this are coming from two corporate entities. one of these tools is written in java, the other one based on electron. kde has kdevelop which supports: c++, php and python. let that sink in.
    • gnome-builder has decent support for rust, iirc.
    • if one is going to argue that kate should do the syntax coloring, then we can also say the same about gedit
  • ksysguard. the way it shows the charts. in gnome it is fluid, here it works in discreet intervals, looks like low framerate
  • missing equivalent for virt-manager
    • an option would be to make something qt based for lxd now that lxd will support both lxc containers and qemu machines
  • there are alternatives to breeze window decorations, but none actually work well, so to have less breakage, staying with breeze is recommended…

The ugly

  • design
    • breeze icons
      • outline icons are horrible choice imo.
        • luckily, papirus exists
      • some/most of the icons are not self explanatory and you need to read their description of what they mean. e.g.
        • network icon in dolphin sidebar looks like share in android, only in a circle
        • documents icon in dolphin sidebar is actually align text bottom-left
        • desktop icons in dolphin sidebar looks like minimize
        • back/forward icons in dolphin are smaller-than and bigger-than
        • images icon in dolphin sidebar is just a square with something inside
        • leave icon on right-click desktop menu is the same as back in dolphin
        • create icon on right-click desktop menu is a hollow document with graphics glitch in bottom-right corner
    • breeze colors are too screaming and cold, this is a problem when you need to work prolonged times looking at the monitor
      • while most projects, even devices (android) try to fix blue coloring for multiple reasons (one of them is eye strain), while tools like redshift and night-color are invented, kde goes balls deep with blue – and not some pastel color, but screaming, eye-poking fluorescent blue at all places. now there is this https://www.nature.com/articles/s41514-019-0038-6
    • everything in plasma seems to needs an outline. if possible glowing and screaming so you do not miss it. i find this tacky and unnecessary.
    • sizing of elements, layouts of config etc (this is improving though)
    • inconsistency
      • e.g. in dolphin all icons behave differently, search, preview and split are toggle icons, control is a menu. there is no distinction between different type of buttons.
    • font selection. noto is just not nice.
    • default wallpaper. why dont just go with photographs?
      • windows, mac and gnome all go with photograph. these abstract images are just <polite word for bad and amateurish>. at least get something better like this
    • cursors. just use something simple like dmz. these ones look like 12yearold masterhacker designed.
    • animations.

 

Conclusion

Good design is not something KDE does well.

To be on the constructive side, here is an example of how some easy tweaks have huge visual impact

Before

kde-before-changes

After

kde-after-changes

  • Papirus icon theme
  • Align-left text on title bar
  • Increase size of title bar to large
  • Change shadow size to small (window decorations)
  • Disable gradient on titlebar and showing a circle around “x”
  • Change coloring of text on selection to be shade-of-black used elsewhere
  • Change desktop background to national geographic or bing or whatever
  • Changing mouse cursors on archlinux does not work well. I would like to have dmz cursor theme, but it works only with some cursors… anyhow, a mess

What is mind boggling is that with Qt as a base, KDE should be waaaaaaaay ahead compared to gnome, but it is actually not the case. Good thing is they are trying to move forward, bad thing is – it is too slow.

Where i think they should move:

  • wayland (one of the currently selected initiatives)
  • design rework, completely. colors, icons, guidelines…
  • development tools, there is no purpose to move to kde since gnome is better in everything except performance (which doesn’t matter if you run newer hw).
    • if you have kdevelop which fully supports rust and go, maybe people will move (assuming they will not run it on gnome)
    • complicated to setup a dev env. maybe this should be worked on and simplified (this doesn’t mean a new set of bash script which would think for “us”)
  • documentation
    • documentation today is for old kde developers. not for new people who want to join in
  • web – currently there is so much crap that it is amazing, so most of it should be consolidated into as few apps as possible
    • forum no one uses because, well open it and then tell me how long you stayed there
    • blogs are using which platform?
    • bugzilla instead of gitlab issues? i do not really understand this decision
  • drop some things
    • calligra office? why is this just not a frontend for libreoffice?

 

Interesting thought: Qt based gnome?