penguin-mail README

The project's README from github.com/c9dev/penguin-mail. As one markdown file: README.md.

Penguin Mail

Penguin Mail

Mail and calendar for Linux, written in Rust.

CI Latest release License: GPL-3.0-or-later Rust 1.98 GTK 4 and libadwaita 1.8

Website · Watch the tour · Install · Features · Screenshots · Changelog

Penguin Mail is mail and calendar for Linux. It reads Gmail accounts, Microsoft accounts (Outlook.com, Hotmail, Live and Microsoft 365) and any IMAP and SMTP account, such as Fastmail, iCloud and Yahoo, and finds the server settings for you. It syncs from the system tray, shows your accounts in one inbox or one at a time, and keeps your mail on your own computer. Gmail and Google Calendar accounts talk to Google directly, and Microsoft accounts talk to Microsoft Graph, so no other server sees your mail.

It is built with GTK and libadwaita and fits best on GNOME. It runs on any Linux desktop, and the tray icon and every other feature work outside GNOME.

A two-minute tour of Penguin Mail: play the video

Features

Penguin Mail has mail for Gmail, Microsoft (Outlook.com, Hotmail, Live and Microsoft 365), IMAP and POP3 accounts, a calendar, contacts, OpenPGP and S/MIME, rules, and an optional assistant. An IMAP or POP3 account gets its calendar and contacts over CalDAV and CardDAV where the provider offers them, and an IMAP account its rules over ManageSieve.

Reading

Writing

Organizing

Gmail settings

Gmail runs all four, so they work with your computer off.

Calendar

Security and privacy

The assistant

An assistant pane (Ctrl+J) summarizes, sorts, cleans up, drafts replies and changes settings such as an automatic reply, using the app's own tools. It also reads and changes your Google Calendar, finds free time, looks people up in your contacts, and reads attachments.

It asks before it sends mail, changes Gmail settings or your calendar, or uses a tool from outside the app, and it is off until you pick a model. docs/assistant.md covers setup.

On the desktop

Screenshots

All accounts in one inbox, with a reply open and its quoted history folded

An Outlook.com inbox with Focused and Other, and the account's tags in the sidebar

Week Month Agenda
The calendar's week, with working hours shaded and each day's location The calendar's month, with a bar across the days of a trip The calendar's agenda, one line per event
Invitation Event
An invitation in a message, with the hours around the meeting An event's details, guests and answers
Dark Writing Narrow
The inbox in dark mode Replying in the composer The phone-width layout
Several selected Automatic reply
Three conversations selected, with bulk actions The automatic reply dialog
Flags VIPs
A conversation flagged blue A VIP in the sidebar and the list
Assistant Categories
The assistant listing mail that waits on a reply The inbox narrowed to Promotions
Send Later Rules
A message scheduled for Monday morning A Gmail filter in the Rules dialog
Hide My Email Preferences
Hide My Email, with one address and its switch Preferences, with the calendar settings

Install

Penguin Mail runs on Linux, x86_64. The .deb, the rpm and the Arch package need GTK 4.20, libadwaita 1.8 and WebKitGTK 6.0 from your distribution, as Ubuntu 26.04, Fedora 43 and Arch's own repositories have; the snap brings its own. On Ubuntu 24.04 and the releases built on it, such as Pop!_OS 24.04 and Linux Mint 22, apt refuses the .deb for its older GTK and libadwaita; install the snap there. Penguin Mail is not on Flathub yet. The tray icon needs a StatusNotifier host, which Ubuntu's AppIndicator extension provides.

.deb rpm Arch Snap
Updates Install in the app, or apt upgrade dnf upgrade Download the new .pkg.tar.zst Snap Store
GnuPG the system's the system's the system's the snap's, on your ~/.gnupg
Assistant skills yes yes yes no
Claude Code, and MCP servers you run as a command yes yes yes no
Tray icon yes yes yes yes

Skills are off in the snap because a skill's scripts run in a sandbox of their own, which cannot start inside the one the snap runs in. That sandbox also keeps the app from starting programs installed on your system, such as Claude Code. docs/setup.md has the details.

Penguin Mail has its own apt repository. Add its key and entry, then install:

sudo curl -fsSLo /usr/share/keyrings/penguin-mail-archive-keyring.gpg \
  https://c9dev.github.io/penguin-mail/penguin-mail-archive-keyring.gpg
sudo curl -fsSLo /etc/apt/sources.list.d/penguin-mail.sources \
  https://c9dev.github.io/penguin-mail/penguin-mail.sources
sudo apt update && sudo apt install penguin-mail

sudo apt upgrade then brings each new version with the rest of the system. The key's fingerprint is FE3C 3B6E 699A F939 DC46 70DC F3A8 5303 5C3E 2B8E.

From a release

Download the .deb from the latest release and install it, replacing X.Y.Z with the version:

sudo apt install ./penguin-mail_X.Y.Z_amd64.deb

apt pulls in the libraries it needs. The .deb also adds the apt repository above, so later versions arrive with sudo apt upgrade.

Without root

The same release has a tarball and a zip that install under ~/.local:

tar xzf penguin-mail-X.Y.Z-x86_64.tar.gz
cd penguin-mail-X.Y.Z-x86_64
./install-files.sh .

It starts in the tray at login unless you run it as NO_AUTOSTART=1 ./install-files.sh ..

To check a download, fetch the release's SHA256SUMS and SHA256SUMS.asc and the apt repository's key from above, then:

gpgv --keyring ./penguin-mail-archive-keyring.gpg SHA256SUMS.asc SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMS

With dnf, on Fedora

Penguin Mail has a dnf repository beside the apt one, signed with the same key:

sudo curl -fsSLo /etc/yum.repos.d/penguin-mail.repo \
  https://c9dev.github.io/penguin-mail/rpm/penguin-mail.repo
sudo dnf install penguin-mail

dnf asks you to accept the key the first time. sudo dnf upgrade brings each new version, and the .rpm on the releases page adds the repository too.

On Arch

Download the .pkg.tar.zst from the latest release and install it, replacing X.Y.Z with the version:

sudo pacman -U ./penguin-mail-X.Y.Z-1-x86_64.pkg.tar.zst

pacman pulls in the libraries it needs. There is no Penguin Mail repository for Arch yet, so a new release means downloading and installing its .pkg.tar.zst again. packaging/aur/PKGBUILD is a ready AUR package once someone publishes it, which would bring updates through an AUR helper instead.

From the Snap Store

sudo snap install penguin-mail --edge

The snap waits for the Snap Store to approve its access to ~/.gnupg and to the keyring, and the command above finds it once the store has. New versions reach the edge channel first. The snap is strictly confined, and signing and encryption use your own keys.

From source

CONTRIBUTING.md has the steps, and how to build the Flatpak yourself.

First run

The first screen signs you in with Google. Sign In with Google opens Google's sign-in page in your browser, and Add Account in the sidebar adds each account after that.

Until Google finishes verifying Penguin Mail, that page warns that Google has not verified the app. The warning means Google has not yet reviewed the app's request for Gmail access; choose Advanced, then continue.

Updates

A Penguin Mail installed from the .deb, the tarball or source checks GitHub for a new release once a day. When one is out, it says so in a notification, a banner across the window, and the tray menu, and Install does the rest:

Before it installs anything, Penguin Mail checks that the release's SHA256SUMS carries a good signature from the apt repository's key, which is built into the app, and then checks the download against those sums. It refuses a release whose signature is missing or made by any other key, and the update log says so. Once the new version is in, Penguin Mail restarts into it. With a message open in the composer, it waits and shows Restart instead, since a draft saves only when you save it.

Check for Updates in the tray menu checks at once. To stop the daily check, turn off Check for Updates under Preferences, Startup. A copy run with cargo run or as the demo never checks.

The rpm leaves updates to dnf, and the snap to the Snap Store. Those copies never check GitHub and offer no Install of their own; Preferences and the About window say who brings updates.

To update by hand, download the new release and install it the same way as the first time. For a copy built from source, pull and run scripts/install.sh again.

Try it without an account

penguin-mail --demo

The demo opens three sample accounts in a throwaway store. Search, triage, the composer and attachments all work against sample data, and nothing talks to Google.

Usage

Keyboard

Apple Mail's shortcuts work with Ctrl in place of Command. Gmail's single keys work whenever you are not typing. Ctrl+? lists every shortcut.

Key Action Key Action
j / k Next / previous conversation Ctrl+R or r Reply
Ctrl+Alt+A or e Archive Ctrl+Shift+R or a Reply all
Delete or # Move to trash Ctrl+Shift+F or f Forward
Ctrl+Shift+J Junk Ctrl+N or c New message
Ctrl+Shift+L or s Flag or unflag Ctrl+Shift+D Send
Ctrl+Alt+1 to Ctrl+Alt+7 Flag color Ctrl+Shift+A Attach files
Ctrl+Shift+U or u Mark read or unread Ctrl+B / Ctrl+I / Ctrl+K Bold, italic, link
Ctrl+Alt+M or l Labels Ctrl+F or / Search
Ctrl+Z Undo Ctrl+1 to Ctrl+9 Open a mailbox
Ctrl+A Select all Ctrl+= / Ctrl+- / Ctrl+0 Text size
Ctrl+Shift+N or F5 Check for mail Ctrl+P Print
Ctrl+O or double-click Open in a new window Ctrl+Alt+U View source

Command line

penguin-mail --background             # start in the tray, no window
penguin-mail --compose                # new message
penguin-mail mailto:[email protected]   # new message to Ann
penguin-mail --version

To make Penguin Mail open mailto: links:

xdg-mime default io.github.c9dev.PenguinMail.desktop x-scheme-handler/mailto

The running app answers D-Bus actions, for custom shortcuts:

gdbus call --session --dest io.github.c9dev.PenguinMail --object-path /io/github/c9dev/PenguinMail \
    --method org.gtk.Actions.Activate show-window [] {}

The actions are show-window, hide-window, compose, check and quit.

penguin-mail-cli drives the same sync core without a window: account add, sync, threads, show, triage and export.

Privacy

The full policy is in docs/privacy-policy.md.

Help and feedback

Questions, bug reports and ideas are welcome in Issues. CONTRIBUTING.md says what a useful report holds, and how the code is built and tested. SECURITY.md says where to send a vulnerability.

License

Penguin Mail is free software under the GNU General Public License, version 3 or later.

The icon is a penguin holding a letter, drawn on the rounded square and bevel of the Gruvbox Plus icon pack so it sits among that pack's apps.

penguin-mail (c9dev/penguin-mail)

Searching Database…

Что это?Penguin Mail — нативное настольное приложение Linux для почты и календаря: оно работает с Gmail, Microsoft (Outlook.com, Hotmail, Live, Microsoft 365) и любыми аккаунтами IMAP/SMTP, а также с Google Calendar, контактами, шифрованием OpenPGP и S/MIME, плюс опциональный ИИ-ассистент.
Это тяжёлая обёртка Electron или лёгкое нативное приложение?Это нативное приложение, написанное на Rust с GTK4 и libadwaita, а не Electron, и оно нетребовательно к памяти — около 55 МБ, пока висит в трее.
Что нужно системе перед установкой?Пакеты .deb, rpm и Arch требуют GTK 4.20, libadwaita 1.8 и WebKitGTK 6.0 из вашего дистрибутива (например, Ubuntu 26.04, Fedora 43); Snap несёт свои. ИИ-ассистенту дополнительно нужна либо локальная модель (Ollama/LM Studio), либо API-ключ Anthropic, либо подписка Claude Code.
Есть ли подводные камни при установке, о которых стоит знать?Penguin Mail пока нет на Flathub, системам на базе Ubuntu 24.04 (а также Pop!OS 24.04, Mint 22) придётся использовать Snap, потому что GTK/libadwaita в apt слишком старые, а Snap, в свою очередь, отключает навыки ассистента и серверы команд Claude Code/MCP из-за своей песочницы.
Работает ли это сейчас ещё и на macOS?В описании на GitHub указан macOS, но текущие шаги установки в README (apt, dnf, pacman, snap, tarball) покрывают только Linux x86_64; сборки или пакета для macOS пока не описано.
Видит ли Penguin Mail мою почту или хранит её на своих серверах?Нет — аккаунты Gmail и Google Calendar общаются напрямую с Google, а аккаунты Microsoft — напрямую с Microsoft Graph, так что никакой третий сервер не обрабатывает вашу почту, и само приложение не хранит ключей шифрования.
Что реально умеет встроенный ИИ-ассистент?Он может суммировать, сортировать и разбирать почту, готовить черновики ответов, менять настройки вроде автоответа, искать по Google Calendar и управлять им, находить людей в контактах и читать вложения — используя собственные инструменты приложения плюс любые добавленные вами MCP-серверы или навыки.
Hide My Email правда навсегда избавляет от спама?Он создаёт для каждого сайта плюс-адрес, который потом можно направлять прямо в корзину, но ваш реальный адрес остаётся видимым внутри каждого письма, так что это отпугивает только ленивых отправителей, а не целеустремлённого.
Может ли каждое зашифрованное письмо скрыть получателя из Bcc?Только в OpenPGP, которая может вообще не включить ключ получателя из Bcc в письмо; S/MIME так не умеет, поэтому любое письмо с Bcc не шифруется в S/MIME.
Почему стоит выбрать установку из Snap Store вместо apt?Snap работает в любом дистрибутиве, даже в старых вроде Ubuntu 24.04, где GTK/libadwaita из apt слишком старые, но он жёстко изолирован, поэтому навыки ассистента и интеграции с серверами команд Claude Code/MCP отключены.
Creator
c9dev
Size
29.4 MB
Stars
478
Age
29d
Commits · 90 Days