Cities Skylines is a very special game. I sunk way too many hours into this and still enjoy it on occasion.
There’s a nifty plugin that allows to overlay a png image with transparency so one could hobble together a map with imported heights data from e.g. NASA and overlay it with streets, rivers and train tracks from e.g. Google Maps.
This results in recreation of real cities within the engine bringing the hardware to it’s limits.
There are also hundreds of downloadable assets in the workshop.
2019 was a fantastic year for Linux gamers. At the end of the decade we had almost two thirds of the top one thousand steam games rated gold and above in terms of Linux compatibility.
Today I had to access my computer via VNC. There are several manuals how to enable VNC on a typical Linux desktop nowadays. It usually involves some sort of clicking on Sharing => Enable Screenshare and you’re done. It’s really that easy.
How would I do this however remote when I can not access my already running desktop computer via VNC? SSH is enabled on my machines since most of my work involves jumping and tunneling my way through various networks to get stuff done. Just forwarding X was not enough today.
Turns out this is really easy as well. The screensharing feature on my distribution is done with Vino. That’s an integrated #VNC server for #gnome and this is exactly what the user starts by enabling the screenshare feature. Since #Vino is part of gnome it can be configured using
So after enabling the screenshare for testing on my laptop I tested for all existing keys by running this listing:
gsettings list-recursively | grep Vino
It’s really short and basically all settings are no-brainers. Only the password had me wondering but it turned out this is just base64 encoded (and also optional). All that is left is running the
vino-server binary in the end. This needs the correct environment variable
$DISPLAY set since our target is a running X session. This one we can determine by executing the command
w and looking for the TTY in use. Hint: It’s
:1 in this case.
beko ~ w 20:35:15 up 5:12, 1 user, load average: 1,92, 2,33, 2,37 USER TTY LOGIN@ IDLE JCPU PCPU WHAT beko :1 15:24 ?xdm? 2:02m 0.00s /usr/libexec/gdm-x-session --run-script /usr/bin/gnome-session
Oh and you should also not connect with the X11 forward option
-X because running the
vino-server with this will result in some really funny endless picture in picture mode that I did totally not try out by mistake 😉
Now that I had all the information I needed I hacked together this little script that does this more or less automatically so I can forget about this again [and look it up two years later in my own blog]. It’s really crude and your mileage may vary. It does not account for multiple users or multiple running X Sessions:
export DISPLAY=$(w -oush | grep -Eo ' :[0-9]+' | uniq | cut -d \ -f 2) echo "Display is $DISPLAY" gsettings set org.gnome.Vino require-encryption true gsettings set org.gnome.Vino use-alternative-port false gsettings set org.gnome.Vino disable-background false gsettings set org.gnome.Vino alternative-port 5900 gsettings set org.gnome.Vino icon-visibility 'client' gsettings set org.gnome.Vino disable-xdamage false gsettings set org.gnome.Vino authentication-methods "['vnc']" gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption true #pw is just base64 so basically just echo -n 'awesomeness'| base64 gsettings set org.gnome.Vino vnc-password "YXdlc29tZW5lc3M=" gsettings set org.gnome.Vino view-only false /usr/libexec/vino-server & export VINOPID=$! echo "Try vnc://$HOSTNAME:5900/" echo "vino-server pid may be $VINOPID"
And that’s it. There is no root or sudo involved.
Don’t forget to
kill the pid when done 🙂
Most Linux users know some systemd by now. There is
systemd stop $someservice and
systemd disable $someservice. If you think that’s all one has to know about systemd you’re missing out on a lof of features. That’s not the story for today tho.
Some services tend to come back even when disabled and stopped. Socket services come to mind. This is e.g. the case for rpcbind starting a portmapper service on tcp/111 that can be used for a DDoS reflection attack. There are various ways to deal with this from uninstall to firewalling or to mask this service. Since everbody on Linux gets to pick their own poision I decided to use mask to make sure this can simply no longer start without having to break dependencies by removing it or fiddle with the firewall:
systemctl stop rpcbind.service systemctl mask rpcbind.service Created symlink /etc/systemd/system/rpcbind.service → /dev/null. systemctl daemon-reload
A masked service can not even be restarted manually any more. It’s dead in the water as long as this symlink exists.
Read more on this from Poettering himself:
One of the things about #Linux I love most is it’s flexibility. This may astonish some but I am gaming on my Linux system for approximately 15 years by now. Situation for #linuxgaming improved a lot lately but it was always possible to keep myself distracted 😉
So one of the games I just love to play is XCOM (UFO series). I don’t think I skipped any part and Terror From The Deep will always have a special place in my heart. Anyway, when XCOM was relaunched and eventually ported to Linux by Feral Interactive in 2014 I thought I couldn’t have been happier. Firaxis Games topped this in 2016 with XCOM2 and Feral Interactive once more got the job for the port.
Sadly with all the expansion sets it takes quite a toll on the required hardware. Huge fan of all sliders on maximum and see how it goes and while my box can mostly keep up I notice that I run out of RAM towards the end of the game fast and my machine starts swapping. I’ve 16GB RAM and this game eats it away like children their candy.
I’ve got additional 4GB of swap installed on slow spinning rust disks (legacy) so I notice the moment it starts swapping like hitting a wall. After another frustrated restart of the game I paused for a moment. I don’t know why this games needs so much RAM and frankly I don’t even care. Maybe I’m spoiled nowadays since stuff tends to “just work”.
So I decided to throw more power at it but RAM is expensive and I usually have enough of it for my daily work (or other games). I did get a decent SSD (Solid State Disk) recently tho so it’s #swapfile to my rescue:
fallocate -l 16G /games/swapfile
…and that’s it. I stopped my previous slow swap partition(s), created a new swapfile of 16GB size on my SSD, formatted it as swap partition and activated it. Now I tabbed back into my game and enjoyed the rest of the evening. Let it swap. The SSD can keep up with it. Not minding a few more seconds during loading screens 😀 I’m considerung to add the activation sequence to my “gaming mode” script.