Liferea

Liferea 1.10 and Firefox 34 as External Browser

Today I learned that newest Firefox release 34 drops some Mozilla legacy command line options that Liferea used for a long time to open links in a Firefox tab or window.

When you upgrade to Firefox 34 opening links might suddenly stop to work, because Liferea uses the wrong launch command.

Workarounds

Here are 2 simple workaround alternatives. For both you need to open the "Browser" tab in the preferences dialog (via menu /Tools/Preferences):

  1. Either simply choose "GNOME Default Browser".
  2. Or choose "Manual" and set command to
    firefox %s

Screenshot of the browser settings tab:

Liferea 1.10.14 Released

There is a new maintenance release for the 1.10 line. It tries to fix startup crashes reported by several users and fixes a bug with launching links in the external browser. Please upgrade!

ChangeLog

    * Fixes Github #134: Broken default news feed.
      (reported by pvdl)
    * Fixes Github #133: Subscribe into TheOldReader categories
    * Fixes Github #122: Crashes at launch, "segmentation fault"
      (reported by geoffm)
    * Fixes some memory leaks
      (patch by Rich Coe)
    * Fixes Github #145: Incorrect method triggered for 'Launch External'
      (patch by mozbugbox)
    * Fixes Github #48: Window stays hidden on next start after Ctrl+W
      (reported by Jeff Fortin)
    * Expose LifereaHtmlView to GObject Introspection
      (patch by mozbugbox)
    * Improves Google Reader API error handling
    * Now using HTTPS only when accessing TheOldReader
    * Added LifereaNodeSourceActivatable interface to allow plugins
      implementing new node source types.
    * Downgrade enclosure drop warning from Glib warning to debug trace.

Download

You can download the release on Github:
https://github.com/lwindolf/liferea/releases/tag/v1.10.14

Liferea Trick #9: Skimming Trough the Headlines

I'm not sure about how many users are aware of the feature, but I'm certain it is worth to know about as it saves a lot of clicking and pointing with the mouse. If you are a keyboard user it's worth knowing about the hotkey to skim through headlines.

Remember the Hot Key

As this hotkey is configurable check the preference dialog ff you are not sure about the setting. The default setting is <Ctrl>-Space...

How it Works...

By using this hot key you can navigate the article pane and the item list view at the same time. As long as the article pane allow vertical scrolling it scrolls down. Once you reach bottom Liferea jumps to the next unread article.

Using the headline skimming hotkey is like a "Next Unread And Scroll Down" menu option...


Recent Liferea Tricks

Help Needed: High Contrast Icon

Today Obsidien created ticket #148 about support for the GNOME high contrast icon theme.

Icons in this theme look like this:


(screenshot taken from GNOME Wiki)

As I'm not an artist in any way I want to ask you readers for your help! So if you are a graphics artist and have some spare time why not gift an high contrast icon for Liferea! If you are interested leave a note in the ticket.

Liferea 1.11.3 Released

There is a new release for the unstable line: Liferea 1.11.3. This release fixes several issues and introduces an improvement of the rendering of the 3 pane "Wide View" mode to save screen space on 16x9 screens. This is intended to improve usability in full screen mode on desktops and tablets. This release also introduces folder (categories) support for TheOldReader subscriptions.

Here is a screenshot of the changed "Wide View" mode

Give 1.11.3 a try and send feedback to the mailing list [email protected]!

ChangeLog

    * Fixes Github #134: Broken default news feed.
      (reported by pvdl)
    * Fixes Github #133: Subscribe into TheOldReader categories
    * Fixes Github #122: Crashes at launch, "segmentation fault"
      (reported by geoffm)
    * Fixes some memory leaks
      (patch by Rich Coe)
    * Fixes Github #145: Incorrect method triggered for 'Launch External'
      (patch by mozbugbox)
    * Fixes Github #48: Window stays hidden on next start after Ctrl+W
      (reported by Jeff Fortin)
    * Expose LifereaHtmlView to GObject Introspection
      (patch by mozbugbox)
    * Improves Google Reader API error handling
    * Now using HTTPS only when accessing TheOldReader
    * Added LifereaNodeSourceActivatable interface to allow plugins
      implementing new node source types.
    * Downgrade enclosure drop warning from Glib warning to debug trace.

Download

You can download the release on Github:
https://github.com/lwindolf/liferea/releases/tag/v1.11.3

Liferea Trick #8: Change Menu Accelerators

When you are not satisfied with the menu key bindings defined by Liferea do not despair it is easy to change them!

Variant #1: Edit ~/.config/liferea/accels

This variant is 100% portable and should work for everyone. Open ~/.config/liferea/accels in your favourite editor. This file is loaded upon startup by Liferea and contains lines like these:

[...]
; (gtk_accel_path "<Actions>/AddActions/NewVFolder" "")
; (gtk_accel_path "<Actions>/GeneralActions/SearchMenu" "")
; (gtk_accel_path "<Actions>/ItemActions/ToggleItemFlag" "<Primary>t")
; (gtk_accel_path "<Actions>/GeneralActions/PrevReadItem" "<Primary><Shift>n")
[...]

Note how only the "ToggleItemFlag" and the "PrevReadItem" line have defined key bindings, while "NewVFolder" and "SearchMenu" don't.

To change a key binding first remove the semicolon at the start of the line and then adapt or clear the key binding field. Choose prefixes like "<Primary>" (for Ctrl), "<Alt>", "$lt;Shift> as needed and append the key after it.

Variant #2: Enable Editable Accelerators with your Linux Distro Settings

This variant is hard to document as different distributions have different setting dialogs. Some expose a setting to enable life editing of key bindings. Once this is enabled you can open a menu hover over a menu option and press the accelerator you want to assign. It should show up instantly.


Recent Liferea Tricks

Missing tray icon on Ubuntu-derived distributions

If you are a MATE desktop user using a Liferea 1.10.xx package installed from the official package repositories of your Linux distribution and since the switch from 1.8.xx the trayicon went missing then the reason is very probably that you are using a package build by Ubuntu for the Unity desktop that strips the trayicon support.

You can verify wether this is the case in the "Preferences" dialog which should look like this

If the trayicon option is not visible than the package doesn't support a trayicon.

This is known to be the case for at least Mint17.

Writing Liferea Plugins Tutorial (Part 1)

Some time ago a fellow Liferea user asked about documentation on writing Liferea plugins. I see the need and the benefit and want to start doing so with a series of blog posts that later can be compiled into a tutorial to be included on the website/sources.

Plugins with GObject Introspection

First it is important to know that Liferea 1.10+ uses GObject Introspection (GI) and libpeas to allow implementing plugins. This quote from the GNOME wiki explain how GI works:

GObject introspection is a middleware layer between C libraries (using GObject) and language bindings. The C library can be scanned at compile time and generate a metadata file, in addition to the actual native C library. Then at runtime, language bindings can read this metadata and automatically provide bindings to call into the C library.

The important point is: by Liferea using GI (as all GNOME applications and many other GTK applications do now) plugins can be written in practically any scripting language. Most users seem to favour Python and all current plugins included with the Liferea sources are in Python. Note that this tutorial will also focus on Python only.

How are plugins triggered from with Liferea?

Ok, I can write a script in Python! How will Liferea run it and when?

This is where libpeas comes in, which is a basic library to implement a plugin system. If you click the preferences dialog and switch to the "Plugins" button you see a dialog provided by the PeasGtkPluginsManager class of libpeas. Detection, activation and configuration of plugins is handled by libpeas.

Now for the "When?" question: To properly allow applications to hook plugins into different parts of the applications libpeas allow an application to define one or more so called "Activatable" interfaces.

For simplicity for Liferea I decided to only support a LifereaShellActivatable interface. This means all plugins are activated together with the LifereaShell instance (src/ui/liferea_shell.c). This class represents the main application window holding all widgets. So when your plugin gets activated all widgets exist and you can access everything like extending or modifying the GUI, changing settings, everything you can think of.

Note: in the code there are two more interfaces:

  • LifereaAuthActivatable
  • LifereaMediaPlayerActivatable

that are used to implement two important features (GNOME keyring support and a simple media player). Feel free to use those two, but be aware that they work differently and activate at other times and not just once as the LifereaShellActivatable.

Using LifereaShellActivatable

If you script in Python using LifereaShellActivatable means simply deriving a new class from it. For example:

from gi.repository import GObject, Peas, PeasGtk, Gtk, Liferea, Gdk
 
class ExamplePlugin (GObject.Object, Liferea.ShellActivatable):
__gtype_name__ = 'ExamplePlugin'
 
object = GObject.property (type=GObject.Object)
shell = GObject.property (type=Liferea.Shell)
 
def do_activate (self):
# Do something here...
 
def do_deactivate (self):
# Maybe do somethin here too...

The activate() and deactivate() methods are required by libpeas and provide you with the starting points to do stuff. By fetching the "Liferea.Shell" instance you gain access to the main window. Using this you can both lookup widgets or other Liferea classes like the Liferea.FeedList to perform actions against business objects of Liferea.

Providing a plugin configuration

Along with the actual plugin code libpeas requires a plugin configuration file defining the language the plugin is implemented with and metadata (name, description, website...) for this plugin. Such a file looks like this:

[Plugin]
Module=example
Loader=python
IAge=2
Name=Example Plugin
Description=Illustrates how to implement plugins in Liferea
Authors=Lars Windolf 
Copyright=Copyright © 2014 Lars Windolf
Website=http://lzone.de/liferea/
Help=http://lzone.de/liferea/

Most important is the "Loader" setting indicating the correct scripting language and the "Module" setting which together with the "Loader" setting as "python" indicates that or plugin script is to be named "example.py". Both the "example.py" plugin script and it's "example.plugin" config file need to be put into the Liferea plugins directory...

Where to put my plugin script?

There are two possible locations for the plugin script (and it's configuration file):

  • For user provided plugins: usually ~/.config/liferea/plugins
  • For package provided plugins: usually /usr/lib/liferea/plugins

Note that paths can be different with different XDG settings.

When writing and testing don't bother installing the plugin in the package directories. Just put it in ~/.config/liferea/plugins, fire up Liferea.


More about how to check for activation, debug problems and handling enabling/disabling in the next installment of this tutorial!

Liferea 1.10.12 Released

This is a new maintenance release.

The Changes:

	* Fixes Github #86: Support HTTP content negotiation
	  (suggested by DanMan)
	* Fixes Github #98:  Stop calling Atom person constructs w/ URI invalid
	  (patch by Aristotle Pagaltzis)
	* Fixes Github #100: Problems with dark Adwaita theme in GTK 3.14
	  (reported by majutsushi)

Download

You can download the release on Github:
https://github.com/lwindolf/liferea/releases/tag/v1.10.12

Liferea 1.11.1 Released

There is a new maintenance release for the unstable line: Liferea 1.11.1 with the following changes:

    * Fixes Github #81: Inability to add subscriptions
      (reported by GreenLunar)
    * Fixes Javascript links not opening in new browser tabs

    * Updated Hebrew translation (Genghis Khan)
    * Fixes Github #88: Minor DE translation mistake (moraxy)

Download

You can download the release on Github:
https://github.com/lwindolf/liferea/releases/tag/v1.11.1

Syndicate content