Create .desktop files for Ubuntu

Having created a couple of .desktop files lately to make launching apps easier, I thought I'd write myself a quick reminder of what I did and how it works. If it's useful to you too, then great! I have one application in a weird path, and another that needs a specific environment variable set for it to work. Continue reading

Sharing Screen and Camera from Android to Linux

With all the video calls, twitch streaming and product demo work I've been doing recently, I've been building up a library of tricks for using my android devices within the video content I produce from my laptop, so I thought I'd share. I've worked remotely for many years but I think there's more of us not going back to the office any time soon, so strong video communication skills are important! Continue reading

Add a Screenshot Button to Streamdeck with Golang

I'm the proud owner of a Streamdeck XL but as an Ubuntu user, the tool support isn't great. There's a Python library that gives a bit of a GUI but I found it hard to use and I'd have needed to put each piece of functionality as a commandline script that this program could call. Instead, I am using go-streamdeck to create a custom application - and I'm having fun! Today's example adds a single button that runs a command to take a screenshot. Continue reading

OBS Studio, Ubuntu 20.04 and a Wacom Tablet

When I upgraded my computers to Ubuntu 20.04, I noticed a weird problem with OBS when using an old Wacom Bamboo tablet (because, have you ever tried to use OBS without a pointing device?). I couldn't actually click anything! The pointer seemed to be ... pointing to the wrong place. After some research (and then some help with my research), I came across this post on OBS forums suggesting that this fixes it:

QT_XCB_TABLET_LEGACY_COORDINATES=1 obs

It does, and I never want to do the research for this again, so I'm posting it here and hoping I remember to look here when it happens!

The `python-is-python2` package on Ubuntu Focal Fossa

I did a fresh install of Ubuntu 20.04 Focal Fossa on my laptop, and was surprised at what happened when I went to install python:

$ sudo apt install python
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'python-is-python2' instead of 'python'

Um, what?

It turns out that since the python package has historically been Python 2, and there's a separate python3 package (and the commands match the package names, also pip3 etc), that default has remained in an attempt to break things for fewer people. Which is nice, but how do I get current, stable python?

sudo apt install python-is-python3

There's a sister package called python-is-python3 and installing that makes my python command use version 3 as I expected! It's a fairly good solution to the problem but it took me a moment to work out how to install it so I thought I'd write it down for next time! Hope it helps you too :)

Ruby for non-Rubyists with Snap

I'm an Ubuntu user and I enjoy most server-side scripting languages but I haven't done much Ruby and I never get the feeling that Ruby is pleased to see me when I do. Something is always out of date or has an incompatible dependency or ... and since I don't use it regularly, I don't have the familiarity that enables me to easily debug these things with other platforms.

I've been using the Ruby Snap on Ubuntu for a while now, and I think it's a bit better? I've referred to my notes every time I've done it though so I thought I had better put them somewhere I'll find them even when I'm using a new notebook :)

What versions are available?

snap info ruby will show your choices of versions to install. I usually just need a major.minor version combination so I set the version with:

sudo snap switch ruby --channel=2.5/stable
sudo snap refresh

If you see a lot of "extension not built" anger then try this: ruby.gem pristine --extensions

Using Ruby and Gem and Bundle

The snap actually ships with all these commands available as separate commands:

  • ruby (just check this is the right one! Should be the same as /snap/bin/ruby - if it's not check what order things are in your $PATH)
  • ruby.gem is the gem executable for this snap ruby
  • ruby.bundle is the bundler gem for this snap ruby (I use this one the most since my ruby usage is basically bundle exec jekyll serve most of the time!)

Beware that the 2.5 channel has bundler v2 and the 2.6 channel has v1, I have no idea why but it's tripped me up at least four times now

Windows removed my grub menu

I know this will happen to me again at a bad moment so I'm putting it here on my blog and hoping I can find it in my future hour of need ...

My work machine is a Windows PC, with dual boot to the Ubuntu partition that I actually use. Sometimes, when booting Windows, it "repairs" its disks and removes my grub menu, booting straight into Windows without showing me the grub menu.

To fix this: interrupt the startup, choose the boot device and pick the Ubuntu partition from the list.

Once booted, you can boot-repair to sort out grub - I also travel with a boot disk, just in case!

PHP 7.0 (and 5.6) on Ubuntu

PHP 7 is released but for those of us who don't usually compile our own PHP, it can be a long wait for our preferred distro to release the packages we want. For Ubuntu, I'm using a PPA which allows both PHP 5.6 and PHP 7.0 to be installed, including things like extensions, at the same time. It was very easy to set up (I'm running Ubuntu 15.10 but this process should also work on older versions back to at least 14.04 which is the previous LTS) so here's a quick walkthrough of what I did. Continue reading

My ffmpeg Cookbook

I have been doing more screencasting lately, so I thought I'd share some recipes here, for my own future use and in case anyone else wants to use them. I capture my videos using Kazam on Ubuntu, usually by resizing my second monitor to 800x600 and then capturing that. Kinda eye-bleeding to record but looks good in playback and also works well either in tiny web view or on a big screen. I also screencapture my android device and for that I use Screen Recorder.

Continue reading