Category: Blog

Snap apps with Wayland and Zsh

There’s are two longstanding issues using snap apps in Ubuntu. Two issues that still exist in Ubuntu 20.04 beta.

  • Snap apps don’t show up in Gnome’s Activities view when using Wayland instead of Xorg.
  • Snap apps cannot be started from the command-line when using zsh instead of bash.

Looking into this, I ran into numerous discussions on both topics. Most notably:

ZSH

The zsh work-around mentioned in these and other discussions works very well. Just add the following line to your .zshrc. (Adding it to /etc/zsh/zshrc should work as well.)

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'

When using bash the scripts in /etc/profile.d/ are sourced automatically. Zsh does not bother with them, unless we instruct it to.

Wayland

Unfortunately the work-arounds for Wayland did not work for me. They failed to convince Wayland and Gnome to look in snap’s applications folder.

The following line links snap’s applications folder into the Ubuntu’s main applications folder.

sudo ln -s /var/lib/snapd/desktop/applications/ /usr/share/applications/snap

Unlike all the other work-arounds out there, there’s no need to logout and log back in. This works instantly.

Cleaner Theme

Changed to a nice clean WordPress theme that uses Tailwind CSS. Based on the wp-tailwind starter theme by freeshifter. (Thank you!)

Will share my changes on Github shortly.

Pretty Code

Tried a number of WordPress plugins while looking for a syntax highlighter that supports the regular Gutenberg code block and does not come with a ton of unnecessary bloat.

I think I found it. You’re looking at Code Syntax Block by¬†Marcus Kazmierczak. What do you think?

/**
 * Retrieves the cron lock.
 *
 * Returns the uncached `doing_cron` transient.
 *
 * @ignore
 * @since 3.3.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @return string|false Value of the `doing_cron` transient, 0|false otherwise.
 */
function _get_cron_lock() {
        global $wpdb;

        $value = 0;
        if ( wp_using_ext_object_cache() ) {
                /*
                 * Skip local cache and force re-fetch of doing_cron transient
                 * in case another process updated the cache.
                 */
                $value = wp_cache_get( 'doing_cron', 'transient', true );
        } else {
                $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", '_transient_doing_cron' ) );
                if ( is_object( $row ) ) {
                        $value = $row->option_value;
                }
        }

        return $value;
}

First Post!

First post on the new peen.dev domain. I’m expecting many more to follow.