KDE with Progressive Web Apps (PWAs)

After installing progressive web apps on KDE, the icons don’t appear correctly in the task bar, like this:

That second app is Google Messages. This gets confusing, especially if you have applications grouped (which is the default option in Manjaro KDE). The fix is pretty simple and the solution is completely from here. I’m documenting it here, just in case.

First, you need xdotool. This can be installed in Manjaro like this

sudo pacman -S xdotool

Next you need to browse to ~/.local/share/applications/

It’s pretty easy to tell which desktop file is which, thanks to them having the appropriate icon.

Last step is to edit the Exec= line of the desktop file by appending this text:

&& xdotool search --sync --classname <value> set_window --class <value>

Make sure to replace <value> with the value in the StartupWMClass line. It should look like this when you are done:

Save the file, kill the app, and restart it. It may take a second or two, but it should do the trick.

Framework Laptop + Ubuntu 21.04 + Multi-touch

I got my framework laptop today. I had intended to put Manjaro/KDE on it, but ended up with stock Ubuntu 21.04 (a story for another time). The trackpad is big and pretty nice, so setting up 3 finger swipe was an initial priority.

I didn’t have to do anything special to get the trackpad working. There were reports on reddit of it not working out of the box on certain distros. It’s a bit odd about how far you have to click to the right and to the left to get the respective clicks, but nothing too terrible.

For 3 finger swipes i went with Comfortable Swipe. The instructions are each to followo, but after giving permissions I had to do a full reboot. They claimed a log out would be sufficient, but was not for me. In any case, it works great.

— UPDATE —

For Manjaro/KDE I went with fusuma. The steps to install were roughly:

sudo pacman -S libinput
sudo pacman -S ruby
sudo gem install fusuma --no-user-install
sudo pacman -S xdotool

I ran this from the home directory to set it up to run on login (requires logout):

printf "$(which fusuma) & disown \n" >> .profile  #.zprofile if using zsh

Right now my config has some things that don’t exist, but it got me the thing I wanted (moving workspaces with 3 fingers and moving windows with 4 fingers). I had to set a few of the shortcuts in System Settings > Shortcuts > KWIN

~/.config/fusuma/config.yml

swipe:
  3:
    left:
      command: "xdotool key ctrl+alt+Right" # History forward
    right:
      command: "xdotool key ctrl+alt+Left" # History back
    up:
      command: "xdotool key ctrl+alt+Up" # Activity
    down:
      command: "xdotool key ctrl+alt+Down" # Activity
  4:
    left:
      command: "xdotool key ctrl+alt+Down" # Switch to next workspace
    right:
      command: "xdotool key ctrl+alt+Up" # Switch to previous workspace
    up:
      command: "xdotool key ctrl+alt+shift+Up" # Switch to next workspace
    down:
      command: "xdotool key ctrl+alt+shift+Down" # Switch to previous workspace
pinch:
  in:
    command: "xdotool keydown ctrl click 4 keyup ctrl" # Zoom in
  out:
    command: "xdotool keydown ctrl click 5 keyup ctrl" # Zoom out

XPS 13 9300 – Switching to Linux

First thing is to go into bios (Hit F2 early in the boot). In “System Configuration” change SATA Operation to AHCI.

Nothing special about the install. Throw Ubuntu on a thumb drive, throw it in, install it.

After install:

sudo sh -c 'cat > /etc/apt/sources.list.d/focal-dell.list << EOF
deb http://dell.archive.canonical.com/updates/ focal-dell public
# deb-src http://dell.archive.canonical.com/updates/ focal-dell public

deb http://dell.archive.canonical.com/updates/ focal-oem public
# deb-src http://dell.archive.canonical.com/updates/ focal-oem public

deb http://dell.archive.canonical.com/updates/ focal-somerville public
# deb-src http://dell.archive.canonical.com/updates/ focal-somerville public

deb http://dell.archive.canonical.com/updates/ focal-somerville-melisa public
# deb-src http://dell.archive.canonical.com/updates focal-somerville-melisa public
EOF'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F9FDA6BED73CDC22
sudo apt update -qq

sudo apt install oem-somerville-melisa-meta libfprint-2-tod1-goodix oem-somerville-meta tlp-config -y

sudo add-apt-repository ppa:boltgolt/howdy -y
sudo apt update -qq
sudo apt install howdy -y

MS Teams on Ubuntu 20.04

I ran into a problem where Teams was stuck loading. On the few times I could get it to load, it would display an error page telling me to “Try Again” and to try “signing out”, neither of the links would do anything.

I was able to fix it by running:

pkill teams && rm -rf ~/.config/Microsoft/Microsoft\ Teams/Application\ Cache/Cache/* 

Teams is kind of a disappointment on Linux. I have to use it, so hopefully that helps someone ( or me again in the future).

Git Auth: HTTPS vs SSH

I hold the opinion that you can read into how a developer connects to their git repositories as a litmus test for other aspects of how they do things.

To “steel man” the usage of HTTPS. The obvious reason is that it’s easier to get started. People are familiar with username/password authentication and it translates directly here. The other big reason is port blocking on corporate networks. Port availability may not be within your control, and that could cause a headache.

I am going to assume a few things.
1. You are a developer
2. You aren’t oppressed with overly zealous corporate network security policies
3. You aren’t afraid of the command line

If those things are true, you may agree with me. Just because SSH is a tiny bit more effort to set up, it has many more advantages to authenticating with HTTPS. The biggest – the show stopper – reason is that those credentials unlock your entire account. If they are compromised in any way, you are completely left with your pants down. The number of times you communicate over the internet while developing, whether it be to fetch, pull, push, or anything else, you are risking exposure of those credentials. A compromised SSH key only provides access to the repositories. It can be revoked and a new one created. Do you have a credit card attached to your github account? Why would you risk the keys to your kingdom multiple times a day?

Once you have your SSH keys set up, it’s far easier to use and manage. There’s nothing to remember (unless you put a password on your key – even better security!). Once you are comfortable creating and managing keys, the applications for its use extend far beyond git repos. It immediately lends itself to server management and devops tasks.

The real reason Github recommends HTTPS over SSH is that it’s easier to support the lowest common denominator user. That’s not where I want to place myself, do you?

So what can you assume when you encounter a developer that uses HTTPS authentication?

ProsCons
– They read documentation. Github does
recommend HTTPS in its setup guide.
– They are probably on Windows
– They don’t use the terminal very often
– They don’t do much server administration

While none of this speaks directly to the intelligence or capabilities of the developer, it does say things about experience and how deep they are down the tech rabbit hole. It also telegraphs the kind of experience you will have developing with them.

As a developer, I recommend switching to SSH authentication for your git repositories. You’ll learn a few things worth knowing, you’ll be more secure, and you’ll ascend beyond the mass market instruction set on network communication setup.

Cura with Creality CR-6 SE

A repeat of what is here: https://community.ultimaker.com/topic/33852-creality-cr6-se/

If The Creality CR-6 SE doesn’t show up in Cura you can add CR-10 with the following changes:

Plate Format

235-235-250

G-code start

M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration
M203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate
M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration
M205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk
M220 S100 ;Reset Feedrate
M221 S100 ;Reset Flowrate

G28 ;Home

G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up
G1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position
G1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line
G1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little
G1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line
G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up

G-code end

G91 ;Relative positionning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X5 Y5 F3000 ;Wipe out
G1 Z10 ;Raise Z more
G90 ;Absolute positionning
 
G1 X0 Y0 ;Present print
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed
 
M84 X Y E ;Disable all steppers but Z

Manjaro Network Connection Woes (Kernel v5)

After I updated my desktop to Linux kernel version 5 when I logging in my network would disconnect/reconnect every 15 seconds or so. I wasn’t able to get on the internet. My ethernet cable was plugged directly into my motherboard and I don’t have wifi capabilities.

The Solution

I added this conf:

/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

With this content:

[connection]
wifi.powersave=0

After a reboot all was well.

Synergy Stop Job Problem

On Linux I was plagued with a stop job on synergy.service for 90 seconds on every reboot/shutdown. To make it stop faster do this:

sudo systemctl edit --full synergy.service

Then add this line under [Service]

TimeoutSec=6

The Case For Negativity

One of the pillars of the scrum framework is transparency. When gathering in an organization to accomplish some goal, openness of that kind necessitates honesty. Honesty sometimes necessitates negativity.

From what I’ve observed, the pendulum has swung to positivity in the workplace to a fault. This is hurting our ability to be open. I understand the impetus to lean into a happy-go-lucky, “go team!”, “rah rah!” persistent attitude. It has several desirable affects from the perspective of an employer. It gives the appearance of a warm and caring environment where everyone belongs. At a surface level it is inclusive and inviting. My guess is that for most people this helps retain them at a company. A sense of belonging is a key grip to hold when work gets otherwise untenable. In the mind of the employee, the organization becomes a functional family that they chose and were accepted in to.

The downside is that the real work doesn’t happen where the sun shines.

Something that is so often and easily lost in an office is that work is dirty, hard, and frustrating. It hurts and takes it’s toll on you. And that’s OK! That’s what’s supposed to happen when you are creating something from nothing. Part of you is necessarily sacrificed. There is a real cost to how you spend your time. If that cost is not acknowledged, you are more apt to waste it creating something you don’t believe in.

This is where the illusion needs to be bolstered by delusion or it falls apart. How many people love their team/coworkers/environment far more than they care about the function of the organization they are a part of? I’d wager more than would be willing to admit to it. Things fall apart for those in the organization with duties that directly translate to the core mission of the organization – the morlocks that keep the machines running. For these people, glossing over the pain is unacceptable. Being critical, cynical, or blunt is essential to the success of producing anything of quality. I challenge you to name any worshiped captain of industry that didn’t embody these traits.

The Few

I have observed the Pareto Principle at work in most companies, especially larger ones. A majority of the work (or architectural direction, at a minimum) is the product of a few individuals. Again, via observation, I have found these people to trend negative in demeanor. Work isn’t fun. It’s challenging, but rewarding. In my mind there’s a segmentation of time well spent between fun/relaxing time and productive effort towards a goal. Both are necessary for a fulfilled life. Only one of them is necessary for creating almost anything tangible.

The success of your organization may hinge on a few people, but the success is shared. Give people a pass on coming off a bit surly if they are getting work done. Forcing a smile or exaggerated enthusiasm costs time and energy. Both are precious resources that need to be focused as best as possible, especially in today’s distraction heavy work environment. Swearing has been proven in studies to increase pain thresholds. It can be a tool to help tolerate frustration and difficult tasks.

Screw you then.

Does this mean that if you are productive you have license to be a complete jerk? No. There is the counterweight of respect to keep things orderly. But respect does not necessitate a smile or even any positivity at all. At work we’re all a team aiming at a goal. That’s bond enough.

Manjaro + Dotnet Core + Rider

I had a bit of trouble getting Rider set up initially to handle my dotnet core projects on Manjaro. Rider wouldn’t open the projects complaining about not being able to find SDKs like razor and web. My first stop was Settings->Build, Execution, Deployment->Toolset and Build. I messed around with those settings to no avail.

Here’s what did work. I added this to ~/.bashrc:

export MSBuildSDKsPath=/opt/dotnet/sdk/$(dotnet --version)/Sdks

I ended up with these settings in Rider:

Pointing to the MSBuild.dll within my dotnet installation seemed to be the kicker, over the one that came with mono. But I also changed my dotnet core executable path to /opt/dotnet/dotnet from /usr/bin/dotnet at the same time. Once I got it working, I didn’t want to mess with it anymore, so here it sits.