<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	     xmlns:dc="http://purl.org/dc/elements/1.1/"
	   xmlns:atom="http://www.w3.org/2005/Atom"
	     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>ubuntu &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Sun, 03 May 2026 09:22:16 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>ubuntu &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Installing and Updating Filezilla from a Zip File on Pop_OS / Ubuntu]]></title>
		<link>https://shkspr.mobi/blog/2026/01/installing-and-updating-filezilla-from-a-zip-file-on-pop_os-ubuntu/</link>
					<comments>https://shkspr.mobi/blog/2026/01/installing-and-updating-filezilla-from-a-zip-file-on-pop_os-ubuntu/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 24 Jan 2026 12:34:21 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=65041</guid>

					<description><![CDATA[Notes to myself because I keep forgetting.  tl;dr Unzip it into the /opt/ directory.  I want to install Filezilla - so I can SFTP files around. Sadly, the Flatpak version is unmaintained and the version in apt is out of date. Luckily, you can download the zipped version.  Their Wiki helpfully says:  If you have special needs, don&#039;t have sufficient rights to install programs or don&#039;t like…]]></description>
										<content:encoded><![CDATA[<p>Notes to myself because I keep forgetting.</p>

<p><abbr title="To Long; Didn't Read">tl;dr</abbr> Unzip it into the <code>/opt/</code> directory.</p>

<p>I want to install Filezilla - so I can SFTP files around. Sadly, the <a href="https://github.com/flathub/org.filezillaproject.Filezilla/issues/103">Flatpak version is unmaintained</a> and the version in apt is out of date. Luckily, you can <a href="https://filezilla-project.org/download.php">download the zipped version</a>.</p>

<p>Their Wiki <a href="https://wiki.filezilla-project.org/Client_Installation#Zip_version">helpfully says</a>:</p>

<blockquote><p>If you have special needs, don't have sufficient rights to install programs or don't like installers, the zip version is there for you. A zip-file is a file that contains files inside of it. They are packed into one file and you need to unpack (unzip) them to use them.</p></blockquote>

<p>But it doesn't say where!</p>

<p>The answer is <a href="https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s13.html">the <code>/opt/</code> directory</a>.</p>

<p>Run this command:</p>

<p><code>sudo tar -xJf FileZilla_*_x86_64-linux-gnu.tar.xz -C /opt</code></p>

<p>The first time <a href="https://cyanogenmods.org/install-filezilla-in-ubuntu/">you may need to adjust the directory permissions</a>:</p>

<p><code>cd /opt/</code><br>
<code>sudo chown -R root:root FileZilla*</code></p>

<p>After installing, FileZilla will periodically check for updates. It will download them to the <code>~/Downloads/</code> directory. Run the above command to install the new version.</p>

<p>If you want to be able to launch Filezilla from your dashboard, or to pin it to your dock, you'll need to create:</p>

<p><code>/usr/share/applications/Filezilla.desktop</code></p>

<p>Place this text in it:</p>

<pre><code class="language-_">[Desktop Entry]
Name=Filezilla
Comment=FTP
Exec=/opt/FileZilla3/bin/filezilla
Icon=/opt/FileZilla3/share/icons/hicolor/scalable/apps/filezilla.svg
Type=Application
StartupWMClass=filezilla
Categories=Game;
</code></pre>

<p>What a faff!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=65041&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2026/01/installing-and-updating-filezilla-from-a-zip-file-on-pop_os-ubuntu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Fixing broken suspend on Pop_OS]]></title>
		<link>https://shkspr.mobi/blog/2024/04/fixing-broken-suspend-on-pop_os/</link>
					<comments>https://shkspr.mobi/blog/2024/04/fixing-broken-suspend-on-pop_os/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 06 Apr 2024 11:34:00 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=50105</guid>

					<description><![CDATA[My Linux laptop used to suspend perfectly. I&#039;d close the lid and it would go to sleep. Open it up, it would spring to life - presenting me with a password screen.  But, some time in the last few months, it has stopped doing that.  If I close the lid, it keeps running. This is unhelpful.  If I manually run the suspend command - systemctl suspend - the laptop blanks the screen then immediately…]]></description>
										<content:encoded><![CDATA[<p>My Linux laptop used to suspend perfectly. I'd close the lid and it would go to sleep. Open it up, it would spring to life - presenting me with a password screen.  But, some time in the last few months, it has stopped doing that.</p>

<p>If I close the lid, it keeps running. This is unhelpful.</p>

<p>If I manually run the suspend command - <code>systemctl suspend</code> - the laptop blanks the screen then immediately turns it back on at the lock screen. It doesn't suspend.</p>

<p>I know that suspend physically works - becasue running any of these other command <em>does</em> properly suspend the machine. But powering it back up goes straight to the desktop - no lock screen!</p>

<ul>
<li><code>sudo /lib/systemd/systemd-sleep suspend</code></li>
<li><code>sudo echo "mem" &gt; /sys/power/state</code></li>
<li><code>sudo acpitool -s</code></li>
</ul>

<h2 id="the-fix"><a href="https://shkspr.mobi/blog/2024/04/fixing-broken-suspend-on-pop_os/#the-fix">The Fix</a></h2>

<p>I found what was <a href="https://github.com/systemd/systemd/issues/21991#issuecomment-1005020257">causing suspend to fail</a> by running:</p>

<ul>
<li><code>sudo systemd-analyze verify systemd-suspend.service</code></li>
</ul>

<p>That spat out any errors in the suspend service.  Highlighted in red was:</p>

<p><code>systemd-suspend.service: Failed to create systemd-suspend.service/start: Unit nvidia-resume.service is masked.</code></p>

<p>That was odd, because I don't have an Nvidia graphics card.</p>

<p>Looking in the relevant directory:</p>

<p><code>cd /etc/systemd/system/systemd-suspend.service.requires</code></p>

<p>I found:</p>

<pre><code class="language-_">nvidia-resume.service -&gt; /lib/systemd/system/nvidia-resume.service
nvidia-suspend.service -&gt; /lib/systemd/system/nvidia-suspend.service
</code></pre>

<p>I deleted the <code>nvidia-resume.service</code> and <code>nvidia-suspend.service</code> files.</p>

<p>For good measure, I also checked what Nvidia stuff I had installed:</p>

<ul>
<li><code>apt list --installed | grep -i nvidia</code></li>
</ul>

<p>I used <code>sudo apt purge</code> to remove the remnants of any Nvidia stuff. Probably installed by mistake.</p>

<p>After that, suspend worked fine.</p>

<h2 id="what-fixes-didnt-work"><a href="https://shkspr.mobi/blog/2024/04/fixing-broken-suspend-on-pop_os/#what-fixes-didnt-work">What "Fixes" Didn't Work</a></h2>

<p>I went down a bit of a rabbit hole, following lots of suggestions from various people on the Internet.  None of these helped me - but they may be useful pointers to you.</p>

<p>I tried <a href="https://www.vegard.net/how-to-suspend-pop-os/">disabling everything in <code>/proc/acpi/wakeup</code></a>. I couldn't get <code>PXSX</code> to be disabled. But even with everything else off, the suspend didn't work.</p>

<p><a href="https://github.com/pop-os/pop/issues/2356#issuecomment-1987290124">Killing Bluetooth with <code>rfkill block bluetooth</code></a> didn't work. Nor did disabling WiFi.</p>

<p>I have <a href="https://www.reddit.com/r/pop_os/comments/ukyl7s/suspend_is_not_working_in_2204_lts/">an updated Kernel</a> 6.8.0. I'm not sure of the ramifications of swapping to an older one.</p>

<p>Running <a href="https://github.com/pop-os/pop/issues/1368"><code>sudo kernelstub -a mem_sleep_default=deep</code></a> and then rebooting didn't make a difference.</p>

<p>Switching from Wayland to X11 didn't fix it. Nor did unplugging the laptop from power. No external peripherals or screens were connected.</p>

<p>The whole system - including Flatpaks and Snaps - was updated.</p>

<p>This <a href="https://www.reddit.com/r/pop_os/comments/vr7uco/network_manager_wake_requested/jxxm0e4/">shell script</a> works. But there's no way to tie it in to having the power button pressed or the lid closed.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=50105&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/04/fixing-broken-suspend-on-pop_os/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Building a new Microserver]]></title>
		<link>https://shkspr.mobi/blog/2023/04/building-a-new-microserver/</link>
					<comments>https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 12 Apr 2023 11:34:16 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=45460</guid>

					<description><![CDATA[Back in 2011, I bought an HP Proliant Microserver G6 for £250. Last week I upgraded to... A Proliant G8 for £270. Nice! Hurrah for Moore&#039;s Law!  Of course, setting it up is a bit of a mare. So here&#039;s a tangled mess of notes to hopefully remind me what to do...  Firmware  Download the latest gen8 firmware / BIOS / iLO.  Find a site offering demo licence keys for iLO 4.   Boot Order  I stuck in an S…]]></description>
										<content:encoded><![CDATA[<p>Back in 2011, I bought an HP Proliant Microserver G6 for £250. Last week I upgraded to... A Proliant G8 for £270. Nice! Hurrah for Moore's Law!</p>

<p>Of course, setting it up is a bit of a mare. So here's a tangled mess of notes to hopefully remind me what to do...</p>

<h2 id="firmware"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#firmware">Firmware</a></h2>

<p>Download <a href="https://support.hpe.com/connect/s/product?language=en_US&amp;ismnp=0&amp;l5oid=5379860&amp;kmpmoid=5390291&amp;cep=on&amp;tab=driversAndSoftware">the latest gen8 firmware / BIOS / iLO</a>.</p>

<p>Find a site offering demo licence keys for iLO 4. <!-- https://www.chathuraariyadasa.com/ho-ilo-license-activation-keys/ --></p>

<h2 id="boot-order"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#boot-order">Boot Order</a></h2>

<p>I stuck in an SSD on the internal SATA port which is meant to be used for a DVD drive.</p>

<p>The internal RAID has to be set to "Legacy" - see <a href="https://community.hpe.com/t5/proliant-servers-netservers/microserver-gen8-boot-order-from-different-sata-drive/m-p/6928066/highlight/true">Re: Microserver Gen8 - Boot order from different SATA Drive</a>.</p>

<p>Then the PCI boot order has to be be set to boot #2 first.</p>

<h2 id="bios"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#bios">BIOS</a></h2>

<p>There's no UEFI. So any USB stick that you format will need to be made with:</p>

<pre><code class="language-_">sudo dd bs=4M if=Downloads/ubuntu-whatever.iso of=/dev/sda conv=fdatasync status=progress
</code></pre>

<p>Or <a href="https://help.ubuntu.com/community/mkusb/dus-iso2usb">mkusb</a>.</p>

<p>It will take ages from boot until it starts installing.</p>

<h2 id="install"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#install">Install</a></h2>

<p>As per normal. Enable SSH when asked.</p>

<h2 id="make-2nd-ethernet-port-optional-to-prevent-a-slow-start"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#make-2nd-ethernet-port-optional-to-prevent-a-slow-start">Make 2nd Ethernet Port Optional to prevent a slow start</a></h2>

<p>As per <a href="https://askubuntu.com/a/1323542/82046">StackOverflow</a>.</p>

<p>Edit <code>/etc/netplan/*.yaml</code> and make the 2nd port <code>optional: true</code></p>

<p>Make sure the root disk is taking up all the available space:</p>

<pre><code class="language-_">sudo lvextend -l 100%VG ubuntu-vg/ubuntu-lv
fdisk -l /dev/mapper/ubuntu--vg-ubuntu--lv
sudo fdisk -l /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
</code></pre>

<h2 id="smart"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#smart">SMART</a></h2>

<p>Check the HDD quality.</p>

<pre><code class="language-_">sudo apt install smartmontools
sudo smartctl --all /dev/sda
sudo smartctl --all /dev/sdb
...
</code></pre>

<h2 id="zfs"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#zfs">ZFS</a></h2>

<p>Install ZFS</p>

<pre><code class="language-_">sudo apt install zfsutils-linux
</code></pre>

<p>Get the list of disks so you can refer to them by ID:</p>

<pre><code class="language-_">ls -l /dev/disk/by-id/ 
</code></pre>

<p>Create a RAIDZ with somewhat optimal values:</p>

<pre><code class="language-_">sudo zpool create -O utf8only=on -O normalization=formD -O atime=off -O compression=lz4 -o ashift=12 -O dedup=off -f data raidz  /dev/disk/by-id/ata-... /dev/disk/by-id/ata-... /dev/disk/by-id/ata-... /dev/disk/by-id/ata-...
</code></pre>

<p>That gives it UTF8, improved performance by not using access times, no deduplication, sensible block size, and transparent compression.</p>

<p>Check it has worked with:</p>

<pre><code class="language-_">zfs list
</code></pre>

<p>Take ownership of the pool:</p>

<pre><code class="language-_">sudo chown $(whoami): /data
</code></pre>

<p>Check the pool's health:</p>

<pre><code class="language-_">sudo zpool scrub data
sudo zpool status
</code></pre>

<p>Make it chunter a little less with:</p>

<pre><code class="language-_">sudo nano /etc/modprobe.d/zfs.conf:
</code></pre>

<p>And adding the line:</p>

<pre><code class="language-_">options zfs zfs_txg_timeout=30
</code></pre>

<p>Add the following <code>~/.profile</code></p>

<pre><code class="language-_">df -t ext4 -t zfs -Th
zpool status
</code></pre>

<h2 id="read-only-share"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#read-only-share">Read-Only Share</a></h2>

<pre><code class="language-_">sudo apt install nfs-kernel-server
sudo systemctl start nfs-kernel-server.service
sudo nano /etc/exports
</code></pre>

<p>Add:</p>

<pre><code class="language-_">/data  *(ro,async,root_squash,insecure)
</code></pre>

<p>Restart with:</p>

<pre><code class="language-_">sudo exportfs -a
</code></pre>

<h2 id="make-ubuntu-less-chatty-on-login"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#make-ubuntu-less-chatty-on-login">Make Ubuntu less chatty on login</a></h2>

<pre><code class="language-_">sudo rm /etc/update-motd.d/88-esm-announce
sudo apt-get purge landscape-client landscape-common
sudo rm /etc/apt/apt.conf.d/20apt-esm-hook.conf
sudo rm /var/lib/ubuntu-advantage/messages/motd-esm-announce
sudo touch /etc/cloud/cloud-init.disabled
</code></pre>

<h2 id="set-up-pythons-pip"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#set-up-pythons-pip">Set Up Python's pip</a></h2>

<pre><code class="language-_">wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
</code></pre>

<h2 id="misc"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#misc">Misc</a></h2>

<p>Set the right timezone:</p>

<pre><code class="language-_">sudo timedatectl set-timezone Europe/London
</code></pre>

<p>Update the certificates</p>

<pre><code class="language-_">sudo update-ca-certificates
</code></pre>

<h2 id="and"><a href="https://shkspr.mobi/blog/2023/04/building-a-new-microserver/#and">And...?</a></h2>

<p>What else do <em>you</em> install on a new server?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=45460&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2023/04/building-a-new-microserver/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[A quick guide to getting Mozilla VPN working on a headless Linux server]]></title>
		<link>https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/</link>
					<comments>https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 16 Mar 2023 12:34:56 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vpn]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=45148</guid>

					<description><![CDATA[The Mozilla VPN service is great, but it doesn&#039;t work using the CLI if you have a &#34;headless&#34; server.  After a bit of faffing about, I got it working.  I suffered so you don&#039;t have to.  Get an account  Sign up and use code MOZILLA20 for a cheeky 20% discount!  Get a token in the browser  To start with, you&#039;ll need to get an authentication token. This requires you to be on a machine which can run a …]]></description>
										<content:encoded><![CDATA[<p>The <a href="https://www.mozilla.org/en-US/products/vpn/">Mozilla VPN service</a> is great, but it <a href="https://github.com/mozilla-mobile/mozilla-vpn-client/issues/6301">doesn't work using the CLI if you have a "headless" server</a>.  After a bit of faffing about, I got it working.  I suffered so you don't have to.</p>

<h2 id="get-an-account"><a href="https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/#get-an-account">Get an account</a></h2>

<p><a href="https://www.mozilla.org/en-US/products/vpn/">Sign up</a> and use code <mark>MOZILLA20</mark> for a cheeky 20% discount!</p>

<h2 id="get-a-token-in-the-browser"><a href="https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/#get-a-token-in-the-browser">Get a token in the browser</a></h2>

<p>To start with, you'll need to get an authentication token. This requires you to be on a machine which can run a modern browser like Firefox or Chrome.</p>

<p>On a computer with a GUI, download <a href="https://github.com/NilsIrl/MozWire">MozWire</a>.  This is an unofficial way to download the necessary WireGuard config files.</p>

<p>Open up a terminal and make it executable:</p>

<pre>chmod +x mozwire-linux</pre>

<p>Run the app:</p>

<pre>./mozwire-linux --print-token</pre>

<p>That will automatically open your web browser. Sign in to the Mozilla VPN service in the browser. Return to your terminal and you'll see a long token like:</p>

<pre>abc.123.qwe.rty.uio</pre>

<p>It will be <em>much</em> longer than that! Save it somewhere safe.</p>

<h2 id="server-time"><a href="https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/#server-time">Server time!</a></h2>

<p>SSH into your server.  Download <a href="https://github.com/NilsIrl/MozWire">MozWire</a>.</p>

<pre>wget https://github.com/NilsIrl/MozWire/releases/latest/download/mozwire-linux</pre>

<p>Make it executable:</p>

<pre>chmod +x mozwire-linux</pre>

<p>Check that it works by getting it to list all the devices you have associated with your account:</p>

<pre>./mozwire-linux --token abc.123.qwe.rty.uio device list</pre>

<p>That should show the name of your devices - it <em>won't</em> include the server.</p>

<p>It's tedious to type in the token each time, so run:</p>

<pre>export MOZ_TOKEN="abc.123.qwe.rty.uio"</pre>

<p>Run:</p>

<pre>./mozwire-linux device list</pre>

<p>And you should get the same result as before.</p>

<p>Make sure you have installed WireGuard and resolvconf:</p>

<pre>sudo apt install wireguard wireguard-tools resolvconf</pre>

<p>Next, generate the public/private keypair and associate it with your server:</p>

<pre>./mozwire-linux device add --name My-Awesome-Server --privkey $(wg genkey)</pre>

<p>Once that's run, you can confirm the server has been added by again running:</p>

<pre>./mozwire-linux device list</pre>

<p>That should show your previous devices <em>and</em> the new one.</p>

<p>Next up, it's time to download all the Mozilla VPN WireGuard configs:</p>

<pre>./mozwire-linux relay save -o ~/mozwireconf -n 0</pre>

<p>That will upload your public key to Mozilla and then download a bunch of configurations into <code>~/mozwireconf</code> (or wherever you choose).</p>

<h2 id="run-wireguard"><a href="https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/#run-wireguard">Run Wireguard</a></h2>

<p>To connect to, say, the Denmark Copenhagen server, run:</p>

<pre>wg-quick up ~/mozwireconf/dk-cph-wg-101.conf</pre>

<p>And... that's it! If you run <code>ifconfig</code> you'll see a new network entry for WireGuard.</p>

<p>You can check that it's working by running:</p>

<pre>curl https://ifconfig.co/json ; echo</pre>

<p>That will print out some diagnostic information about the IP address your server presents to the world.</p>

<p>To turn off the MozillaVPN, run:</p>

<pre>wg-quick down ~/mozwireconf/dk-cph-wg-101.conf</pre>

<p>To run MozillaVPN for a single program, install <a href="https://github.com/jamesmcm/vopono/">Vopono</a></p>

<pre><code class="language-_">vopono exec --custom ~/.config/vopono/mozilla/wireguard/fi-hel-wg-103.conf "curl https://ifconfig.co/json"
</code></pre>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=45148&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2023/03/a-quick-guide-to-getting-mozilla-vpn-working-on-a-headless-linux-server/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Quick Image Montages]]></title>
		<link>https://shkspr.mobi/blog/2021/11/quick-image-montages/</link>
					<comments>https://shkspr.mobi/blog/2021/11/quick-image-montages/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 21 Nov 2021 12:34:48 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=40972</guid>

					<description><![CDATA[(Mostly notes to myself.)  If you have a lot of images in a directory, and want to quickly make an image montage, here&#039;s how to do it on Linux using ImageMagick.  First up, this command finds all JPG file, then resizes them so they fit in a maximum box of 256x256, then sets the quality to 75%, then saves them as JPGs:  find ./ -type f -iname &#34;*.jpg&#34; -exec mogrify -verbose -format jpg -layers…]]></description>
										<content:encoded><![CDATA[<p>(Mostly notes to myself.)</p>

<p>If you have a lot of images in a directory, and want to quickly make an image montage, here's how to do it on Linux using ImageMagick.</p>

<p>First up, this command finds all JPG file, then resizes them so they fit in a maximum box of 256x256, then sets the quality to 75%, then saves them as JPGs:</p>

<p><code>find ./ -type f -iname "*.jpg" -exec mogrify -verbose -format jpg -layers Dispose -resize 256\&gt;x256\&gt; -quality 75% {} +</code></p>

<p>This will <strong>overwrite your existing files</strong> so make sure you have a backup.</p>

<p>This will take all JPG files, and then arrange them in a montage which is 10 images wide and 5 images high, with no padding between the images, and then save them as a file called "montage.png":</p>

<p><code>montage *.jpg -tile 10x5 -geometry +0+0 montage.png</code></p>

<p>If you have more than 10x5 images, this will spit out multiple files. If you want to specify the width, but not the height, use:</p>

<p><code>montage *.jpg -tile 10x -geometry +0+0 montage.png</code></p>

<p>Handy if you can't be bothered counting how many images you have.</p>

<p>The ordering is "sort of alphabetical". That is, it sorts them by first character. You may want to renumber your files as <code>00001.jpg</code> etc if you have a specific ordering in mind.</p>

<p>The output looks like this:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/11/montageLsmall.jpg" alt="85 Book Covers." width="1865" height="845" class="aligncenter size-full wp-image-40970"></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=40972&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/11/quick-image-montages/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Set your own emoji shortcuts in Ubuntu / Pop_OS]]></title>
		<link>https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/</link>
					<comments>https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 10 Oct 2021 11:34:41 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[emoji]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=40587</guid>

					<description><![CDATA[How do you quickly insert a 💩 emoji when using your laptop? I just type ScrLck, p, o, o!  What is this 🧙‍♀️ craft?  In your keyboard settings, you should see an option like this:    You can set the &#34;Compose&#34; key to be anything you like. Personally, I use the otherwise-useless Scroll Lock button.  Now, once you press ScrLck you&#039;ll see this symbol .  The next few letters you type will be &#34;absorbed&#34; …]]></description>
										<content:encoded><![CDATA[<p>How do you quickly insert a 💩 emoji when using your laptop? I just type <kbd>ScrLck</kbd>, <kbd>p</kbd>, <kbd>o</kbd>, <kbd>o</kbd>!</p>

<h2 id="what-is-this-%f0%9f%a7%99%e2%99%80%ef%b8%8f-craft"><a href="https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/#what-is-this-%f0%9f%a7%99%e2%99%80%ef%b8%8f-craft">What is this 🧙‍♀️ craft?</a></h2>

<p>In your keyboard settings, you should see an option like this:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/10/Type-special-characters.png" alt="Screenshot of the Type special characters setting." width="976" height="202" class="aligncenter size-full wp-image-40588">

<p>You can set the "Compose" key to be anything you like. Personally, I use the otherwise-useless <code>Scroll Lock</code> button.</p>

<p>Now, once you press <kbd>ScrLck</kbd> you'll see this symbol <img src="https://shkspr.mobi/blog/wp-content/uploads/2021/10/symbol.png" alt="A weird symbol." width="37" height="37" class="alignnone size-full wp-image-40589" style="display: inline;vertical-align: middle;">.</p>

<p>The next few letters you type will be "absorbed" by that symbol and combined to make something new.</p>

<h2 id="whats-available"><a href="https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/#whats-available">What's available</a></h2>

<p>You can see the default symbols in <code>/usr/share/X11/locale/en_US.UTF-8/Compose</code></p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/10/Screenshot-from-2021-10-06-16-37-00.png" alt="List of symbols." width="1474" height="170" class="alignnone size-full wp-image-40592">

<p>You can add your own, either in the file or in <code>~/.XCompose</code></p>

<h2 id="note"><a href="https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/#note">Note!</a></h2>

<p>The short-cuts you type are case-sensitive. Typing <kbd>ScrLck</kbd>, <kbd>f</kbd>, <kbd>u</kbd> does nothing, but typing <kbd>ScrLck</kbd>, <kbd>F</kbd>, <kbd>U</kbd> will get you 🖕!</p>

<h2 id="alternatives"><a href="https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/#alternatives">Alternatives</a></h2>

<p>There is a <a href="https://shkspr.mobi/blog/2021/07/easy-emoji-in-ubuntu-pop-os/">menu driven way of selecting emoji</a> if you can't remember keyboard shortcuts.</p>

<h2 id="credit"><a href="https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/#credit">Credit</a></h2>

<p>I've shameless stolen this tip from:</p>

<blockquote class="social-embed" id="social-embed-1445772817207758865" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/c_pellegrino" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRjgAAABXRUJQVlA4ICwAAAAwAwCdASowADAAPrVaqE8nJSOiI4gA4BaJaQAAG4G9PxgAAP7vYN4lcUAAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Claudia Pellegrino @claudi@darmstadt.social</p>@c_pellegrino</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">I love <a href="https://twitter.com/hashtag/Linux">#Linux</a> so much!<br>Typing Compose+p,o,o gives you: 💩<br>Typing Compose+F,U gives you:🖕<br>I’m absolutely not making this up. It’s in the Compose map that comes with X11. (Works in the terminal but not in the browser)</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/c_pellegrino/status/1445772817207758865"><span aria-label="22 likes" class="social-embed-meta">❤️ 22</span><span aria-label="2 replies" class="social-embed-meta">💬 2</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-10-06T15:27:55.000Z" itemprop="datePublished">15:27 - Wed 06 October 2021</time></a></footer></blockquote>

<p>Although, I've found that it <em>does</em> work in the browser on Wayland 🤷</p>

<h2 id="%f0%9f%96%96"><a href="https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/#%f0%9f%96%96">🖖</a></h2>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=40587&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/10/set-your-own-emoji-shortcuts-in-ubuntu-pop_os/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How to fix an upgraded Firefox profile]]></title>
		<link>https://shkspr.mobi/blog/2021/10/how-to-fix-an-upgraded-firefox-profile/</link>
					<comments>https://shkspr.mobi/blog/2021/10/how-to-fix-an-upgraded-firefox-profile/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 07 Oct 2021 11:34:34 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=40549</guid>

					<description><![CDATA[I&#039;m an idiot. I ran a new version of Firefox nightly without creating a new profile. When I went to run my regular Firfox, I got this error message:    Here&#039;s how I fixed it.   Close down Firefox Open a terminal and run: firefox --allow-downgrade Let Firefox start up and create a new profile. Then go to: about:profiles You&#039;ll see something like this: Select &#34;Set as default profile&#34; and click…]]></description>
										<content:encoded><![CDATA[<p>I'm an idiot. I ran a new version of Firefox nightly <em>without</em> creating a new profile. When I went to run my regular Firfox, I got this error message:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/10/Screenshot-from-2021-10-04-21-32-37.png" alt="Using an older version of Firefox can corrupt bookmarks and browsing history already saved in your existing FireFox profile. To protect your information, create a new profile for this installation of firefox." width="605" height="212" class="aligncenter size-full wp-image-40550">

<p>Here's how I fixed it.</p>

<ol>
<li>Close down Firefox</li>
<li>Open a terminal and run:</li>
<li><code>firefox --allow-downgrade</code></li>
<li>Let Firefox start up and create a new profile. Then go to:</li>
<li><code>about:profiles</code></li>
<li>You'll see something like this:<br><img src="https://shkspr.mobi/blog/wp-content/uploads/2021/10/profiles.png" alt="Screenshot of the profiles screen." width="916" height="292" class="aligncenter size-full wp-image-40551"></li>
<li>Select "Set as default profile" and click through any warnings</li>
<li>Close Firefox.</li>
<li>Once again, run <code>firefox --allow-downgrade</code></li>
</ol>

<p>That should do it! Next time you start Firefox normally, everything should be fine. Probably.</p>

<p>In the future, make backups of your <code>$HOME</code> directory, and create a new profile for your Nightlies!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=40549&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/10/how-to-fix-an-upgraded-firefox-profile/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Download ACSM files in Linux - without using Adobe Digital Editions!]]></title>
		<link>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/</link>
					<comments>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 26 Jul 2021 11:15:07 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39673</guid>

					<description><![CDATA[After my rant the other day about Adobe Digital Editions, I discovered libgourou by Grégory Soutadé  libgourou is a free implementation of Adobe&#039;s ADEPT protocol used to add DRM on ePub files. It overcome the lacks of Adobe support for Linux platforms.  There are a few limitations, but nothing too serious:   Only ePub is supported. No PDF Command line only Alpha quality software. It works - but i…]]></description>
										<content:encoded><![CDATA[<p>After my rant the other day about Adobe Digital Editions, I discovered <a href="https://www.mobileread.com/forums/showthread.php?t=340479"><code>libgourou</code> by Grégory Soutadé</a></p>

<blockquote><p>libgourou is a free implementation of Adobe's ADEPT protocol used to add DRM on ePub files. It overcome the lacks of Adobe support for Linux platforms.</p></blockquote>

<p>There are a few limitations, but nothing too serious:</p>

<ul>
<li>Only ePub is supported. No PDF</li>
<li>Command line only</li>
<li>Alpha quality software. It works - but is a bit finickity</li>
</ul>

<p>You can compile the code yourself, but I just <a href="http://indefero.soutade.fr/p/libgourou/downloads/">downloaded the pre-built binaries</a>.</p>

<p>On Ubuntu / Pop I needed to <code>sudo apt install libzip-dev</code>.</p>

<p>Once you've unzipped the download, <code>cd</code> into it and run:</p>

<p><code>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD</code></p>

<p>Then</p>

<p><code>./adept_activate -u youremail@example.com -p SuperStrongPassword</code></p>

<p>Use the same credentials as you do in Adobe Digital Editions. You can just use the <code>-u</code> flag and type your password in at the prompt - but I couldn't get that to work. The <code>-p</code> flag worked fine.</p>

<p>After a few seconds, you'll see:
<code>youremail@example.com fully signed and device activated in /home/you/libgourou_utils_0.3.1/./.adept</code></p>

<p>Then run:
<code>./acsmdownloader -f whatever.acsm</code></p>

<p>After a few moments, you'll see:
<code>Created whatever.epub</code></p>

<p>That's it! Your file is downloaded and you can read the ePub.</p>

<p>Note: If you try to download a PDF, you'll get an error saying:
<code>Exception code : 0x5007
Message        : whatever.epub</code></p>

<p>You can rename the file back to .pdf, but it will still be encrypted.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39673&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/download-acsm-files-in-linux-without-using-adobe-digital-editions/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Review: Sennheiser EPOS ADAPT 560 Bluetooth Noise Cancelling Headset - plus Linux info ★★★☆☆]]></title>
		<link>https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/</link>
					<comments>https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 12 Jul 2021 11:25:21 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[headset]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[usb-c]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39526</guid>

					<description><![CDATA[Back to the office! The only thing which makes other people bearable is being able to block out their chatter (sorry colleagues, I love you all dearly!). So I picked up this pair of on-ear Bluetooth headphones with active noise cancelation. They&#039;re pricey (a bit under £200) but are they any good?  First impressions  Not great. None of the buttons are labelled, so it&#039;s surprisingly hard to figure …]]></description>
										<content:encoded><![CDATA[<p>Back to the office! The only thing which makes other people bearable is being able to block out their chatter (sorry colleagues, I love you all dearly!). So I picked up this pair of on-ear Bluetooth headphones with active noise cancelation. They're pricey (<a href="https://amzn.to/3wrFQ5l">a bit under £200</a>) but are they any good?</p>

<h2 id="first-impressions"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#first-impressions">First impressions</a></h2>

<p>Not great. None of the buttons are labelled, so it's surprisingly hard to figure out how to turn it on and start pairing.  It isn't either of the two large, prominent buttons, but one one off the smaller, flush buttons. No, not that one, the other one. *<em>sigh</em>* It announces that it has turned on - in a prim English accent - but doesn't say whether it is in pairing mode or not. Frustrating.  When the power is off, hold down the power button for longer than you realise to initiate pairing.</p>

<p>It paired quickly with my phone - which recognised that it supported the <a href="http://www.aptx.com/which-aptx">aptX codec</a>.</p>

<p>The headphones are pretty noisy - you can hear the electronics squeal in the right ear as the circuits try to connect to Bluetooth. It's unpleasant and distracting.  Once pairing is complete it quietens down a bit. Moderate volume music drowns it out. But during periods of silence there's still a faint hum and a bit of occasional electronic chatter.</p>

<p>Frankly, I expect better from an expensive pair of cans.</p>

<p>There's a slider button which raises and lowers the volume. It makes a bit of an annoying "bloop" noise with any interaction. Pushing it in activates ⏯</p>

<p>I couldn't work out how to turn on the noise cancelling until I found <a href="https://www.eposaudio.com/en/gb/enterprise/products/adapt-560-bluetooth-headset-1000207#id-6-downloads-14825_10">the manual online</a>.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Headphones-fs8.png" alt="Diagram showing which buttons are which." width="1106" height="591" class="aligncenter size-full wp-image-39528">

<p>The biggest button "Hook" is dedicated for... launching Microsoft Teams <span style="font-size:2em">🙄</span></p>

<p>It's an on-ear set. Which for people with big flappy ears like me is slightly uncomfortable for long periods of time as they press your ears flat.</p>

<h2 id="call-quality"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#call-quality">Call quality</a></h2>

<p>Outstanding! Honestly one of the clearest voice calls that I've experienced. I don't know what witchcraft is in the speakers - but over a 3G voice connection the sound quality was like the person was in the room. The boom mic tucks away neatly on the right headphone and you can flip it down when needed.  When flipped up it automatically muted.</p>

<p>People I spoke to reported decent sound from my voice.</p>

<h2 id="music-quality"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#music-quality">Music quality</a></h2>

<p>Again - fantastic. It has great stereo separation, phases test were fine. I tend to use this video to test headphones:</p>

<iframe title="Virtual Barber Shop (Audio...use headphones, close ur eyes)" width="620" height="465" src="https://www.youtube.com/embed/IUDTlvagjJA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>Volume control and ⏯ worked as expected. On Android the next and previous tracks also worked.</p>

<p>As mentioned earlier, during quiet passages there is a bit of hum and electronic interference - especially on the right side.</p>

<h2 id="noise-cancelling"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#noise-cancelling">Noise cancelling</a></h2>

<p>Very weird. Rather than a dedicated button or switch. you have to remember that one of the multifunction buttons has to be tapped <em>exactly</em> twice in order to toggle it.  No, not that button, the other one.  There are no voice prompts - so you'll have no idea if you've triggered it or not.  It certainly does something to the sound - dimming it a little. It doesn't cancel out human voices - which is weird. I would have though that was its primary purpose.</p>

<p>But it doesn't feel like proper noise cancellation. I think you're better off running a white-noise app to drown out sounds.</p>

<h2 id="interface"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#interface">Interface</a></h2>

<p>Atrocious! Multiple buttons each with different functions if you press, hold, double-, or triple-tap them. It's impossible to remember what they do.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Screenshot-2021-07-08-at-16-21-07-ADAPT-560-ADAPT-563-On-ear-Bluetooth®-headset-with-ANC-e4a633c1-15e1-468e-8009-6d42e9....png" alt="A complex diagram of all the buttons and their functions." width="957" height="851" class="aligncenter size-full wp-image-39531">
They all feel pretty similar under the finger - so good luck doing anything more basic than changing the volume.</p>

<h2 id="software"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#software">Software</a></h2>

<p>The <a href="https://eposaudio.com/connect">desktop software</a> is an obnoxiously bad Electron app - it forces itself to launch on start up and tries to wrap itself into your system.  Software is Mac and Windows only - so Linux users will need to borrow a machine if they want to update the headphone firmware.</p>

<p>Although, that said, my Mac failed to detect the headphones in the app - so who knows whether there are any interesting updates.</p>

<h2 id="misc"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#misc">Misc</a></h2>

<p>Works while charging - which is nice. Lots of Bluetooth headphones switch off when charging via USB.</p>

<p>There's no 3.5mm jack, so you can't use these as wired headphones or share their sound with another user.  I couldn't find a way to use the USB-C cable to route audio either.</p>

<p>It connected to two devices simultaneously - a laptop and phone. The voice prompts refer to them as "phone one" and "phone two" which is a bit odd.</p>

<h2 id="linux"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#linux">Linux</a></h2>

<p>The headphones paired to Linux first time. Audio quality was great. The ⏯ worked - so was able to control YouTube, VLC, Spotify, etc.  It was also possible to swap it from A2DP (high quality stereo) to HSP (Headset Profile) - the mic worked just fine.</p>

<p>There's a Linux / PulseAudio limitation which means you <a href="https://forum.manjaro.org/t/bluetooth-sound-and-microphone-at-the-same-time/59828/7">can't have high quality audio at the same time as using the mic</a>.  I tend to use an external mic anyway.</p>

<p>When connected via USB-C to a Linux machine, the <code>lsusb</code> shows a hub:</p>

<pre><code class="language-shell">0a12:4010 Cambridge Silicon Radio, Ltd
</code></pre>

<p>and connected to that:</p>

<pre><code class="language-shell">1395:0180 Sennheiser Communications EPOS ADAPT 560
</code></pre>

<p>The separate Bluetooth dongles shows up as:</p>

<pre><code class="language-shell">1395:0382 Sennheiser Communications EPOS BTD 800
</code></pre>

<p>You can set Linux to <a href="https://askubuntu.com/questions/1205749/how-permanently-remove-or-disable-hsp-hfp-bluetooth-profile">disable the headset profile if you don't need it</a>.</p>

<h2 id="verdict"><a href="https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/#verdict">Verdict</a></h2>

<p>It has great sound, if you can overlook the hum during quiet passages.  It has some extremely poor design flaws.  You won't be able to remember what all the buttons do - and you will find it frustrating to get it set up.</p>

<p>As basic headphones go, they're great. I'm just shocked they go for £200 - you can get better ones <a href="https://shkspr.mobi/blog/2020/01/usb-c-powered-bluetooth-headphones-the-life-q10-from-anker/">for a quarter of the price</a>. But I guess the Sennheiser logo doesn't come cheap!</p>

<p>They works flawlessly on Linux.  The boom mic is great for making/taking calls.</p>

<p>Finally, they're foldable - although you might want to use the included hard-case to prevent any damage.</p>

<iframe title="EPOS | Sennheiser ADAPT 500" width="620" height="349" src="https://www.youtube.com/embed/dcPpUGY9Rzw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39526&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/review-sennheiser-epos-adapt-560-bluetooth-noise-cancelling-headset-plus-linux-info/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Linux Clipboard History for Ubuntu / Pop OS]]></title>
		<link>https://shkspr.mobi/blog/2021/07/linux-clipboard-history-for-ubuntu-pop-os/</link>
					<comments>https://shkspr.mobi/blog/2021/07/linux-clipboard-history-for-ubuntu-pop-os/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 08 Jul 2021 11:47:25 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39475</guid>

					<description><![CDATA[Mobile phones have been one of the greatest drivers of functional enhancements for computing interfaces. I use the clipboard history feature on Android multiple times per day.  Rather than copy one item, then paste it, then switch back, then copy another, then switch back etc - I just copy two items, switch app, and paste them where I want.  For some reason, I never considered doing that on Linux …]]></description>
										<content:encoded><![CDATA[<p>Mobile phones have been one of the greatest drivers of functional enhancements for computing interfaces. I use the clipboard history feature on Android multiple times per day.  Rather than copy one item, then paste it, then switch back, then copy another, then switch back etc - I just copy two items, switch app, and paste them where I want.</p>

<p>For some reason, I <em>never</em> considered doing that on Linux - until now!</p>

<p><a href="https://extensions.gnome.org/extension/779/clipboard-indicator/">Clipboard Indicator</a> is a handy little Gnome extension. It sits on your dock monitoring your clipboard.  Click the icon and get a list of what you've copied.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Clipboard-History-fs8.png" alt="Long list of items." width="399" height="711" class="aligncenter size-full wp-image-39477">

<p>They're keyboard and mouse selectable, and you can set some to be permanently remembered.</p>

<p>There's a brief settings screen, but I found the defaults were suitable.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Clipboard-settings-fs8.png" alt="Settings screen." width="663" height="741" class="aligncenter size-full wp-image-39476">

<h2 id="security-and-privacy"><a href="https://shkspr.mobi/blog/2021/07/linux-clipboard-history-for-ubuntu-pop-os/#security-and-privacy">Security and Privacy</a></h2>

<p>Having things like passwords in your clipboard history could be a security risk. I recommend using <a href="https://bitwarden.com">BitWarden</a> as a browser extension to auto-fill passwords without using the clipboard.</p>

<p>Similarly, someone with access to your machine could look through your history.</p>

<p>The <a href="https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator">code is open source</a> if you want to audit it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39475&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/linux-clipboard-history-for-ubuntu-pop-os/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Easy Emoji in Ubuntu / Pop OS]]></title>
		<link>https://shkspr.mobi/blog/2021/07/easy-emoji-in-ubuntu-pop-os/</link>
					<comments>https://shkspr.mobi/blog/2021/07/easy-emoji-in-ubuntu-pop-os/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 07 Jul 2021 11:02:21 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[emoji]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=39469</guid>

					<description><![CDATA[All the Cool Kids™ use emoji. On Android, they&#039;re usually built right in to the keyboard. But that&#039;s not the case on desktops and laptops.  Well, unless you build a dedicated emoji keyboard.  So I was delighted to find this brilliant little Gnome Extension called Emoji Selector.  It sits in your dash, until you click it or press 💠+e.  Then you get this pop up.    The search bar focuses as soon as …]]></description>
										<content:encoded><![CDATA[<p>All the Cool Kids™ use emoji. On Android, they're usually built right in to the keyboard. But that's not the case on desktops and laptops.  Well, unless you build <a href="https://www.youtube.com/watch?v=3AtBE9BOvvk">a dedicated emoji keyboard</a>.</p>

<p>So I was delighted to find this brilliant little Gnome Extension called <a href="https://extensions.gnome.org/extension/1162/emoji-selector/">Emoji Selector</a>.</p>

<p>It sits in your dash, until you click it or press <kbd>💠</kbd>+<kbd>e</kbd>.  Then you get this pop up.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Search-bar-and-emoji-fs8.png" alt="Search bar and some common emoji." width="568" height="239" class="aligncenter size-full wp-image-39473">

<p>The search bar focuses as soon as you open it, and the results are keyboard selectable.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Searching-for-cat-fs8.png" alt="Searching for cat emoji brings up lots of cats." width="568" height="238" class="aligncenter size-full wp-image-39472">

<p>There's the usual groupings of emoji, if you just want to scroll.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/07/Group-of-emoji-fs8.png" alt="Group of emoji." width="562" height="720" class="aligncenter size-full wp-image-39471">

<p>Click the emoji you want and it copies to your clipboard, ready to be pasted in.</p>

<p>And... that's it! Simple and effective.  You can <a href="https://github.com/maoschanz/emoji-selector-for-gnome">check out the source code on GitHub</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=39469&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/07/easy-emoji-in-ubuntu-pop-os/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Screen recording on Wayland / Pop_OS]]></title>
		<link>https://shkspr.mobi/blog/2020/12/screen-record-on-wayland-pop_os/</link>
					<comments>https://shkspr.mobi/blog/2020/12/screen-record-on-wayland-pop_os/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 28 Dec 2020 12:51:31 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=37632</guid>

					<description><![CDATA[One of the annoying things about being on the bleeding edge, is that some things don&#039;t work as you expect. I use the Wayland Display Server on my Linux box. And I couldn&#039;t find a simple screen recorder which worked.  Turns out, Gnome has a hidden screen recorder!  To activate it, press these keys simultaneously. CTRL+ALT+SHIFT ⇪+R  A small circle icon will appear in your tray to show it is r…]]></description>
										<content:encoded><![CDATA[<p>One of the annoying things about being on the bleeding edge, is that some things don't work as you expect. I use the Wayland Display Server on my Linux box. And I couldn't find a <em>simple</em> screen recorder which worked.</p>

<p>Turns out, Gnome has a <strong>hidden</strong> screen recorder!  To activate it, press these keys simultaneously.
<kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>SHIFT ⇪</kbd>+<kbd>R</kbd></p>

<p>A small circle icon will appear in your tray to show it is recording.  By default, the recordings last 30 seconds, and are saved as a WebM in the <code>~/Videos</code> directory.</p>

<p>If you want to stop the screen recording, just hit the same keys again.</p>

<h2 id="limitations"><a href="https://shkspr.mobi/blog/2020/12/screen-record-on-wayland-pop_os/#limitations">Limitations</a></h2>

<p>This is <em>basic</em>. I mean <em>really</em> basic. It records the whole screen.  There is no way to get it to only record a specific window. If you have multiple monitors, it records everything spanned across them.</p>

<p>It doesn't record sound, so you'll need to add commentary later if that's what you're after.</p>

<p>There is no GUI to configure it. If you want to change the recording length, run this command in your terminal</p>

<pre><code class="language-bash">gsettings set org.gnome.settings-daemon.plugins.media-keys max-screencast-length 90
</code></pre>

<p>That sets the length to 90 seconds. Set it to 0 to have no limit.</p>

<p>There is a <a href="https://help.gnome.org/users/gnome-help/stable/screen-shot-record.html.en">tiny amount of documentation</a> available.</p>

<h2 id="what-else"><a href="https://shkspr.mobi/blog/2020/12/screen-record-on-wayland-pop_os/#what-else">What Else?</a></h2>

<p>If you know of a better screen recording tool - which <strong>works with Wayland</strong> - and won't take me ages to learn, I'd love to hear about it.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=37632&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/12/screen-record-on-wayland-pop_os/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How can I get consistent sizes with physically different monitors on Linux?]]></title>
		<link>https://shkspr.mobi/blog/2020/09/how-can-i-get-consistent-sizes-with-physically-different-monitors-on-linux/</link>
					<comments>https://shkspr.mobi/blog/2020/09/how-can-i-get-consistent-sizes-with-physically-different-monitors-on-linux/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 21 Sep 2020 11:30:50 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=36692</guid>

					<description><![CDATA[I can&#039;t think of a concise way of wording this.  I have three monitors. Each has the same resolution - 1920x1080px.  But each one has a different physical size - 61 cm monitor, 39 cm laptop, and 48 cm monitor.    Here&#039;s my problem. When I move a window from one screen to another, the window changes size.  It contains the same number of pixels, but it has different physical dimensions. Here&#039;s one…]]></description>
										<content:encoded><![CDATA[<p>I can't think of a concise way of wording this.  I have three monitors. Each has the same resolution - 1920x1080px.  But each one has a different <em>physical</em> size - 61 cm monitor, 39 cm laptop, and 48 cm monitor.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/06/Three-monitors.jpeg" alt="Three monitors." width="680" height="510" class="aligncenter size-full wp-image-35610">

<p>Here's my problem. When I move a window from one screen to another, the window changes size.</p>

<p>It contains the same number of <em>pixels</em>, but it has different <em>physical dimensions</em>. Here's one window, stretched across all three screens:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/09/16000756469290.jpg" alt="A long blue line stretched across each monitor. It is a different height on each." width="1280" height="433" class="aligncenter size-full wp-image-36729">

<p>As you can see, the blue bar is a different thickness on each screen.</p>

<p>I can change the relative vertical placement of each monitor fairly easily.  So I can line up the top of each screen, but that doesn't help with the sizing.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/09/Screenshot-from-2020-09-14-10-10-44.png" alt="Multi monitor settings showing the relative placement of the screens." width="664" height="415" class="aligncenter size-full wp-image-36727">

<p>What I want, is something like this screenshot from <a href="https://github.com/hhannine/superpaper">SuperPaper Wallpaper manager</a>.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/09/Screenshot-from-2020-09-14-10-45-46.png" alt="Three monitors, with their physical sizes shown." width="745" height="394" class="aligncenter size-full wp-image-36730"></p>

<p>That app correctly detects the physical dimensions of my screens and displays them correctly. How can I get Ubuntu / Pop OS / Wayland to do the same?</p>

<p>I'm using a modern Wayland display server. To enable Fractional Scaling, I run:</p>

<pre><code class="language-_">gsettings set org.gnome.mutter experimental-features &amp;quot;[&amp;#039;scale-monitor-framebuffer&amp;#039;]&amp;quot;
</code></pre>

<p>And then reboot.  Then I get these options per display.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/09/Screenshot-from-2020-09-12-21-52-44.png" alt="A scaling display options screen." width="620" height="359" class="aligncenter size-full wp-image-36694"></p>

<p>That's great - but intervals of 25% just aren't fine grained enough from me. And, because my external screens are <em>larger</em> than my internal screens, I need them to have a <em>smaller</em> scaling factor.  Assuming my laptop is 100%, I need one monitor to be 90% and the other to be 66%.</p>

<p>There's a <a href="https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1724037">Gnome bug open since 2017</a> - but no fix yet.</p>

<p>I <em>could</em> set my laptop's screen to be 150% and the other screens to be 100% and 125% - but that makes everything on my main screen far too large.</p>

<p>Ideally, I'd like to tell Linux the physical dimensions of my monitors, and their placement, then let it work out the fine detail. But I'll settle for some command line fiddling.</p>

<p>To be clear, this isn't a problem with HiDPI - all my screens are less than 4K.</p>

<p>If you have a suggestion for how to independently underscale individual displays using Wayland - I'd love to know!</p>

<h2 id="possible-objections"><a href="https://shkspr.mobi/blog/2020/09/how-can-i-get-consistent-sizes-with-physically-different-monitors-on-linux/#possible-objections">Possible objections</a></h2>

<ul>
<li>It'll look blurry

<ul>
<li>Maybe, but the <a href="https://shkspr.mobi/blog/2018/11/the-myth-of-the-pixel-perfect-grid/">myth of the pixel grid is something I've explained before</a>. But my eyesight isn't amazing. I just want consistency.</li>
</ul></li>
<li>Not every component <em>can</em> scale

<ul>
<li>The modern Linux operating system mostly uses SVG for icons, and fonts are designed to scale. So I don't see why that would be the case.</li>
</ul></li>
<li>It'll spike your CPU / GPU

<ul>
<li>I'm always tethered to power when I'm using multiple monitors. And I'm mostly not running computationally intensive apps.</li>
</ul></li>
<li>Stop being so obsessive

<ul>
<li>Fair!</li>
</ul></li>
</ul>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=36692&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/09/how-can-i-get-consistent-sizes-with-physically-different-monitors-on-linux/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Configuring Pop!_OS - Keyboard lights, fonts, and more]]></title>
		<link>https://shkspr.mobi/blog/2020/05/configuring-pop_os/</link>
					<comments>https://shkspr.mobi/blog/2020/05/configuring-pop_os/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 08 May 2020 11:58:16 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34924</guid>

					<description><![CDATA[I&#039;ve got a new laptop which runs Linux! These are mostly notes to myself.  Fonts  First, from the console, install Gnome Tweaks  sudo apt install gnome-tweaks   Run Tweaks and select &#34;Fonts&#34;.  You can swap fonts, boost them, and generally have a good fiddle. Increasing the scaling factor is a good way to boost the size of all desktop elements.  Bluetooth - rename  By default the Bluetooth name is …]]></description>
										<content:encoded><![CDATA[<p>I've got <a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/">a new laptop which runs Linux</a>! These are mostly notes to myself.</p>

<h2 id="fonts"><a href="https://shkspr.mobi/blog/2020/05/configuring-pop_os/#fonts">Fonts</a></h2>

<p>First, from the console, install Gnome Tweak<strong>s</strong></p>

<pre><code class="language-_">sudo apt install gnome-tweaks
</code></pre>

<p>Run Tweaks and select "Fonts".
<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/05/fonts.png" alt="Font selection panel." width="1003" height="700" class="aligncenter size-full wp-image-34927">
You can swap fonts, boost them, and generally have a good fiddle. Increasing the scaling factor is a good way to boost the size of all desktop elements.</p>

<h2 id="bluetooth-rename"><a href="https://shkspr.mobi/blog/2020/05/configuring-pop_os/#bluetooth-rename">Bluetooth - rename</a></h2>

<p>By default the Bluetooth name is pop_os.</p>

<pre><code class="language-_">sudo nano /etc/hostname
</code></pre>

<p>Replace it with whatever you like.</p>

<h2 id="keyboard-lights"><a href="https://shkspr.mobi/blog/2020/05/configuring-pop_os/#keyboard-lights">Keyboard Lights</a></h2>

<p>You will need to use <a href="https://github.com/tuxedocomputers/tuxedo-keyboard">Tuxedo</a>. It's a bit complicated.</p>

<pre><code class="language-_">git clone https://github.com/tuxedocomputers/tuxedo-keyboard.git
cd tuxedo-keyboard
git checkout release
</code></pre>

<p>Now edit the <code>Makefile</code>.  Find the lines with</p>

<pre><code class="language-_"># Package version and name from dkms.conf
VER := $(shell sed -n &amp;#039;s/^PACKAGE_VERSION=\([^\n]*\)/\1/p&amp;#039; dkms.conf)
MODULE_NAME := $(shell sed -n &amp;#039;s/^PACKAGE_NAME=\([^\n]*\)/\1/p&amp;#039; dkms.conf)
</code></pre>

<p>Change <code>dkms.conf</code> to the full path of your git download. For example</p>

<pre><code class="language-_"># Package version and name from dkms.conf
VER := $(shell sed -n &amp;#039;s/^PACKAGE_VERSION=\([^\n]*\)/\1/p&amp;#039; /home/MYNAME/git/tuxedo-keyboard/dkms.conf)
MODULE_NAME := $(shell sed -n &amp;#039;s/^PACKAGE_NAME=\([^\n]*\)/\1/p&amp;#039; /home/MYNAME/git/tuxedo-keyboard/dkms.conf)
</code></pre>

<p>Save the file. Now run:</p>

<pre><code class="language-_">make clean
sudo make dkmsinstall
sudo modprobe tuxedo_keyboard
</code></pre>

<p>Testing! Press the Fn key and the numpad symbols</p>

<ul>
<li>[Fn] <code>/</code> changes the colours. You get red, green, blue, yellow, purple, light blue, white, off</li>
<li>[Fn] <code>*</code> toggles the lights on and off</li>
<li>[Fn] <code>-</code> dims the lights</li>
<li>[Fn] <code>+</code> increases brightness</li>
</ul>

<p>You can also install <a href="https://github.com/webketje/tuxedo-backlight-control">this widget to help manage things</a>.</p>

<h2 id="screen-tearing"><a href="https://shkspr.mobi/blog/2020/05/configuring-pop_os/#screen-tearing">Screen Tearing</a></h2>

<p>See <a href="https://shkspr.mobi/blog/2020/05/fix-screen-tearing-on-rotated-external-monitors-ubuntu-pop_os/">Fix screen tearing on rotated external monitors (Ubuntu / POP!_OS)</a></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34924&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/05/configuring-pop_os/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Fix screen tearing on rotated external monitors (Ubuntu / POP!_OS)]]></title>
		<link>https://shkspr.mobi/blog/2020/05/fix-screen-tearing-on-rotated-external-monitors-ubuntu-pop_os/</link>
					<comments>https://shkspr.mobi/blog/2020/05/fix-screen-tearing-on-rotated-external-monitors-ubuntu-pop_os/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 06 May 2020 11:40:50 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pop_os]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wayland]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34954</guid>

					<description><![CDATA[I have a vertical monitor for my new Linux laptop. Because it is rotated 90 degrees, this causes problems with some graphics drivers on Linux (and Mac!). Here&#039;s a solution I found for my Intel graphics card.  Edit this file:  sudo nano /etc/gdm3/custom.conf   Find this line:  WaylandEnable=false   Change it to:  #WaylandEnable=false   Reboot.  On Pop!_OS, there is this settings cog in the bottom…]]></description>
										<content:encoded><![CDATA[<p>I have <a href="https://shkspr.mobi/blog/2020/04/review-iiyama-prolite-b2482hs-b1-24-vertical-monitor/">a vertical monitor</a> for my new <a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/">Linux laptop</a>. Because it is rotated 90 degrees, this causes problems with some graphics drivers on Linux (and Mac!). Here's a solution I found for my Intel graphics card.</p>

<p>Edit this file:</p>

<pre><code class="language-_">sudo nano /etc/gdm3/custom.conf
</code></pre>

<p>Find this line:</p>

<pre><code class="language-_">WaylandEnable=false
</code></pre>

<p>Change it to:</p>

<pre><code class="language-_">#WaylandEnable=false
</code></pre>

<p>Reboot.</p>

<p>On Pop!_OS, there is this settings cog in the bottom right corner. (Different login screens may have it elsewhere).</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/05/Pop-on-Wayland.jpg" alt="Pop up window with several login options." width="480" height="360" class="aligncenter size-full wp-image-34957">

<p>Choose "Pop on Wayland". Or "Wayland" - depending on your Desktop Environment.</p>

<p>That's it! No tearing when scrolling or playing videos!  If you've changed your screen scaling, you might have to fiddle with it to get back to normal - but everything should just work.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34954&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/05/fix-screen-tearing-on-rotated-external-monitors-ubuntu-pop_os/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Review - Clevo N151CU / Lafité IV / System76 Darter Pro / Entroware Proteus]]></title>
		<link>https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/</link>
					<comments>https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 03 May 2020 11:15:00 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34879</guid>

					<description><![CDATA[Sorry for the title gore. But it&#039;s the only way to let people know that all four of these laptops are identical.  Taiwanese manufacturer Clevo makes the N151CU laptop. They sell it directly to resellers, who in turn sell it on to consumers. It has excellent Linux support. Both Entroware (in the UK) and System76 (in the USA) sell it pre-installed with Ubuntu.  I purchased mine from PC Specialist…]]></description>
										<content:encoded><![CDATA[<p>Sorry for the title gore. But it's the only way to let people know that all four of these laptops are <em>identical</em>.</p>

<p>Taiwanese manufacturer <a href="https://web.archive.org/web/20200506124639/https://www.clevo.com.tw/clevo_prodetail.asp?id=1242&amp;lang=en">Clevo makes the N151CU laptop</a>. They sell it directly to resellers, who in turn sell it on to consumers. It has <em>excellent</em> Linux support. Both <a href="https://www.entroware.com/store/laptops/proteus">Entroware</a> (in the UK) and <a href="https://web.archive.org/web/20200506092307/https://system76.com/laptops/darter">System76</a> (in the USA) sell it pre-installed with Ubuntu.  I purchased mine from PC Specialist where they sell it as the <a href="https://www.pcspecialist.co.uk/notebooks/lafiteIV-15/">Lafité IV</a>.</p>

<p>PC Specialist sell it "bare bones" with no operating system. They don't <em>officially</em> support Linux, but <a href="https://web.archive.org/web/20200506062127/https://www.pcspecialist.co.uk/forums/forums/linux.32/">their forums are full of people discussing Linux</a> tips and tricks.</p>

<h2 id="unboxing"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#unboxing">UNBOXING!</a></h2>

<iframe title="Unboxing! Clevo N151CU / Lafité IV / Darter Pro / Proteus" width="620" height="349" src="https://www.youtube.com/embed/65IZDsKbQPk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<h2 id="pop-os"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#pop-os">Pop OS</a></h2>

<p>System 76 provide a customised version of Ubuntu 20 called <a href="https://system76.com/pop">Pop OS</a> - it's a full Ubuntu install with a few tweaks.  You can <a href="https://support.system76.com/articles/desktop-environment/">change the Desktop Environment</a> if you don't like the UI.  I picked it because I'm comfortable with Ubuntu and I figured System 76 would have added any weird drivers needed for the hardware. I dumped it onto a USB drive, shoved it into the new laptop and clicked <code>next</code> a bunch of times. It took less than 5 minutes to install.</p>

<h3 id="what-doesnt-work"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#what-doesnt-work">What Doesn't Work?</a></h3>

<p>Keyboard backlight. It has a multicolour backlight - but it's stuck on blue, with no way to dim it.  I'll blog later in the week how to get it working.</p>

<p>That's it. Everything else worked perfectly. Sound, WiFi, Bluetooth, Suspend.</p>

<h2 id="quirks"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#quirks">Quirks</a></h2>

<p>Charging via USB-C. This was the main reason I bought this laptop. The laptop's USB-C port does support charging. But, weirdly, it is supplied with a barrel charger. I used a 65W USB charger and it worked just fine.</p>

<p>The BIOS supplied by PC Specialists is pretty restricted. I understand that they don't want people fiddling with settings that may be destructive. Depending on how restrictive I find it, I may try flashing the <a href="https://repo.palkeo.com/clevo-mirror/N15xCU/">OEM BIOS and firmware</a>. What's the worst that could happen?!</p>

<p>Webcam. It's a 720p model. In this age of endless video-conferencing, I'd have preferred something a bit better. But it works fine.</p>

<h2 id="hardware-review"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#hardware-review">Hardware Review</a></h2>

<p>So... many... ports! Do you need HDMI <em>and</em> Mini Displayport?</p>

<p>I'd have preferred another USB-C port rather than a Mini Displayport. There are <a href="https://amzn.to/3eWCdgb">adaptors</a> and hubs. But nothing beats in-built.</p>

<p>There are 3 regular USB sockets. More than enough.</p>

<p>Despite having a pretty decent microphone built in, there's a 3.5mm mic port and a separate headphone jack. Weirdly, there's a <a href="https://en.wikipedia.org/wiki/TOSLINK#Mini-TOSLINK">Mini-TOSLINK</a> built into the.... Yup - this laptop has optical out for digital audio!</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/05/Glowing-red-light-coming-out-of-a-microphone-port.jpg" alt="Glowing red light coming out of a microphone port." width="1024" height="130" class="aligncenter size-full wp-image-34925">

<p>There are slots for 2 sticks of RAM. I got a single 16GB stick - with the aim of shoving another one in there after a few years of use.</p>

<p>It also has 2 <a href="https://en.wikipedia.org/wiki/M.2">M.2 slots</a>. One contains the WiFi card, the other the SSD.  Once WiFi 7 comes out, I might upgrade the connectivity. Similarly, the SSD I got is big enough and fast enough for now, but might be replaced in the future. Do note that <a href="https://web.archive.org/web/20200506210417/https://www.pcspecialist.co.uk/forums/threads/unable-to-install-linux.66956/page-2">Linux has problems with NVME drives</a> at the moment.</p>

<p>All I need is to read MicroSD cards, but this has a full width SD slot. Sadly, it's only half depth, so a full-sized SD adaptor sticks out:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/05/SD-Card-sticking-out.jpg" alt="SD Card sticking out." width="512" height="352" class="aligncenter size-full wp-image-34936">
Just like the MacBook Air!</p>

<p>The trackpad is pretty good - but has two small flaws. Firstly, the buttons underneath it feel a bit flimsy. Hard to describe, but they work, and you can tap / right tap on the trackpad.
The second flaw is that there's a fingerprint reader built into the trackpad. I can't make it work in Linux - but it makes the top left corner of the pad unusable. If your finger glides over it, the cursor stops moving. It's a weird design decision - but not a show stopper.</p>

<p>Keyboard is as good as any laptop I've used. The layout takes a little getting used to - but you can't beat having a proper number pad!</p>

<p>Speakers are a bit quiet and tinny. OK for voice calls, but for music you'll want to use headphones. Pop OS automatically detects when you've inserted a pair and routes the audio accordingly.</p>

<p>Fan noise is about the same as other laptops. It gets a bit warm on my lap, just like other laptops. Battery life is fine - depending on what you're doing with it.</p>

<h2 id="cost"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#cost">Cost</a></h2>

<p>Total cost including shipping was £738. You can configure it to a much higher or lower spec depending on your budget.</p>

<p>I got it from <a href="https://web.archive.org/web/20200506063516/https://www.pcspecialist.co.uk/notebooks/lafiteIV-15/">PC Specialist</a> in the UK.</p>

<h2 id="verdict"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#verdict">Verdict</a></h2>

<p>I frickin' LOVE IT! It's light, has a big bright screen, silly light up keyboard, and worked flawlessly. I'd been <a href="https://shkspr.mobi/blog/2020/04/dude-im-getting-a-linux-dell-maybe/">considering a Dell for twice the price</a> - but I'm glad I went for this.</p>

<p>It's a light, sturdy laptop which runs Ubuntu like a dream.</p>

<hr>

<h2 id="full-spec"><a href="https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/#full-spec">Full Spec</a></h2>

<p>For those that like such things:</p>

<ul>
<li>Lafité Series: Aluminium Chassis: 15.6" Matte Full HD IPS LED (1920 x 1080)</li>
<li>Intel® Core™ i5 Quad Core Processor i5-10210U (1.6GHz, 4.2GHz Turbo)</li>
<li>16GB Corsair 2666MHz SODIMM DDR4 (1 x 16GB)</li>
<li>INTEL® HD GRAPHICS (CPU Dependant) - 1.7GB Max DDR4 Video RAM - DirectX® 12</li>
<li>256GB PCS PCIe M.2 SSD (1900 MB/R, 1100 MB/W)</li>
<li>Integrated 6 in 1 Card Reader (SD /Mini SD/ SDHC / SDXC / MMC / RSMMC)</li>
<li>1 x 65W AC Adaptor</li>
<li>1 x 1 Metre Cloverleaf UK Power Cable</li>
<li>1 x Lafité Battery 54WH</li>
<li>Intel 2 Channel High Definition Audio + MIC/Headphone Jack</li>
<li>GIGABIT LAN &amp; WIRELESS INTEL® Wi-Fi 6 AX200 (2.4 Gbps) + BT 5.0</li>
<li>1 x THUNDERBOLT PORT (USB-C) + 2 x USB 3.0 PORTS + 1 x USB 2.0 PORT
Keyboard Language</li>
<li>INTEGRATED 1MP HD WEBCAM</li>
<li>3 Year Silver Warranty (1 Year Collect &amp; Return, 1 Year Parts, 3 Year Labour)</li>
<li>1 Year Dead Pixel Guarantee Inc. Labour &amp; Carriage Costs</li>
</ul>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34879&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/05/review-clevo-n151cu-lafite-iv-system76-darter-pro-entroware-proteus/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Dude! I'm getting a (Linux) Dell! Maybe...]]></title>
		<link>https://shkspr.mobi/blog/2020/04/dude-im-getting-a-linux-dell-maybe/</link>
					<comments>https://shkspr.mobi/blog/2020/04/dude-im-getting-a-linux-dell-maybe/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 22 Apr 2020 11:35:00 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34781</guid>

					<description><![CDATA[I need a new laptop. My old one is dying a long, slow death. My requirements are modest - runs Ubuntu and charges via USB-C.  Cheap would be a bonus - as would a num-pad - but I&#039;ll take what I can get!  Loads of people have recommended the Dell XPS13 series. I&#039;m looking at them and I&#039;m a bit confused (so what else is new). I&#039;d appreciate your advice gentle reader.  There are two models available. …]]></description>
										<content:encoded><![CDATA[<p>I need a new laptop. <a href="https://shkspr.mobi/blog/2020/04/the-laptop-of-theseus/">My old one is dying a long, slow death</a>. My requirements are modest - runs Ubuntu and charges via USB-C.  Cheap would be a bonus - as would a num-pad - but I'll take what I can get!</p>

<p>Loads of people have recommended the Dell XPS13 series. I'm looking at them and I'm a bit confused (so what else is new). I'd appreciate your advice gentle reader.</p>

<p>There are <a href="https://www.dell.com/en-uk/shop/laptops-notebooks-and-2-in-1-laptops/sr/laptops/xps-laptops/ubuntu?appliedRefinements=9964">two models available</a>. Here are the main differences between them:</p>

<table>
<thead>
<tr>
  <th></th>
  <th align="center">New</th>
  <th align="center">Old</th>
</tr>
</thead>
<tbody>
<tr>
  <td>CPU</td>
  <td align="center">i5-1035G1 Processor<br>(6MB Cache, up to 3.6 GHz)</td>
  <td align="center">i7-10510U<br>(8 MB Cache, 4 Core, up to 4.90 GHz)</td>
</tr>
<tr>
  <td>RAM</td>
  <td align="center">8GB</td>
  <td align="center">16GB</td>
</tr>
<tr>
  <td>Screen Size</td>
  <td align="center">13.4"</td>
  <td align="center">13.3"</td>
</tr>
<tr>
  <td>Ports</td>
  <td align="center">2x USB-C</td>
  <td align="center">3x USB-C</td>
</tr>
<tr>
  <td>Cost</td>
  <td align="center">£1,350</td>
  <td align="center">£1,250</td>
</tr>
</tbody>
</table>

<p>So, for a hundred quid <em>less</em> I get <em>more</em> RAM and more ports. And a faster(?) CPU with more cache. Or, do a pay a bit more for a screen which is a smidgen bigger?</p>

<p>Am I reading that right? Is there any other advantage to the newer system?</p>

<p>I write code, browse the web, and do some light media editing. I don't play games or do 3D rendering. So I don't need ridiculous power.</p>

<p>Or, should I be looking elsewhere? I want something with Linux support from the manufacturer - mostly to not have to faff around too much with weird drivers, but also to support the market.</p>

<p>If you know of a UK supplier of Linux laptops which charge over USB-C - please leave me a message in the comments!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34781&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/04/dude-im-getting-a-linux-dell-maybe/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Using the Evoluent VMCR C Series Vertical Mouse with Linux]]></title>
		<link>https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/</link>
					<comments>https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 12 May 2018 17:18:13 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[evoluent]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=29580</guid>

					<description><![CDATA[This is a quick guide for setting up your new mouse with Ubuntu.  I&#039;m a big fan of the Evoluent Mouse range, and I&#039;ve agreed to publish this Linux guide in return for a review sample.  The Basics  The only way to configure this mouse is via the command-line.  This may look a bit daunting, but I promise you it&#039;s simple. Just copy and paste the highlighted code.  Open up a Terminal. You&#039;ll usually…]]></description>
										<content:encoded><![CDATA[<p>This is a quick guide for setting up your new mouse with Ubuntu.  I'm a <a href="https://shkspr.mobi/blog/2011/06/review-evoluent-vertical-mouse-4-and-how-to-make-it-work-in-ubuntu/">big fan of the Evoluent Mouse range</a>, and I've agreed to publish this Linux guide in return for a review sample.</p>

<h2 id="the-basics"><a href="https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#the-basics">The Basics</a></h2>

<p>The only way to configure this mouse is via the command-line.  This may look a bit daunting, but I promise you it's simple. Just copy and paste the highlighted code.</p>

<p>Open up a Terminal. You'll usually find this in your main menu.  Or, you can open it by pressing <kbd>ctrl</kbd>+<kbd>alt</kbd>+<kbd>t</kbd>.</p>

<h3 id="connect-the-mouse"><a href="https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#connect-the-mouse">Connect the mouse</a></h3>

<ol>
<li>Make sure your computer is switched on.</li>
<li>Plug the mouse's USB cable into your computer.</li>
</ol>

<p>If you wiggle the mouse, you should see the cursor on your screen move.</p>

<h3 id="detecting-the-mouse"><a href="https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#detecting-the-mouse">Detecting the mouse</a></h3>

<p>In the terminal, type</p>

<pre><code class="language-bash">xinput
</code></pre>

<p>You should see a list of input devices - keyboards, mice, laptop buttons - this is what mine looks like</p>

<pre><code class="language-bash">⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ Kingsis Peripherals Evoluent VerticalMouse 5  id=14   [slave  pointer  (2)]

</code></pre>

<h2 id="detect-the-buttons"><a href="https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#detect-the-buttons">Detect the buttons</a></h2>

<p>This command will detect all the buttons on the mouse:</p>

<pre><code class="language-bash">xinput query-state "Kingsis Peripherals Evoluent VerticalMouse 5"
</code></pre>

<p>This is what the output should look like:</p>

<pre><code class="language-bash">2 classes :
ButtonClass
    button[1]=up
    button[2]=up
    button[3]=up
    button[4]=up
    button[5]=up
    button[6]=up
    button[7]=up
    button[8]=up
    button[9]=up
    button[10]=up
</code></pre>

<p>Each button has a number.  Note - some of these are <em>virtual</em> buttons. They do not have a <em>physical</em> button.</p>

<p>Here's a picture of the physical buttons:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/05/Evoluent-C-Wired-Buttons.jpg" alt="Mouse with multiple buttons." width="800" height="477" class="aligncenter size-full wp-image-29603"></p>

<p>Here is how they are mapped onto to actions.</p>

<table>
<thead>
<tr>
  <th>ID</th>
  <th>Action</th>
  <th>Physical Button</th>
</tr>
</thead>
<tbody>
<tr>
  <td>1</td>
  <td>Left Click</td>
  <td>Index finger</td>
</tr>
<tr>
  <td>2</td>
  <td>Middle Click</td>
  <td>Ring finger</td>
</tr>
<tr>
  <td>3</td>
  <td>Right Click</td>
  <td>Little finger</td>
</tr>
<tr>
  <td>4</td>
  <td>Scroll Up</td>
  <td>Wheel up</td>
</tr>
<tr>
  <td>5</td>
  <td>Scroll Down</td>
  <td>Wheel down</td>
</tr>
<tr>
  <td>6</td>
  <td>Scroll Left</td>
  <td></td>
</tr>
<tr>
  <td>7</td>
  <td>Scroll Right</td>
  <td></td>
</tr>
<tr>
  <td>8</td>
  <td></td>
  <td>Top thumb</td>
</tr>
<tr>
  <td>9</td>
  <td></td>
  <td>Bottom thumb</td>
</tr>
<tr>
  <td>10</td>
  <td>Forward</td>
  <td></td>
</tr>
</tbody>
</table>

<p>So, you can set physical button 9 (the bottom thumb) to scroll down. Or change the wheel up action to be right click.  Any combination is possible - and you can choose what works best for you.</p>

<h2 id="change-the-buttons-temporary"><a href="https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#change-the-buttons-temporary">Change the buttons (temporary)</a></h2>

<p>We can remap the buttons so they do something else. This is only temporary and will revert back to normal when you reboot.  I'll show you a permanent way to re-order the buttons further down the page.</p>

<p>Suppose you want to swap button 1 and button 3 so that your left and right click are reversed. Here's the command you run:</p>

<pre><code class="language-bash">xinput set-button-map "Kingsis Peripherals Evoluent VerticalMouse 5" 3 2 1 4 5 6 7 8 9 10
</code></pre>

<p>(Notice that the position of button 1 and 3?)</p>

<p>If you want to make the bottom-thumb button be left click, and leave all the other buttons the same, you run:</p>

<pre><code class="language-bash">$ xinput set-button-map "Kingsis Peripherals Evoluent VerticalMouse 5" 1 2 3 4 5 6 7 8 1 10
</code></pre>

<p>If you want reverse the direction of the scroll wheel - sometimes called "natural" scrolling:</p>

<pre><code class="language-bash">xinput set-button-map "Kingsis Peripherals Evoluent VerticalMouse 5" 1 2 3 5 4 6 7 8 9 10
</code></pre>

<p>Experiment with an order that feels right for you.</p>

<h2 id="permanently-change-the-buttons"><a href="https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#permanently-change-the-buttons">Permanently change the buttons</a></h2>

<p>You need to find the USB Identifier of the mouse. In the terminal run:</p>

<pre><code class="language-bash">lsusb
</code></pre>

<p>You'll see all of your USB devices.  Find the one that refers to your mouse.  For me, it is <code>1a7c:0195</code>.</p>

<p>We now need to add this information into a configuration guide.</p>

<pre><code class="language-bash">sudo nano /usr/share/X11/xorg.conf.d/90-evoluent.conf
</code></pre>

<p>This will ask you for your password. Once you've entered it, you'll be using the "nano" text editor.</p>

<p>Copy and paste the following text into the terminal:</p>

<pre><code class="language-_">Section "InputClass"
        Identifier      "Evoluent"
        MatchUSBID      "1a7c:0195"
        Option "ButtonMapping" "0 2 3 4 5 6 7 8 1 10"
EndSection

</code></pre>

<p>You may need to change the "MatchUSBID" if yours is different to mine.  You will need to change the "ButtonMapping" to the order you prefer.</p>

<p>Once you're done, press <kbd>ctrl</kbd>+<kbd>x</kbd> to exit nano. It will ask you if you want to save the file.  Type <kbd>y</kbd>, then press <kbd>⏎</kbd>. You will need to press <kbd>⏎</kbd> again to confirm the filename.</p>

<p>You may need to reboot your computer for the new settings to take effect.</p>

<h2 id="done"><a href="https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/#done">Done!</a></h2>

<p>That's it, you've now configured your mouse. If you need any more help, please leave a comment in the box below and I'll try to help.</p>

<p>You can <a href="https://amzn.to/2rCbWff">buy the Evoluent C from Amazon UK</a> or buy the <a href="https://amzn.to/2IBrv1b">wireless version</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=29580&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2018/05/using-the-evoluent-vmcr-c-series-vertical-mouse-with-linux/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Fixing Broken Zip Files from Bandcamp - File name too long]]></title>
		<link>https://shkspr.mobi/blog/2017/05/fixing-broken-zip-files-from-bandcamp-file-name-too-long/</link>
					<comments>https://shkspr.mobi/blog/2017/05/fixing-broken-zip-files-from-bandcamp-file-name-too-long/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 15 May 2017 09:42:22 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=25195</guid>

					<description><![CDATA[I recently downloaded an album from Bandcamp.  On trying to extract the zip file using Ubuntu, I got the error &#34;File name too long.&#34;  This is a known problem with Bandcamp.  If you have a problem with long filenames in zip files, here&#039;s how to fix it.  Quick Solution  unzip -p -c whatever.zip &#34;filename.ogg&#34; &#62; shortname.ogg   That will extract a specific file from the zip and then rename it before …]]></description>
										<content:encoded><![CDATA[<p>I recently downloaded an album from Bandcamp.  On trying to extract the zip file using Ubuntu, I got the error "File name too long."  This is <a href="http://whatbettyknows.com/2012/10/31/tipwarning-long-file-names-in-bandcamp-and-other-zipped-downloads/">a known problem with Bandcamp</a>.</p>

<p>If you have a problem with long filenames in zip files, here's how to fix it.</p>

<h2 id="quick-solution"><a href="https://shkspr.mobi/blog/2017/05/fixing-broken-zip-files-from-bandcamp-file-name-too-long/#quick-solution">Quick Solution</a></h2>

<pre><code class="language-bash">unzip -p -c whatever.zip "filename.ogg" &gt; shortname.ogg
</code></pre>

<p>That will extract a specific file from the zip and then rename it before writing it to disk.</p>

<p>If you don't want to use the whole file name, you can use</p>

<pre><code class="language-bash">unzip -p -c whatever.zip "*a bit of the filename*" &gt; shortname.ogg
</code></pre>

<h2 id="more-than-one-file"><a href="https://shkspr.mobi/blog/2017/05/fixing-broken-zip-files-from-bandcamp-file-name-too-long/#more-than-one-file">More than one file</a></h2>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2017/05/Complicated.jpg" alt="Amy Pond, from the TV show Doctor Who, is strapped into a chair. She is saying &quot;OK, kid, This is where where it gets complicated&quot;" width="400" height="224" class="aligncenter size-full wp-image-25196">

<p>It is <em>impossible</em> to rename a file inside a zip on Linux - if the name is already too long.  Every app will fail if you try to do so.</p>

<p>In order to truncate the filenames, you need to do two things.  First, get a list of all the files.</p>

<pre><code class="language-_">zipinfo -2 example.zip
</code></pre>

<p>Then we pipe all of those file names into the above example and rename them.</p>

<pre><code class="language-_">zipinfo -2 example.zip | while read i; do unzip -p -c example.zip "$i" &gt; "${i:0:127}" ; done;
</code></pre>

<p>In this example, I'm using 128 characters as the maximum filename length - your requirements may be different. This also <em>removes the file extension.</em></p>

<p>So, here's how to extract long filenames from a zip, shorten the name, and preserve the file extension.</p>

<pre><code class="language-bash">zipinfo -2 example.zip | while read i;
do
  long_fname=${i%.*}
  unzip -p -c example.zip "$i" &gt; "${long_fname:0:123}.${i##*.}"
done;
</code></pre>

<p>Thanks to <a href="https://askubuntu.com/users/264781/ravexina">ravexina</a> for <a href="https://askubuntu.com/questions/915041/how-to-rename-extract-files-with-long-names-in-zip-archive">answering this question</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=25195&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2017/05/fixing-broken-zip-files-from-bandcamp-file-name-too-long/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Converting RAR to ZIP in Linux]]></title>
		<link>https://shkspr.mobi/blog/2016/12/converting-rar-to-zip-in-linux/</link>
					<comments>https://shkspr.mobi/blog/2016/12/converting-rar-to-zip-in-linux/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 11 Dec 2016 21:11:38 +0000</pubDate>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=24314</guid>

					<description><![CDATA[As ever, mostly notes to myself.  RAR is a silly and proprietary format.  I prefer free software and I find that ZIP files are smaller and decompress faster. Not everyone agrees, and that&#039;s fine. Assuming you&#039;ve downloaded a RAR file and want to convert it to ZIP, what&#039;s the easiest way?  Install P7Zip  sudo apt-get install p7zip-full p7zip-rar   Script  This basic bash script will   Extract a…]]></description>
										<content:encoded><![CDATA[<p>As ever, mostly notes to myself.</p>

<p>RAR is a silly and proprietary format.  I prefer free software and I find that ZIP files are smaller and decompress faster. Not everyone agrees, and that's fine.
Assuming you've downloaded a RAR file and want to convert it to ZIP, what's the easiest way?</p>

<h3 id="install-p7zip"><a href="https://shkspr.mobi/blog/2016/12/converting-rar-to-zip-in-linux/#install-p7zip">Install P7Zip</a></h3>

<pre><code>sudo apt-get install p7zip-full p7zip-rar
</code></pre>

<h3 id="script"><a href="https://shkspr.mobi/blog/2016/12/converting-rar-to-zip-in-linux/#script">Script</a></h3>

<p>This basic bash script will</p>

<ol>
<li>Extract a RAR <code>example.rar</code> file to a temporary directory on a <a href="http://sharadchhetri.com/2012/08/15/devshm-mount-devshm/">RAM disk</a>.</li>
<li>Recompress to <code>example.zip</code>.</li>
<li>Delete the temporary directory.</li>
</ol>

<p>Easy!</p>

<p>It is based on <a href="http://comicrack.cyolito.com/forum/13-scripts/30013-cbr2cbz-rar-to-zip-conversion-for-linux?start=10#30419">this conversion from CBR to CBZ</a>.</p>

<pre><code class="language-bash">#!/bin/bash
echo "Converting RARs to ZIPs"

# Separate files using ␜ http://graphemica.com/%E2%90%9C.
IFS="␜"

# Use RAM disk for temporary files.
WORKDIR="/dev/shm/"

# Set name for the temp dir. This directory will be created under WORKDIR
TEMPDIR="rar2zip"

# Run using "./rar2zip.sh /full/path/to/files/"
# If no directory is specified, then use the current working directory (".").

if test -z $1; then
   SOURCEDIR=`pwd`
else
   SOURCEDIR="$1"
fi

echo "Using $SOURCEDIR"

# Create an temporary directory to work in.
cd $WORKDIR
mkdir $TEMPDIR
cd $TEMPDIR

# Find all the .rar files in the specified directory.
# Using -iname means it will find .rar .RAR .RaR etc.
# "-printf "%p␜" will cause the file names to be separated by the ␜ symbol,
# rather than the default newline.

for OLDFILE in `find $SOURCEDIR -iname "*.rar" -printf "%p␜"`; do

   # Get the file name without the extension
   BASENAME=`basename "${OLDFILE%.*}"`

   # Path for the file. The ".zip" file will be moved there.
   DIRNAME=`dirname $OLDFILE`

   # Name of the .zip file
   NEWNAME="$BASENAME.zip"

   # Create a temporary folder for unRARed files
   echo "Extracting $OLDFILE"
   mkdir "$BASENAME"
   7z x "$OLDFILE" -O"$BASENAME"
   cd "$BASENAME"

   # Zip the files with maximum compression
   7z a -tzip -mx=9 "$NEWNAME" *
   # Alternative. MUCH SLOWER, but better compression
   # 7z a -mm=Deflate -mfb=258 -mpass=15 -r "$NEWNAME" *

   # Move the new .zip to the directory containing the original ".rar" file
   mv "$NEWNAME" $DIRNAME/"$NEWNAME"

   # Delete the temporary directory
   cd $WORKDIR
   rm -r "$BASENAME"

   # OPTIONAL. Delete the RAR file
   # cd $DIRNAME
   # rm "$OLDFILE"

done

# Delete the temporary directory
cd $WORKDIR
rm -r $TEMPDIR

echo "Conversion Done"
</code></pre>

<p>That's it! I suppose it might be nice if there were a simpler way to do it - but this is fairly quick and error-proof.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=24314&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/12/converting-rar-to-zip-in-linux/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
