Linux has packages.
Depending on your distro, these may be called different things; debs, rpms, etc., but they all are basically the same idea. Each distro compiles and distributes the applications that run on it, this ensures they work and are easily available.
More recently, things have started to change, while core system packages remain in the traditional packaging formats, desktop applications have started to use different packaging formats that are distro independent.
The problem with classical package formats is two fold; there is a central group (the distro) that controls them, and they are distro dependant (and even version of the distro dependant).
So if I want to create a desktop application for Linux, and distribute it across multiple distros, that would mean I’d have to package it multiple times, across multiple distros. That’s a lot of extra work for the application developer and no one is going to package for every distro (there are hundreds of them).
As such, three distro independent packaging formats have come into the fore:
Each has it’s pro’s and con’s, so let’s talk about them a bit.
AppImages are self contained packages that run on any distro, and have no central store (ok, there is appimagehub, but it looks unprofessinal and is not what I’d expect for the default store). This makes them appealing but does create a few issues.
The two that stand out are:
Shell integration is a big deal for most users, if the application doesn’t appear on their application list, or can’t be easily managed, they’re not going to have a good time with them. There is a shell service to do that integration for you, but none of the major distros seem to ship with it installed by default.
Technically, AppImages do support auto updating, but it’s a relatively recent addition and it’s not mandatory. That’s a problem, or two.
Mobile phones, for better or worse, have made it a base assumption for most people that they don’t have to worry about updating theirs apps, that it will just happen in the background. AppImages break that expectation and it gets worse.
Even if you want to manually update the apps, the default behaviour of most browsers when downloading files, is to append a number if the file already exists, this can cause your shell integration to spawn numbered “versions” of the AppImage on your application menu.
I have used AppImages in the past, and they work fine, but they just feel like an afterthought, so I’ve removed the last of my AppImages from my system.
Flatpaks are self contained packages that run on any distro, and have a central store (Flathub).
Flatpaks look to be winning the application packaging war overall, Fluthub is professional and well run, with funding and a roadmap to support purchasing software in the future.
Virtually all of my apps are Flatpaks at this point. There are a few that aren’t, mostly as they don’t support Flatpak yet.
But not is all rainbows and sunshine with Flatpak’s. There are a couple issues:
One of Flatpaks security measures is sandboxing the application from the rest of the system, this is a good idea in theory, but sometimes can trip things up. For example, I have a Flatpak music player, and by default it only has access to my “Music” folder on my system. Well, that’s ok, but I have music in other places… so….
The solution is to edit the permission of the sandbox manually, using Flatseal, which is fine for me, a technical user. However, a run of the mill users would never figure out what was going on.
The other big issue (and this is improving) is that there are a lot of Flatpaks that aren’t created by the application developer. That adds another layer of required trust into the equation, and depending on how you feel about that, may be a deal breaker for unofficial Flatpaks.
Canonical, the company behind Ubuntu, created Snaps for their enterprise server distro, as a way to easily deploy server software like SQL servers and web servers. They are self contained packages with a centeral store (snapcraft).
There has been a lot written about he issues with Snaps, mostly around performance as a desktop packaging format, and I won’t go over that here. In the end, I don’t see that as a big deal, if an application takes 3 seconds or 5 to start up, most people start their apps once and leave them running.
There are other issues with them though:
Much like Flatpaks, Snaps are sandboxed, causing issues with permissions sometimes. Right now Steam is having issues with it’s Snap. So while Flatpaks have Flatseal, you’re at the mercy of Canonical if you have the same kind of issue with a Snap.
The biggest is the central control over the standard and platform. Yes Flatpaks have a central store, but there is a built in way to add additional stores and you can run your own if you want. Canonical has been very tight fisted over the Snap system, and practically speaking, that means only Ubuntu based distros (and not even all of them) have embraced it.
Another issue I have with them, is that the last time I tried to use one, Canonical required me to have a login, even to download free apps .
I will say that Snaps do have one benefit that neither AppImages or Flatpaks have, you can install non-graphical applications with them. That’s because that is what they were designed for.
That strength though is the cause of many of their weaknesses, what did it matter how quickly a snap started up when it was only ever starting when the system rebooted? A couple of extra seconds on a server that takes minutes to start up anyway is no big deal. Require a login? No problem for your corporate customers that have support contracts with you anyway.
Overall, for me, the way to go is Flatpaks. They have broad support across many distros (Ubuntu excluded of course) by default and they’re gaining popularity rapidly.
They aren’t perfect, but far better than relying on your disto to eventually package the latest version of LibreOffice for you… assuming they get around to it or don’t require you to update to a newer release to get it.
]]>That’s been taken care of (mostly), so it was time to do an upgrade.
The upgrade went smoothly, with one exception, for some reason Fedora claimed one of my applications was incompatible, however it clearly wasn’t, and it worked fine after the upgrade
So I have used a few applications that were AppImage based since I moved to Fedora, mostly these were the Nextcloud desktop client and a couple of other small apps. As part of the upgrade I decided to review them and see if I still needed them or if there were Flatpaks available.
First up was Nextcloud, but this actually happened a few weeks ago when the AppImage broke due to a Fedora upgrade that removed a library that was required. I had originally used the Flatpak version of Nextcloud but ran in to some issues, and as the AppImage is the official version, I had moved over to it.
I moved back to the Flatpak when the breakage occurred and haven’t had any issues with it since so I’ll be sticking with it for now.
One of the other apps I still had as an AppImage was something I was just testing, and in fact when I looked at the applications homepage, found it was no longer supported, so that one was just deleted.
And the final app had an official Flatpak now so moving it over was easy.
Files (aka Nautilus) now supports Nextcloud integration, displaying sync status for files and shortcuts in the left hand directory list or it.
Personally I don’t like this, but I understand that it may be useful for many, especially when Gnome, by default, hides the Nextcloud tray icon. However since I re-enable this functionality, I don’t need to see little green dots all over my file explorer.
Likewise there is something funky about the implementation as I get two “Nextcloud” shortcuts for no apparent reason.
As such, I decided to remove this. The downside to removing it is that you have to remove it for all users, so if you share your computer, everyone will lose this functionality. The command to remove it is:
sudo dnf remove nextcloud-client
One item I was having issues with in Fedora 38 was the “Gtk4 Desktop Icons NG (DING)” extension, for some reason it was left justifying multi line icon names. It wasn’t a big deal, but just weird and I couldn’t find any solution. However after upgrading to F39, all seems fine now.
“Rounded Window Corners” hasn’t been upgraded to support Gnome 45 yet, and it doesn’t look like much work is underway, but it’s not a big deal, just visual candy, so I’m living without it for the time being.
The last extension that hasn’t been officially upgraded is “Date Menu Formatter”, they have a working version but the review process is still underway. So after upgrading it was disabled, however I just downloaded the version from their GitHub repo and installed it, which seems to be working fine.
There are a lot of little things between F38 and F39, but nothing so major to change the fundamentals of the OS, which is exactly how it should be.
The upgrade was smooth for the most part and the fact that Fedora keeps up to date with Gnome is a huge plus as far as I’m concerned.
I would recommend the upgrade at this point, most extensions have been upgraded that are going to be, so there is no reason not to.
]]>Google Apps is still banned from my device, and I’m not using MicroG.
Yes, there are a few apps that fail to run, a few that I’ve submitted tickets for, a few that have been fixed, and a few that have broken.
Overall, there hasn’t been a deal breaker to make me want to go back to a GAPPS based phone again.
I use F-Droid as much as possible to get any of the apps I need, along with IzzyOnAdroid‘s repo.
For a few apps that I can, I use Obtainium, which downloads APKs right from GitHub and other code repositories.
Finally, while the Yalp Store is long dead, Aurora Store has replaced it.
Trebuchet does everything I need, so no change there.
AnySoft Keyboard is still my go to keyboard. Nuff said.
I’ve also installed NextCloud and the related apps.
]]>Between ZorinOS and Fedora, I was on Ubuntu for a significant amount of time, however their move to Snaps and outright hostility to Flatpak, as well as always being behind Gnome, moved me away from it.
As such, Fedora has pretty much the best Gnome distro around these days. Updated regularly, in step with Gnome, and nothing weird or strange about it.
I’m running Fedora on a StarBook VI (AMD), with 64g of RAM and 1TB of storage.
This works well, but I do find Gnome to be a dichotomy of sorts.
One one hand, it has a well thought out and designed GUI, on the other it has a frustratingly bad workflow.
We’ve had 30 years of GUI design and there’s a pretty good reason we’ve come down to a taskbar/start menu paradigm as being the default for PC’s.
I could use KDE or another Desktop Environment (DE) but they just don’t have as good of GUI as Gnome, or the robustness of their application ecosystem.
As such, it’s down to extensions to save the day!
An easy way to create desktop app shortcut in gnome
https://github.com/Tommimon/add-to-desktop
One of Gnome’s cardinal sins in my opinion is the removal of desktop icons, add them back is another extensions job, but Add to Desktop brings back a useful feature in a right click menu item in the applications launcher to quickly add an application to the desktop.
Application menu for GNOME Shell
https://gitlab.com/arcmenu/ArcMenu
ArcMenu is a highly configurable menu extension that can mimic just about any start menu you can imagine.
Control the Blur Effect On Lock Screen.
https://github.com/PRATAP-KUMAR/control-blur-effect-on-lock-screen
Control Blur Effect On Lock Screen does what it says on the tin. I hate blur effects, if I wanted my screen to look like I’d smeared Vaseline all over it… well, I’d shut it off honestly.
An icon taskbar for the Gnome Shell.
https://github.com/home-sweet-gnome/dash-to-panel
Dash to Panel is of course the heart of fixing Gnome, giving a nice taskbar for ArcMenu to live in.
Allows customization of the date display in the panel.
https://github.com/marcinjakubowski/date-menu-formatter
Date Menu Formatter is a small extension that lets you configure the Gnome status bar clock. If there is one complaint often levelled at Gnome, its that there are too few configuration options, and the clock is a prime example of that.
With the clock now located in the panel at the bottom, the single line clock wastes a lot of space, so I use this extension to split it in two and customize the clock’s display to include seconds as well as the day of the week.
Emoji copy is a versatile extension designed to simplify emoji selection and clipboard management.
https://github.com/felipeftn/emoji-copy
What did we do before emoji were everywhere? I don’t know, but I wouldn’t live without Emoji Copy on my desktop these days. It provides a nice simple tray icon that lets you select emoji to use.
Yes Gnome does have a built in emoji selector, but it doesn’t work half the time, so this is makes sure I always have access to all the emoji I could ever want.
Adds Gtk4 icons to the Gnome desktop.
https://gitlab.com/smedius/desktop-icons-ng
Gtk4 Desktop Icons NG brings back your desktop icons… imagine that!
This is the third desktop icons extension for gnome, with the first being forked as Desktop Icons NG, then the fork being forked to update it to GTK4.
GSConnect is a complete implementation of KDE Connect especially for GNOME Shell with Nautilus, Chrome and Firefox integration.
https://github.com/GSConnect/gnome-shell-extension-gsconnect/wiki
GSConnect is the Gnome shell implementation of KDE Connect and if you have an Android phone, you probably want access to it through your desktop.
Filter out notifications by their text content to block them from appearing.
https://github.com/spybug/NotifyFilter-GnomeExtension
Notification Filter is a relative recent addition to my extensions, this let’s you filter out notification messages based upon the text they contain. I used to use Window Is Ready – Notification Remover to dump that annoying notification, but now I can get rid of a whole bunch more too!
Add rounded corners for all windows
https://github.com/yilozt/rounded-window-corners
Rounded Window Corners is purely visual eye candy, but it’s nice eye candy
Tray Icons Reloaded is a GNOME Shell extension which bring back Tray Icons to top panel, with additional features.
https://github.com/MartinPL/Tray-Icons-Reloaded
Tray Icons: Reloaded is another one of those essential extensions where you really have to question what’s going through the heads of the Gnome developers. They continue to deprecate the tray far faster than they come up with a replacement, and the replacement doesn’t do half of what the tray did in the first place.
Load shell themes from user directory.
https://gitlab.gnome.org/GNOME/gnome-shell-extensions
User Themes is mostly just convenience, I could just add my user themes to the system folders, but why should I?
There are lots of applications I use on my desktop, so I’m not going through all of the, but here are a couple I think you might find interesting.
Simple application for generating Two-Factor Authentication Codes.
https://gitlab.gnome.org/World/Authenticator
Authenticator is a nice two factor authentication application for Gnome. It lets you import for several popular authenticator apps so you don’t have to recreate all your TFAs from scratch.
Birdtray is a system tray new mail notification for Thunderbird, which does not require extensions
https://github.com/gyunaev/birdtray/
Birdtray works with Thunderbird to give you a tray icon for new mail notification.
Fast, Private & Safe Web Browser
https://www.mozilla.org/firefox/
Does Firefox really need any introduction?
Gradience is a tool for customizing Libadwaita applications and the adw-gtk3 theme.
https://github.com/GradienceTeam/Gradience
Gradience brings themeing to libAdwiata, as simple as that. I personally think that the default Gnome looks is quite nice, but it feels a bit washed out, too much grey. Gradience let’s me add a bit of colour to the header bars and title bars to give Adwiata a little bit of pop.
KeePassXC is an application for people with extremely high demands on secure personal data management.
https://keepassxc.org
Password management is critical in this day and age, and KeePassXC is a great KeePass compatible password safe that lets me keep all my passwords safe and stored in my own cloud server.
LibreOffice is a powerful office suite.
https://www.libreoffice.org/discover/libreoffice/
LibreOffice, another no-brainer
NewsFlash is a program designed to complement an already existing web-based RSS reader account.
https://gitlab.com/news-flash/news_flash_gtk
NewsFlash hooks into my NextCloud News server perfectly.
Create notebooks, take notes in markdown
https://gitlab.com/posidon_software/paper
Unfortunately Paper is no longer being actively maintained, but it still works and is a great note taking app that I can sync up with NextCloud easily.
Pinta is a image editing, drawing and painting application with a simple yet powerful interface.
https://www.pinta-project.com
Yes I have GIMP as well, but Pinta is a quick and easy image editor when you just don’t need the power of GIMP.
Millions of people use Signal every day for free and instantaneous communication anywhere in the world.
https://signal.org
I use Signal on my phone, I better have it on my desktop too
Thunderbird is a free and open source email, newsfeed, chat, and calendaring client, that’s easy to set up and customize.
https://www.thunderbird.net/
Thunderbird is my go to mail/calendar/contacts client, see my recent post on Thunderbird Supernova.
Explore the federated social web with Tuba for GNOME.
https://tuba.geopjr.dev/
While I don’t love Tuba, it is by far the best Fediverse client for Gnome so far.
ungoogled-chromium is Google Chromium, sans dependency on Google web services.
https://github.com/ungoogled-software/ungoogled-chromium
You can never have too many web browsers, and ungoogled-chromium is a good because it stays pretty true to Chromium/Chrome without all the spying.
Vivaldi is a feature-packed web browser for techies and people who need a browser that helps them get things done.
https://vivaldi.com/
Did I mention you can never have too many web browsers? Vivaldi is my main browser and while I’m technically still using the RPM version of it, the flatpak is now available and I’ll switch over to it eventually.
VSCodium combines the simplicity of a code editor with what developers need for the core edit-build-debug cycle.
https://vscodium.com/
Back in my windows days, I used Notepad++, and I still have a softspot for it but it just feels wrong to use it on my Linux desktop, so I moved to Sublime, which was great. However three things made me switch; it’s not open source, it has no flatpak for version 4, and it had a hefty upgrade fee to go from version 3 to 4.
All those things combined made me take a serious look at VSCode, and then finally at VSCodium. And while I do hate the VSCodium icon (seriously, what were they thinking?) I can’t argue that it’s an impressive editor.
Overall my desktop is in a pretty stable state, I’ll upgrade to Fedora 39 when the rest of the extensions get upgrade to support it (gnome 45 broke extensions… again ).
I have been looking at some of the immutable distos, like VanillaOS but they seem a little immature at this point.
]]>The Supernova release came out a while ago and so I think it’s time to update my Thunderbird configuration post from a few years ago.
First things first, since my last post, flatpaks have become a thing… a big thing for me at least. I attempt to install the flatpak version of any software I can.
This is for a couple of reasons, the first being that most distro’s are pretty far behind the actual latest release for any given piece of software. Flatpaks fix this problem by always having the latest version available and working across any distribution you are using.
So once you install TB and setup an account, this is what you get:
Which is… fine, but not really all that great, so let’s do some basic changes to get something a little nicer.
As much as I generally like the look of Adwiata on Gnome, the lack of a highlight colour really makes the default colour scheme look washed out to me.
Gradience comes to the rescue here and lets you add some colour to hightlight the theme a bit.
Once you install Gradience, follow the setup tutorial, and make sure to install the GTK3 Adwiata theme as well. You’ll need to activate it in Gnome Tweaks after installing it as the legeacy theme.
Once that is done you can make a couple simple changes to the Adwiata theme in Gradience:
Once done, logout and back in to apply the changes properly.
The Spaces toolbar on the left isn’t too bad, but it looks a little out of place, so let’s customize it a bit:
Let’s make a few minor changes to the message list as well:
So I don’t use Thunderbird as a chat client, and having the chat icon on the Spaces toolbar is kinda annoying, so let’s remove it and disable chat entirely:
Ok, that’s got the main window looking pretty good, let’s do some changes to the mail window. At the moment it should be looking something like this:
Let’s get it matching the main window a little better:
Ok, so that’s all we can do with the built-in settings, so now it’s time to add some features through extensions. We’re going to be installing and using four extensions:
The first three require no configuration, so they’re pretty much install and use, the last does require some additional config.
No tabs is my favourite new extension for Thunderbird, basically when Thunderbird opens what would be a new tab, it closes the previous tab so that your Thunderbird interface never shows the tab bar.
Ok, so now we can go back over to the message window customize the Message Header Toolbar:
One of the issues with Thunderbird on Linux has always been the lack of a notification tray icon, Birdtray fixes that issue and is a flatpak to boot.
It has lots of configuration items on how to do the notifications, so customize it to your hearts content.
Ok, we now have a main window that looks like this:
And a message window that looks like this:
Overall not too bad, but there are a few things that could be better.
Supernova is a big step forward for Thunderbird, and I’ve been quite happy with it overall. There are, as noted above, a few things that could still be improved, and hopefully they will be in future releases.
If you’re looking for a mail client, I’d highly recommend it.
]]>For those that don’t know, the WordPress plug-in directory is still using SVN (Subversion) for submitting plug-ins. Back 2012 when I first submitted a plugin, this was perfectly fine. SVN will still very popular, SourceForge was the king of open source software version control repositories, and life was good.
Fast forward to 2023, and well, that’s not so much the case anymore.
GitHub has become a huge repository of open source source code and has featured that SourceForge could never dream of.
While there has been some consternation around Microsoft’s purchase of GitHub, that doesn’t seem to have had a major impact so far.
So what’s the best way to use GitHub if you’re doing plugin development?
Well, GitHub Actions are going to be your best friend.
I won’t cover the basics of using Git here, you’re probably well familiar with it if you’re reading this post. But there are two issues that GitHub Actions can help you solve when hosting your plug-in on GitHub:
WordPress.org and GitHub use two different standards for their readme files, and while GitHub will display a readme.txt file, it will look very ugly. To fix this, you need to create and maintain a readme.md version of your readme.txt file, but that’s a manual task, unless you use GitHub Actions and a bit of grunt magic.
The first thing you’re going to want to do is make sure npm is installed, your distro should have it in the default software repositories:
npm --version
If you get an error, go figure out how to fix it.
Now you want to create a file called “package.json” in the root of your plugin git repo, add the following content to it:
{
"devDependencies": {
"grunt": "~1.5.3",
"grunt-contrib-jshint": "~3.2.0",
"grunt-contrib-nodeunit": "~4.0.0",
"grunt-contrib-uglify": "~5.2.2",
"grunt-wp-readme-to-markdown": "^2.1.0"
}
}
This tells npm that you want to install some packages here, the important one is grunt-wp-readme-to-markdown which will create a markdown version of your readme.txt file.
Now create a “Gruntfile.js” in the same directory:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
wp_readme_to_markdown: {
convert: {
files: {
'readme.md': 'readme.txt'
},
options: {
screenshot_url: 'assets/{screenshot}.png'
},
},
},
})
grunt.loadNpmTasks('grunt-wp-readme-to-markdown');
grunt.registerTask('default', ['wp_readme_to_markdown']);
};
This file tells grunt what to do, in this case, run the readme converter. Note the options line, if your screenshots are somewhere other in an “assets” folder in the root of your git repo, you can change this line to point to the right location. See the grunt-wp-readme-to-markdown for details.
One last file to create here, if you don’t already have one, is “.gitignore”, add the following lines to it:
node_modules/
package-lock.json
Ok, now it’s time to try converting your readme.txt to readme.md:
npm i
grunt
The first line tells npm to install the modules you included in package.json, this might take a few minutes depending upon your connection. The second tells grunt to run the default action.
You should see output something like this:
added 245 packages, and audited 430 packages in 24s npm -i 3 packages are looking for funding run `npm fund` for details 51 vulnerabilities (5 low, 15 moderate, 20 high, 11 critical) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. grunt Running "wp_readme_to_markdown:convert" (wp_readme_to_markdown) task File "readme.md" created. Done, without errors.
You may see additional warnings based upon your distro, but as long as it doesn’t generate an error you should be fine.
You should now have a nicely formated MarkDown version of your readme.txt.
This is good, but it kinda sucks having to generate and commit it each time you update your readme… so this is where GitHub Actions come in to play.
Now create a directory called “.github/workflows” in the root of your repository. Then create a new file there called “readme-md-generator.yml” with the following content:
name: Generate readme.md from readme.txt
on:
push:
branches: [ "main", "master" ]
paths: [ "readme.txt" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Build
run: |
npm install
grunt
git config --global user.name '${{secrets.GIT_USERNAME}}'
git config --global user.email '${{secrets.GIT_EMAIL}}'
git commit -am "Regenerate readme.md"
git push
This action will regenerate your readme.md file every time readme.txt is committed to the main/master branch of your plugin, and then commit it back to your repo.
Before you can run this action though, you need to create two secrets in your repository:
Go over to your GitHub repo settings and find Secrets->Actions to set these two values up. Make sure to do this before committing the rest of the changes to your repo, otherwise the GitHub Action will fail the first time it is run.
Now you can commit all of the above changes to your repo. If you want to recover some local space, you can remove the “package-lock.json” file as well as the “node_modules” if you don’t want to manually generate the readme.md file in the future.
Once commited, the readme.md file should be generated every time you make a change to the readme.txt file on GitHub.
Note: if you do not commit a readme.md file (with or without content) the Action will not work as it expects a readme.md file to already exist in the repo. Simply create an empty one and commit it to the repo.
Once you have readme file auto generating, the next big issue is deploying to wordpress.org. Fortunately 10up has created a GitHub Action to do this for you.
Your first step is to create two additional secrets for your repo:
SVN_USERNAME
: Your SVN username on wordpress.orgSVN_PASSWORD
: your SVN password on wordpress.org.Now you can create another Action in your repo under “.github/workflows” called “wordpress-plugin-deploy.yml”:
name: Deploy to WordPress.org
on:
release:
types: [published]
jobs:
tag:
name: New release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: WordPress Plugin Deploy
id: deploy
uses: 10up/action-wordpress-plugin-deploy@stable
with:
generate-zip: true
env:
SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
- name: Upload release asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ASSETS_DIR: assets
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ steps.deploy.outputs.zip-path }}
asset_name: ${{ github.event.repository.name }}.zip
asset_content_type: application/zip
This action will deploy a new version of your plugin to wordpress.org every time you create a release on GitHub. It will also generate a zip file an attach it to the GitHub release for you.
Of note here is the “ASSETS_DIR” variable, just like with the screenshots on the readme.md generator, this is the location of your wordpress.org assets. If they are somehwere else, set this variable to that directory.
You can also setup this Action to fire when you tag your code instead of release it, you can see more details over on the WordPress Plugin Deploy page.
And that’s it!
You now have an automated way to generate readme.md for GitHub and automated deployment to wordpress.org for your plugins.
There are a few other things that could be automated with GitHub Actions:
While the above fixes are appreciated, there is still a lot of work needed to make Gutenberg a good writing experience, even if it has improved as an editing experience.
In my conclusions in my original post I said:
In fact, I’ve written this article in the classic editor and even with it being complex and long, it was much less frustrating than the last thing I tried to write in Gutenberg.
Which I still find true, if I have any significant content to create, I write it in something else and then past it into Gutenberg.
]]>A bit of background on how I was using it first:
The following list is in no particular order, other than similar items are grouped together.
I really can’t express how much this bugs me in WordPress in general, and Gutenberg has continued on in the same tradition. Links and buttons should be distinguishable by looking at them.
These two aren’t the only offenders, but they stick out like sore thumbs to me.
This is the standard Gutenberg toolbar:
Take a look at that, four different kinds of buttons all in a single toolbar, side by side:
Pick a style and stick with it!
As far as I can tell, your Gutenberg settings are stored in a cookie in your browser instead of in the WordPress database. This means that if you go to a new browser/PC or clear your cookies often, you lose your preferences.
Settings should be stored more persistently than that.
Gutenberg has an entire accordion section reserved for “Revisions” that doesn’t act like an accordion block. This use to be in the “Publish” widget, which is now the “Status & visibility” accordion, why isn’t it there in Gutenberg?
Are revisions that critical that it needs to be at a top level element instead of part of another one?
Many of keyboard shortcuts in Gutenberg are cumbersome, want full screen mode? Ctl+Shift+Alt+F… what?
I get it, lots of single combos are taken up by the browser (Ctl-F is find, Alt-F brings up the browser menu, etc.) but really? Four a finger salute?
And full screen mode is not the only offender either, there’s a mix of three and four finger shortcuts for little reason. Standardize on three and work it out already.
The floating block toolbar often gets in the way of adding new blocks between existing blocks. For example:
You can add a bock below the current block, but if you try and hover between the current block and the one above it to reveal the add block button, it doesn’t work.
Wouldn’t the default position of the toolbar be better if it was vertical instead of horizontal and was attached to one of the sides of the block instead of the top of it?
Ctrl-Home/End should take you to the top/bottom of the post but instead just take you to the end of the block while shifting the viewport (kinda like having scroll lock on).
This bugged me in the classic editor too, but it’s worse now only because there was a complete rewrite and nothing changed. Categories and Tags are very similar, but have different UI’s in the editor. Categories are checkboxes and tags are a “cloud”. But you create and mange categories and tags through the admin in exactly the same way.
Just like there is a unified backend management of categories/tags, there should be a unified interface to add them to a post.
Similarly, because the UI for adding tags doesn’t list out all the tags you can select, when you add a “new” tag to a post it is automatically added to the backend if it doesn’t exists already with no confirmation. This creates the situation where you may mistype a tag name (misspell it or something) and it is instantly added to your tag list.
There should be a confirmation when adding new tags or at least when you then remove the new tag from the tags UI in the post it should remove it from the backend as well.
So let me get this straight, you build a completely new UI from the ground up in React to edit posts, and you leave one dialog box in the default Javascript popup style?
This one is pet peeve, if your theme supports featured images, wouldn’t it make sense to set the first image you add to a post to be that featured image? Or a least a popup to ask if you want to?
This is a bit of a fake complaint, there is drag and drop for rearranging blocks… as long as you don’t dock the toolbar to the top of the page. You should be able to select any border of a block and drag and drop it instead of just a single (non-intuitive) control handle inside the block toolbar.
This is a staple of pretty much every WYSIWYG editor on the planet.
This is a staple of pretty much every WYSIWYG editor on the planet.
The shortcode block is a shell of a block. Do I need to add the []’s in? What shortcodes are available? How about a preview?
Some of these are technically challenging, preview the most obvious. May shortcodes do not generate valid HTML blocks as they expect to have other shortcodes to complete an HTML block, so those would break Gutenberg.
But that doesn’t mean you couldn’t do something, like add a block setting for it with a dropdown of all the registered shortcodes at least.
The “Details” button (which is an I with a circle around it for some reason…) hides the statistics like word count and block count, making a user have to click to get to them. Where as, by default, there is a big long breadcrumb section at the bottom of the Gutrenberg frame that could contain some of these details for quick “glance” style access to the information.
What date/time do you think you would see if you click a link titled “Immediately”? Perhaps the current time and date?
Well in Gutenberg you’d be wrong. For some reason Gutenberg believes that the post creation date/time is a better thing to display than the current date/time. This is counter intuitive, especially as if you then hit “Reset” in the calendar control it will use the current date/time if you click on “Immediately” again.
This is tied in to the previous issue, because the creation date is used, if you go to publish a post and update, say the month, but don’t notice that the year is wrong guess what’s about to happen.
This happened several times as I’d started drafts in late 2020, but didn’t schedule their publish date/time until early 2021.
There are times when you want to publish a post in the past, but it seems very rare to me. Having a simple check on the publish date/time and making sure it’s in the present/future seems like a logical thing to do. If it’s in the past, popup a warning/confirmation dialog just to be sure. There could be a “don’t ask me again” checkbox included to ensure it doesn’t become burdensome to those that actually do post things in the past on a regular basis.
And speaking of the calendar control… there are a pile of issues with it:
When adding a new block, a list of commonly/recently used blocks is displayed, but the algorithm behind it seems kinda braindead. Blocks I use often don’t appear, or do appear for a short while and then fall off the list again. Blocks I’ve never used seem to hang around or come back randomly.
Overall, there are still a lot of ruff edges in Gutenberg, and with the focus on full site editing, it doesn’t look like a lot of polish is being done to it as a post editor. There is some progress happening though, for example the closing of the calendar control when clicking on a date has been fixed in development, so it should show up in WordPress 5.8.
In the end though I’m not convinced that Gutenberg produces a particularly good writing experience, and that what post editing is supposed to be about.
In fact, I’ve written this article in the classic editor and even with it being complex and long, it was much less frustrating than the last thing I tried to write in Gutenberg.
I think that sums it up pretty well really.
]]>The obvious choice is Thunderbird, its cross-platform and is mature, supporting everything I need, including contacts and calendar from NextCloud.
Unfortunately, the default configuration of Thunderbird on Linux looks a little… well.. terrible to be honest:
This might have been acceptable 10 years ago, but in comparison to a modern version of Outlook, it’s hard to take that big of step backwards.
But what if it could look like this instead:
Well that looks a little better doesn’t it?
To accomplish this there are several steps/requirements:
So here’s each step broken down.
Note: This guide is for Linux, but all of the below customizations should work on Windows as well, but I haven’t tested them so try at your own risk.
I’m not going to go in to any detail on this, your distro will probably already have a package all ready for you, so either go to your software store or command line and download it.
If you’re not sure which version is installed, just go to the Thunderbird Menu -> Help -> About dialog and it will be there for you.
One of the most annoying things about Thunderbird and Firefox is that on Linux, by default, they don’t use client side decorations (the min/max/close buttons) and therefore require the application title bar to be present, wasting screen real estate.
For Firefox, there’s a simple check mark in the customization screen to either enable or disable the title bar, but Thunderbird for some reason decided not to add that. It still has the functionality, just not the UI to make it easy to enable.
So, as per this helpful article, do the following:
This is a little tricky, because if you’ve ever added a theme before, we’re not going to do it that way.
Instead, what we’re really going to do is add an extension:
When Thunderbird restarts it will be using the selected theme, and if you go to the add-ons page you’ll notice that there is no extension that matches the new theme, but instead it is listed under Themes.
This is probably the easiest part of this change, but the most tedious as well, all of the below are optional and you may select which ones you want to add, step one is to open the customizer by right clicking on the toolbar and select Customize, then:
Once that is done, at the bottom of the customizer window should be a “Show:” combo box, select “Icons and Text” and then close the customizer.
Now, go and open and e-mail and repeat pretty much all of the above and remove the duplice buttons below the message toolbar as well
In addition to the above, there are a few other extensions you may want to use:
There are a few other settings you might consider:
After you finish with the above, you’ll have a much better Thunderbird experience than you get out of the box, but it’s not perfect:
And that’s it… happy Thunderbirding!
]]>
When I first used Lineage I installed a minimal set of Google apps, but having just installed Lineage 15.1 on a new phone I’ve decided against install GAPPS. This has come with a few drawbacks, apps that either warn you that they don’t run without GAPPS (but often still work anyway) to a few (like KAYAK) that just crash after loading.
It seems like a reasonable trade-off though as almost all of the apps I’ve found that don’t work have websites that do.
Initially I used F-Droid and 1Mobile for my app stores, but I’ve moved away from 1Mobile. I found too many issue with it.
To replace it, I’m using Yalp Store, which pulls apks straight from Google Play (obviously only free apps).
Trebuchet has come a long way with Lineage 15.1 and while previously I had installed Nova launcher, I’ve decided to give Trebuchet a try for a while.
AnySoft Keyboard is still my go to keyboard Nuf said.
I’ve also installed NextCloud and the related apps.
]]>