mirror of
https://github.com/priyanshujain/margin-mail.git
synced 2026-10-02 19:17:05 +00:00
The client itself: the sync engine and mirror, the Gmail and IMAP providers, the screener, the three boxes and two piles, compose and send, the sanitiser and tracker stripping, contacts, clips, backup, notifications and the guide. The pipeline that ships it. Three runners now build in parallel and the publish gate wants all four platform keys in latest.json before a release leaves draft. Linux gets two more packages Tauri does not build: a flatpak repackaged from the deb against GNOME 48, and a Nix package that relinks the deb against nixpkgs so it runs as a native Wayland client rather than through Xwayland. CI runs the Rust suite on all three desktops rather than on Linux alone, and rebuilds the flatpak manifest on every push to main. Two things that were only ever exercised on macOS and were wrong everywhere else. The menu bar was built by adjusting the submenus macOS is given, so on a platform whose default menu has no File or View the new File menu landed after Edit, Check for Updates landed nowhere, and the three places and the reading pane had no menu at all. The deb declared libwebkit2gtk-4.1-0 and libgtk-3-0 twice, because tauri.conf.json named the dependencies Tauri already emits. The updater key exists now, so releases can sign their artifacts.
158 lines
6.4 KiB
Markdown
158 lines
6.4 KiB
Markdown
# Installing Margin Mail
|
|
|
|
Every build comes from the same release. Pick the file for your machine from
|
|
[the latest release](https://github.com/priyanshujain/margin-mail/releases/latest) and follow the
|
|
section below for it. The version number in the file names changes with every release; `0.1.0`
|
|
stands in for it throughout.
|
|
|
|
Whatever you install, the app keeps its mirror of your mail, your accounts and every decision
|
|
you have ever made about a sender in one directory, and uninstalling never touches it. Where that
|
|
directory is, and how to move it, is at the end.
|
|
|
|
## macOS
|
|
|
|
Apple Silicon and Intel are the same file: the dmg carries a universal binary.
|
|
|
|
1. Download `Margin.Mail_0.1.0_universal.dmg`.
|
|
2. Open it and drag **Margin Mail** onto the Applications folder in the same window.
|
|
3. Eject the disk image and open the app from Applications or Spotlight.
|
|
|
|
The bundle is signed with a Developer ID and notarized, so it opens on the first double click with
|
|
no right-click-and-Open dance and no trip to System Settings.
|
|
|
|
macOS asks about notifications the first time the app has something to tell you rather than at
|
|
launch. If you say no and change your mind, it is under Notifications in System Settings, and the
|
|
app's Settings has a button that takes you straight there.
|
|
|
|
The minimum is macOS 10.15.
|
|
|
|
## Linux
|
|
|
|
Four packages, and they are not equal. If you are on Wayland, or on NixOS, use Nix. Otherwise the
|
|
deb on Debian and Ubuntu, the flatpak on anything else, and the AppImage when you want no install
|
|
at all.
|
|
|
|
### deb, on Debian and Ubuntu
|
|
|
|
```
|
|
sudo apt install ./Margin.Mail_0.1.0_amd64.deb
|
|
```
|
|
|
|
`apt` rather than `dpkg -i`, because it pulls `libwebkit2gtk-4.1-0` and `libgtk-3-0` in for you.
|
|
The app then appears in your launcher. Upgrading is the same command with the newer file, and
|
|
`sudo apt remove margin-mail` reverses it.
|
|
|
|
Built on Ubuntu 22.04, so 22.04 is the oldest release it runs on. Anything older has a glibc the
|
|
binary was not linked against and will refuse to start.
|
|
|
|
### flatpak, on everything else
|
|
|
|
```
|
|
flatpak install ./Margin.Mail_0.1.0_amd64.flatpak
|
|
flatpak run studio.margin.mail
|
|
```
|
|
|
|
A single self-contained file: it brings its own GTK and WebKit, so it does not care what your
|
|
distribution ships. It is not on Flathub and will not be, because a Flathub build has to come from
|
|
source and this app's Google client is embedded at compile time from a file that is deliberately
|
|
not in the repository.
|
|
|
|
The sandbox is narrow on purpose. The app gets the network, the notification service and your
|
|
downloads directory, and nothing else. That means saved attachments and exports land in
|
|
`~/Downloads` and can go nowhere else, and the app's data lives under
|
|
`~/.var/app/studio.margin.mail/` rather than in the usual place, so a flatpak install and a deb
|
|
install do not see each other's mail.
|
|
|
|
`flatpak uninstall studio.margin.mail` removes it, and add `--delete-data` to take the mail with
|
|
it.
|
|
|
|
### Nix
|
|
|
|
The package relinks the published deb against nixpkgs' own GTK and WebKit, which is the only build
|
|
here that runs as a native Wayland client rather than falling back to Xwayland.
|
|
|
|
```
|
|
NIXPKGS_ALLOW_UNFREE=1 nix run --impure github:priyanshujain/margin-mail#margin-mail
|
|
```
|
|
|
|
`NIXPKGS_ALLOW_UNFREE` because the licence is FSL rather than MIT, so nix asks first. To keep it,
|
|
add the flake as an input and the overlay to your configuration:
|
|
|
|
```nix
|
|
{
|
|
inputs.margin-mail.url = "github:priyanshujain/margin-mail";
|
|
|
|
# In your nixpkgs configuration:
|
|
nixpkgs.overlays = [ inputs.margin-mail.overlays.default ];
|
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "margin-mail" ];
|
|
environment.systemPackages = [ pkgs.margin-mail ];
|
|
}
|
|
```
|
|
|
|
A Nix install does not update itself. The store is read only, so the app reports the new version
|
|
and tells you to update the flake instead of trying to replace its own binary.
|
|
|
|
### AppImage, when you want no install
|
|
|
|
```
|
|
chmod +x Margin.Mail_0.1.0_amd64.AppImage
|
|
./Margin.Mail_0.1.0_amd64.AppImage
|
|
```
|
|
|
|
Nothing is written outside your home directory and there is nothing to uninstall. It carries
|
|
Ubuntu's GTK stack, which cannot talk to a modern Wayland compositor, so on Wayland it runs through
|
|
Xwayland and looks slightly soft on a HiDPI screen. That is the trade for a single portable file.
|
|
|
|
To get it into your launcher rather than running it from a terminal, `just install` from a clone
|
|
does the whole thing, or by hand:
|
|
|
|
```
|
|
install -Dm755 Margin.Mail_0.1.0_amd64.AppImage ~/.local/bin/margin-mail
|
|
```
|
|
|
|
and write a `.desktop` file pointing `Exec` at it.
|
|
|
|
## Windows
|
|
|
|
Two installers, and either is fine. The `.exe` is the friendlier one; the `.msi` is what you want
|
|
if you are deploying by policy.
|
|
|
|
1. Download `Margin.Mail_0.1.0_x64-setup.exe`.
|
|
2. Run it. Windows SmartScreen will say it does not recognise the publisher, because the installer
|
|
is not code-signed. Click **More info**, then **Run anyway**.
|
|
3. The app appears in the Start menu.
|
|
|
|
Uninstalling is through Apps in Settings, the same as anything else.
|
|
|
|
Windows 10 1803 or newer, and WebView2, which every supported Windows already has.
|
|
|
|
## Updating
|
|
|
|
Every install except Nix and the flatpak updates itself. The app checks the release feed on launch,
|
|
tells you when something newer is out, and installs it when you say so. **Check for Updates** in
|
|
the File menu, or the application menu on macOS, asks immediately.
|
|
|
|
Nix updates with the flake. The flatpak updates with `flatpak update studio.margin.mail` once you
|
|
have installed the newer bundle file, since a single-file bundle carries no remote to check.
|
|
|
|
## Where your mail lives
|
|
|
|
One directory per platform, and it survives uninstalling:
|
|
|
|
- macOS: `~/Library/Application Support/studio.margin.mail`
|
|
- Linux: `~/.local/share/studio.margin.mail`, or `~/.var/app/studio.margin.mail/data/studio.margin.mail` under flatpak
|
|
- Windows: `%APPDATA%\studio.margin.mail`
|
|
|
|
It holds the mirror of your mail, the state database of every decision you have made, and your
|
|
sealed refresh tokens. Copying it to another machine moves everything except the tokens, which are
|
|
sealed against the machine that stored them, so the accounts ask to be connected again and nothing
|
|
else changes.
|
|
|
|
To remove the app and its mail together, uninstall and then delete that directory.
|
|
|
|
## Building it yourself
|
|
|
|
`just install` from a clone builds for the machine you are sitting at and puts it where that
|
|
machine expects to find applications. [release.md](release.md) has what a build needs and how a
|
|
release is cut.
|