Git Product home page Git Product logo

trysterobiff's Introduction

Trysterobiff is a cross-platform non-polling IMAP new-mail systray notifier.

Instead of polling it uses the IDLE extension of IMAP. With the IDLE extension an IMAP server immediately sends mailbox status updates to the client. Using this mechanism you really get notified of new mail as fast as possible.

In comparison to that, with a polling client there is a time-window where a new mail arrives at the server and the next scheduled polling.

Because of this property Trysterobiff is also called Workaholic Biff.

Besides visual notifications it supports executing external commands on new mail arrival.

Trysterobiff is written in C++ and uses the Qt library (version 4.x). It is licenced under the GPL v3+.

2011-01-08, 2013-03-05

2020-09-15: This repository was previously hosted under https://bitbucket.org/gsauthof/trysterobiff. I migrated it today to GitHub (and thus converted it from Mercurial to Git) because Bitbucket terminated its Mercurial support and thus removed all old Mercurial repositories, earlier this year.

Contact

I appreciate feedback and comments:

Install

You need to have Qt installed, version >= 4.3. It was tested with version 4.6. It should also compile and run with Qt 5.

Generate the Makefile via:

$ qmake gui.pro

Or

$ qmake "CFG=release" gui.pro

(see gui.pro for more alternatives)

On some systems, the Qt version is encoded in the qmake name, e.g. qmake-qt4 or qmake-qt5.

And then compile it via:

$ make

The resulting binary can be called via:

$ ./trysterobiff &

Config

The repository contains a commented config file template, which includes all available options.

Copy it to the right location:

$ cp trysterobiff.ini $HOME/.config/trysterobiff.ini

Restrict the read access:

$ chmod 600 $HOME/.config/trysterobiff.ini

And adjust the default settings (hostname etc.):

$ vim $HOME/.config/trysterobiff.ini

SSL

Trysterobiff only supports IMAP over SSL/TLS and only accepts certificates that can be checked against a known CA root certificate. It is possible to configure an additional CA root certificate, in case that it is not available systemwide.

If you have problems to identify the root SSL-certficate the server certificate was signed with, check out the notes at the end of:

https://bitbucket.org/gsauthof/mailcp/overview

Mouse control

Single-clicks on tray icon:

  • left - re-display preview bubble
  • middle - re-connect to server (may take 1-2 seconds)
  • right - show menu

Gmail

Gmail IMAP access has following limitation, which matters to trysterobiff:

Gmail IMAP1 is a fairly complete implementation of IMAP, but the following features are currently unsupported:

  • \Recent flags on messages. [..]'

Trysterobiff detects this and on connecting to a GMail-IMAPD, it will automatically use search-for-UNSEEN messages.

You can explicitly configure this behavior for other IMAP daemons, too, or you can even disable the Gmail autodetection (cf. trysterobiff.conf example).

When connecting to non-Gmail-IMAPDs, Trysterobiff searches by default for RECENT messages (RECENT messages are a subset of the UNSEEN ones).

With that work-around Trysterobiff behaves like this when connected to a gmail-imapd:

  • When reading messages in the gmail web-client, gmail does NOT immediately push the status change (i.e. read -> unread attribute change of a message) over imap. But gmail pushes every 5 minutes a regular status update. On that update Trysterobiff has the chance to update notifications. Thus, in the best, worst or average case this update is immediate, 5 or 2.5 minutes late.
  • When using the android gmail app, you have to hit the sync button (or wait for an automated sync) until changes are propagated via IMAP. But the sync then immediately pushes a new status over imap.
  • On incoming new mail gmail nearly immediately pushes a status update over IMAP.
  • When deleting messages (via a concurrent imap connection) gmail also pushes a new status immediately.

Thus, only the first point is a real limitation of the workaround. 'Standard' IMAP servers that has RECENT flag support don't have that limitation, of course.

Multiple Account

If you want to use multiple Trysterobiff instances (for multiple IMAP accounts), just specify an alternative config path:

$ trysterobiff --settings $HOME/.config/accountb

In the above call $HOME/.config/accountb/trysterobiff.ini is used as config file.

Alternatively, you can set the XDG_CONFIG_HOME environment variable, e.g.:

$ XDG_CONFIGHOME=$HOME/.config/accountb trysterobiff

Or you can even change your HOME environment variable:

$ HOME=/home/juser/accountb ./trysterobiff

(for using /home/juser/accountb/.config/trysterobiff.ini)

Tested IMAP-Servers

Misc

  • Note that the Qt API documentation specifies that the bubble display feature is not available on Mac OSX ...

  • The included icons are from the tango project. They are Public Domain.

See Also

  • firetech/trysterobiff a 2017 fork that contains some Exchange improvements and displays an unread count in the systray icon

trysterobiff's People

Contributors

gsauthof avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

firetech

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.