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

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

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.

Conky

A reddit post clued me in to Conky, a system monitor that grafts on to your background wallpaper. I played around with a configuration, and I have something that I’m pretty happy with.

To install:

sudo apt-get install conky-all

Here’s my config. You can place this in the file ~/.conkyrc (you’ll have to create it).

use_xft yes
xftfont 123:size=8
xftalpha 0.1
update_interval 1
total_run_times 0

own_window yes
own_window_type conky
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_colour 000000
own_window_argb_visual yes
own_window_argb_value 0
own_window_class override

double_buffer yes
#minimum_size 250 5
#maximum_width 500
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_color ffffff
default_shade_color red
default_outline_color green
alignment top_right
gap_x 0
gap_y 0
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 1
override_utf8_locale no
use_spacer no


minimum_size 0 0
TEXT
${voffset 1}${offset 12}${font Ubuntu:size=10}${color FF00AA}HD ${offset 9}$color${fs_used /} / ${fs_size /}${offset 30}${color FF00AA}RAM ${offset 9}$color$mem / $memmax${offset 30}${color FF00AA}CPU ${offset 9}$color${cpu cpu0}%

or for lighter backgrounds:

use_xft yes
xftfont 123:size=8
xftalpha 0.1
update_interval 1
total_run_times 0

own_window yes
own_window_type conky
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_colour 000000
own_window_argb_visual yes
own_window_argb_value 0
own_window_class override

double_buffer yes
#minimum_size 250 5
#maximum_width 500
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_color 666666
default_shade_color red
default_outline_color green
alignment top_right
gap_x 0
gap_y 0
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 1
override_utf8_locale no
use_spacer no


minimum_size 0 0
TEXT
${voffset 1}${offset 12}${font Ubuntu:size=10}${color FF00AA}HD ${offset 9}$color${fs_used /} / ${fs_size /}${offset 30}${color FF00AA}RAM ${offset 9}$color$mem / $memmax${offset 30}${color FF00AA}CPU ${offset 9}$color${cpu cpu0}%

Star Citizen Launcher Issue

I decided it was time to check out Star Citizen for Alpha 3.0. I created an account, paid my money, and downloaded the launcher. I was greeted with this:

Electron! Cool! OK, so what now? I googled around a bit and searched the forum to see if anyone else was experiencing this. Nope, just me.

I tried uninstalling/reinstalling and rebooting in various combinations. I tried it on another computer in my network and it worked normally.

What should have been obvious somehow wasn’t. I went to bed.

With a fresh mind I reviewed the evidence. The error was screaming the answer to me the whole time.

Failed to load resource: net::ERR_CONNECTION REFUSED http://localhost:9000/app/cig-launcher.js

  1. The launcher was trying to load a JavaScript file from localhost:9000.
  2. Chrome dev tools were open

All of a sudden it clicked – I’m in development mode! Doing node development on that machine I had set the environment variable NODE_ENV to Development. Removing that environment variable was the solution.