Package: dtbell
Ditch The BellA desktop notifier for RSS/Atom feeds that lets you closely configure features of thefreedesktop notification specificationto unlock the most customizable feed notification experience possible on Linux.FeaturesConfigure a custom command to launch when clicking on a notification (e.g., your favorite application, shell command, custom script). The feed entry link will be passed as an argument, allowing the command to open the link directly.A feed profile system built to separate notification behaviors for each of your different types of feeds (e.g., news, blogs, podcasts, videos, etc).Configuration options to fine-tune feed fetching behavior such as the search window, search interval, etc.InstallDependencies:Python 3.7+Optional: Before installing, it is recommended that you installPyGObjectfrom your distribution's package manager forGObject Introspection. The package is typically named one of the following:python-gi,python-gobject, orpygobjecton most distributions.Ditch The Bell is available onPyPIand can be installed viapip, the Python package manager.pipinstalldtbellUsageTo run, simply execute:dtbellIf needed, use the--debugflag to print debug logs to the console:dtbell--debugConfiguringFile LocationsAll relevant files are stored in accordance with theXDG Base Directory Specification.Configuration filesconfig.ini,urls: are located in$XDG_CONFIG_HOME/dtbell/.If$XDG_CONFIG_HOMEis not set, the default location is$HOME/.config/dtbell/.Data filesdtbell.db,dtbell.log: are located in$XDG_DATA_HOME/dtbell/.If$XDG_DATA_HOMEis not set, the default location is$HOME/.local/share/dtbell/.If you enable thumbnail downloads, thumbnails will be temporarily downloaded to/tmp/dtbell/.Adding FeedsTo add feeds, edit theurlsfile, adding one URL per line.https://example.com/feed/rss.xml
https://another-example.com/feed/rss.xmlAuthenticated feeds are not yet supported.Configuration OptionsTo modify the configuration settings, edit theconfig.inifile.Feed ConfigurationThe[feed]section in yourconfig.inifile serves as the primary area for defining feed fetch behavior. Below are the available configuration options for the[feed]section:NameDescriptionData TypeDefault Valuesearch_windowThe number of days to go back when searching for new feeds. Cached entries are retained for this duration.Integer1search_intervalTime interval (in minutes) between each search for new entries.Integer30search_on_startupDetermines if a search is initiated upon application launch.Booleantrueflood_capMaximum number of notifications to avoid notification flooding. Set to 0 for unlimited.Integer10fetch_timeoutMaximum time (in seconds) the app will wait for a response after requesting a feed.Integer10Defining ProfilesThe profile system is designed to adapt to the diverse array of feeds that modern RSS users often manage (news feeds, blog feeds, podcast feeds, etc). It allows for tailored notification behavior based on the nature of each feed. You can define custom notification profiles for these specific types of feeds in yourconfig.inifile. For instance, a profile for video based feeds could look like this:[video]entry_age=truepersist_on_click=truelauncher=mpvlauncher_args='--save-position-on-quit'A[default]profile is defined in theconfig.inifile and serves as the baseline configuration for all feeds not tagged with a custom profile. Below are the available configuration options for the[default]section:NameDescriptionData TypeDefault ValuelauncherShell command to open notifications; must accept a URL as argument.Stringdefault_browserlaunch_argsArgument(s) to pass tolauncher; e.g.,'-P news'iflauncherwas set tofirefox.String''transienceDetermines whether notifications are temporary and disappear after a short time.Booleanfalsepersist_on_clickKeep notification after click; useful if transience is set to false.BooleanfalseurgencyNotification urgency: 0 (low), 1 (normal), 2 (critical).Integer1timeoutTimeout in ms; -1 for server default, 0 for never.Integer-1entry_ageDisplay entry age.Booleanfalsedownload_thumbnailsDownload thumbnails; consult your feed's TOS and be mindful of bandwidth usage.Booleantruerequire_patternsRequire entries to contain at least one of these patterns; e.g.,'Open Source', LinuxCustom (Comma-separated values)''exclude_patternsExclude entries that contain any one of these patterns; e.g.,Proprietary, WindowsCustom (Comma-separated values)''You can modify the default profile directly to affect all untagged feeds, or define custom profiles like the[video]profile if you wish to customize settings for a select group of feeds. Omitting fields in a custom profile will cause those settings to fall back to the values defined in the default profile.Adding Profiles to URLsAs mentioned earlier, theurlsfile should contain one RSS feed URL per line. To associate a profile with a specific feed, simply append the profile name (the name within the square brackets[ ]in yourconfig.ini) to the end of the feed URL, separated by a space. The format is simplyurl profile. For instance, using the[video]profile from earlier, an exampleurlsfile would look like this:https://example.com/feed/rss.xml video
https://another-example.com/feed/rss.xml videoContributingThis program is in its early stages of development and may have some rough edges or bugs. If you encounter any issues and want to contribute, feel free to submit an issue or open a PR!Note: All PRs must adhere to PEP 8 and pass pylint checks.LicenseThis program is licensed under the GPLv3; see the LICENSE file.