Create new program launcher in Launchpad with Automator New Application → Run Shell Script → paste this lot in:

/bin/bash -c "/Applications/kitty.app/Contents/MacOS/kitty -o initial_window_width=980 -o initial_window_height=535 -o remember_window_size=no -o foreground=green --title 'Giocoso - A Digital Music Player' -e ssh -Y -t hjr@frank \"tmux new-session -A -s giocoso '/usr/bin/giocoso3.sh'\""

Basically “run in the context of a proper Bash shell, kitty terminal, connecting via SSH to my proper music player, and tmux there so I can hang up and not trigger music playback halt”. Precise path to Kitty will depend on how you installed it (the above is what happens if you download it and install it directly from their website). Precise window heights and widths will depend on your choice of font/font size, specified in the general Kitty configuration file.

Kitty Terminal can be installed directly (don't need to install it via Macports, for example, and in fact shouldn't as doing so creates really weird paths).

Simply install with:

curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin

General configuration is done in $HOME/.config/kitty/kitty.conf:

font_family      family="Luxi Mono"
font_size 15
bold_font        auto
italic_font      auto
bold_italic_font auto
foreground green
confirm_os_window_close 0

Note that you can override this when launching kitty with -o switches (see above, where font size is set to 14, regardless of the setting of 15 in this configuration file).

Firefox can be downloaded with Safari! Visit their website and download it directly.

Proper file system navigation: install Commander One. Same deal: direct download from their website.

Nice text editor: Geany, also directly-downloadable from their website.

Rectangle for Windows snapping (Monterey doesn't do it natively, I think).

Virt-Manager is installable via Macports and/or Homebrew (See, for example, this article). Looks revolting, with terrible screen resolution and fuzzy appearance, but it works well enough.

First install the tools needed to compile new software:

xcode-select --install

After that, follow the instructions at their website.

Once installed:

echo >> /Users/hjr/.zprofile
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> /Users/hjr/.zprofile
eval "$(/usr/local/bin/brew shellenv)"

These commands are shown to you at the end of the installation anyway, so just do them as provided: the “hjr” bit of the above is obviously specific to me!

To get Giocoso installation script downloaded, you're going to need the wget utility and a modern version of Bash, so my suggestion for your first test of Homebrew is to issue the command:

brew install wget bash

It will take an age to compile. Just be patient…

The alternative to Homebrew for installing new packages on macOS is Macports, which has the advantage over Homebrew of running on older macOS versions (Homebrew won't support installing things on Monterey, for example, though it will still work for the most part: there's just no support for getting it to work).

Do not use both Macports and Homebrew: it's one or the other, but never both at the same time. All hell lets loose when you mix your package managers!

To install Macports:

First install the software compiler toolchain:

xcode-select --install

After that, download the appropriate package for your version of macOS:

https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-26-Tahoe.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-15-Sequoia.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-14-Sonoma.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-13-Ventura.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-12-Monterey.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-11-BigSur.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-10.15-Catalina.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-10.14-Mojave.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-10.13-HighSierra.pkg
https://github.com/macports/macports-base/releases/download/v2.11.6/MacPorts-2.11.6-10.12-Sierra.pkg

These URLs are obviously version-dependent and the versions shown are only correct at the time of writing (December 2025). Check the Macports website for the actual versions current at the time you want to install. There are versions available for macOS releases earlier than Sierra, but installing Giocoso on such ancient operating systems is definitely not supported at all, so be my guest but you're on your own for them!

You will need wget and a modern version of Bash to be installed before you can obtain the Giocoso installer:

sudo port install wget bash

After that, wget software.bbritten.com/gioinst.

They work much as in Linux, but with one key extra mount option required:

ben:/bulkdata/music /private/netmusic nfs rw,resvport,hard,intr,rsize=131072,wsize=131072,timeo=14

The trailing “0 0” you stick on such mounts in Linux are not required in macOS

Giocoso will install a lot of Giocoso's prerequisites for you, as part of its installation process. It will not do a couple of very important things beforehand, however, which need to be done in order for Giocoso to work properly.

  • 1. Install Homebrew or Macports if not already installed (see note concluding this section below: do not mix your package managers).
  • 2. Install Kitty Terminal
  • 3. Grant terminal and Kitty Full Disk Access in the Security & Privacy settings app

Apart from that, however, the standard Giocoso installation procedure will then work.

Note that Homebrew is agonisingly slow to compile certain packages. All output from the homebrew installations is directed to a file called $HOME/brewinstalls.txt, so you can see that progress is being made (by doing a tail -f $HOME/brewinstalls.txt in a new terminal window), even though the thing sits there for perhaps hours on end. Sometimes, however, even that is not enough: when installing fd for example, the brewinstalls.txt will just sit there, apparently stuck on “=⇒ Installing fd dependency: llvm”. At that point, you can open yet another terminal window and type top to see the processes running on the system. So long as clang is at the top of active processes, then compilation progress is actually being made, despite appearances.

NB: It is a known issue that compiling llvm (a necessary component of things like ffmpeg, fd and so on) takes many hours with Homebrew on macOS. For example, on my 3.1GHz i5 with 16GB RAM, I saw this:

==> /usr/libexec/PlistBuddy -c Add:CompatibilityVersion integer 2 Info.plist
Warning: The post-install step did not complete successfully
You can try again using:
  brew postinstall llvm
==> Summary
🍺  /usr/local/Cellar/llvm/21.1.6: 9,238 files, 1.6GB, built in 179 minutes 45 seconds

179 minutes is 3 hours, of course! Also, note the post-install failure: do a brew postinstall llvm once everything else has been installed and you should be OK.

For this reason, I recommend you do a manual brew install fd to get the dependencies installed up-front and under your control. Otherwise, you'll be staring at a Giocoso installer that appears to have stalled for multiple hours on end! If you do an up-front installation, however, you'll find the rest of the Giocoso installation then goes relatively fast, because all the hard work has already been done ahead of time.

Other brews that take an inordinate amount of time to complete (and which you therefore might want to do ahead of time, before attempting to install Giocoso) are:

brew install ffmpeg flac imagemagick xterm bash

If you don't use Homebrew to begin with, however, it's recommended to use Macports instead, which is nowhere near as slow. Do not mix your package installers, however. If you've already used Homebrew, do not start using Macports (and, obviously, vice versa).

Note that having installed a new version of Bash to replace the ancient one that macOS ships with, you have to close the terminal you installed it in and open a brand new one in order to get the new arrival to be noticed. Make sure you fully quit all instances of running terminal, rather than just hiding one. Before running the Giocoso installer, it's perhaps best to type:

bash --version

…and make sure you see Version 5.something, rather than 3.something.

There is no ability to pause play in Giocoso on macOS. Pausing the ffmpeg process doesn't pause whatever the macOS audio subsystem is up to in the background (unfortunately), so that when you resume play, the audio subsystem says “Oy, real time clock was at Y but is now at Z, catch up”… and ffmpeg does what it's told. The only workaround would be to literally kill ffmpeg with a note of where it was up to and then resume with the ss starting switch. Clunky and I'm not up for coding that as yet… For now, the pause/resume buttons have been removed if macOS is detected as the operating system in use.

Installing ImageMagick in a Homebrew setting is an absolute nightmare (without which, Giocoso cannot show album art and instead shows error messages). The 'brew install imagemagick' fails on my Monterey macOS, because it tries to check for Unicode support, can't find the relevant library and thus gives up (the error is “ICU support no…”).

A very awkward workaround is possible:

brew install icu4c@78 pkg-config autoconf automake libtool
cd /tmp
curl -LO https://download.imagemagick.org/ImageMagick/download/ImageMagick.tar.gz
tar xzf ImageMagick.tar.gz
cd ImageMagick-*
./configure \
  --with-icu \
  CPPFLAGS="-I/usr/local/opt/icu4c@78/include" \
  LDFLAGS="-L/usr/local/opt/icu4c@78/lib"
  
make -j4
sudo make install    

I mean, it works:

You can see the ghastly software compilation in the background, resulting in Giocoso in the foreground having no problem displaying album art… but it's a heck of a way to get to the desired destination!

  • articles/macostweaks.txt
  • Last modified: 2025/12/02 15:48
  • by hjr