{"id":21717354,"url":"https://github.com/sandsmark/trysterobiff","last_synced_at":"2026-05-20T19:03:04.632Z","repository":{"id":66625172,"uuid":"39402298","full_name":"sandsmark/trysterobiff","owner":"sandsmark","description":"simple imap checker","archived":false,"fork":false,"pushed_at":"2015-07-20T18:59:00.000Z","size":212,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-25T18:11:40.606Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandsmark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-20T18:50:30.000Z","updated_at":"2015-11-05T08:05:05.000Z","dependencies_parsed_at":"2023-02-22T16:16:06.279Z","dependency_job_id":null,"html_url":"https://github.com/sandsmark/trysterobiff","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ftrysterobiff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ftrysterobiff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ftrysterobiff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ftrysterobiff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandsmark","download_url":"https://codeload.github.com/sandsmark/trysterobiff/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244682439,"owners_count":20492976,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-26T01:16:18.205Z","updated_at":"2026-05-20T19:03:04.565Z","avatar_url":"https://github.com/sandsmark.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Trysterobiff is a cross-plattform non-polling IMAP new-mail systray notifier.\n\nInstead of polling it uses the IDLE extension of IMAP. With the IDLE extension\nan IMAP server immediately sends mailbox status updates to the client. Using\nthis mechanism you really get notified of new mail as fast as possible.\n\nIn comparison to that, with a polling client there is a time-window where a new\nmail arrives at the server and the next scheduled polling.\n\nBecause of this property Trysterobiff is also called Workaholic Biff.\n\nBesides visual notifications it supports executing external commands on new\nmail arrival.\n\nTrysterobiff is written in C++ and uses the Qt library (version 4.x). It is\nlicenced under the GPL v3+.\n\n2011-01-08, 2013-03-05\n\n\n## Contact ##\n\nI appreciate feedback and comments:\n\n    mail@georg.so\n    gsauthof@sdf.lonestar.org\n\n\n## Install ##\n\nYou need to have Qt 4 installed, version \u003e= 4.3 or 4.4 probably. It was tested\nwith version 4.6.\n\nGenerate the Makefile via:\n\n    $ qmake gui.pro\n\nOr\n\n    $ qmake \"CFG=release\" gui.pro\n\n(see gui.pro for more alternatives)\n\nAnd then compile it via:\n\n    $ make\n\nThe resulting binary can be called via:\n\n    $ ./trysterobiff \u0026\n\n## Config ##\n\nThe repository contains a commented config file template, which includes all\navailable options.\n\nCopy it to the right location:\n\n    $ cp trysterobiff.ini $HOME/.config/trysterobiff.ini\n\nRestrict the read access:\n\n    $ chmod 600 $HOME/.config/trysterobiff.ini\n\nAnd adjust the default settings (hostname etc.):\n\n    $ vim $HOME/.config/trysterobiff.ini\n\n\n## SSL ##\n\nTrysterobiff only supports IMAP over SSL/TLS and only accepts certificates that\ncan be checked against a known CA root certificate. It is possible to configure\nan additional CA root certificate, in case that it is not available systemwide.\n\nIf you have problems to identify the root SSL-certficate the server certificate\nwas signed with, check out the notes at the end of:\n\nhttps://bitbucket.org/gsauthof/mailcp/overview \n\n\n## Mouse control ##\n\nSingle-clicks on tray icon:\n\n- left   - re-display preview bubble\n- middle - re-connect to server (may take 1-2 seconds)\n- right  - show menu\n\n\n## Gmail ##\n\nGmail IMAP access has following [limitation][gmaillim], which matters to\ntrysterobiff:\n\n\u003e Gmail IMAP1 is a fairly complete implementation of IMAP, but the\n\u003e following features are currently unsupported:\n\u003e\n\u003e   - \\Recent flags on messages. [..]'\n\n[gmaillim]: http://support.google.com/mail/bin/answer.py?hl=en\u0026answer=78761\n\n\nTrysterobiff detects this and on connecting to a GMail-IMAPD, it will\nautomatically use search-for-UNSEEN messages.\n\nYou can explicitly configure this behavior for other IMAP daemons, too, or you\ncan even disable the Gmail autodetection (cf. trysterobiff.conf example).\n\nWhen connecting to non-Gmail-IMAPDs, Trysterobiff searches by default for\nRECENT messages (RECENT messages are a subset of the UNSEEN ones).\n\nWith that work-around Trysterobiff behaves like this when connected to a gmail-imapd:\n\n- When reading messages in the gmail web-client, gmail does NOT immediately\n  push the status change (i.e. read -\u003e unread attribute change of a message)\n  over imap. But gmail pushes every 5 minutes a regular\n  status update. On that update Trysterobiff has the chance to update\n  notifications. Thus, in the best, worst or average case this update is immediate,\n  5 or 2.5 minutes late.\n- When using the android gmail app, you have to hit the sync button (or wait\n  for an automated sync) until changes are propagated via IMAP. But the sync\n  then immediately pushes a new status over imap.\n- On incoming new mail gmail nearly immediately pushes a status update over IMAP.\n- When deleting messages (via a concurrent imap connection) gmail also pushes a new\n  status immediately.\n\nThus, only the first point is a real limitation of the workaround. 'Standard'\nIMAP servers that has RECENT flag support don't have that limitation, of\ncourse.\n\n## Multiple Account ##\n\nIf you want to use multiple Trysterobiff instances (for multiple IMAP\naccounts), just specify an alternative config path:\n\n    $ trysterobiff --settings $HOME/.config/accountb\n\nIn the above call $HOME/.config/accountb/trysterobiff.ini is used as config file.\n\nAlternatively, you can set the XDG_CONFIG_HOME environment variable, e.g.:\n\n    $ XDG_CONFIGHOME=$HOME/.config/accountb trysterobiff\n\nOr you can even change your HOME environment variable:\n\n    $ HOME=/home/juser/accountb ./trysterobiff\n\n(for using /home/juser/accountb/.config/trysterobiff.ini)\n\n\n## Tested IMAP-Servers ##\n\n* Cyrus IMAP v2.3.13\n* [Dovecot][dove] 1.2.9\n* [Gmail][gmail] (2013-03)\n\n## Misc ##\n\n* Note that the Qt API documentation specifies that the bubble display feature\n  is not available on Mac OSX ...\n\n* The included icons are from the [tango project][tango]. They are Public Domain.\n\n\n[tango]: http://tango.freedesktop.org/Tango_Desktop_Project\n[dove]: http://www.dovecot.org/\n[gmail]: http://en.wikipedia.org/wiki/Gmail\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandsmark%2Ftrysterobiff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandsmark%2Ftrysterobiff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandsmark%2Ftrysterobiff/lists"}