Ntfy.sh desktop client for Windows, Linux, and MacOSX
♾️ ntfy-desktop ♾️
A ntfy.sh desktop client built with Electron which supports Windows, Linux, and MacOSX. This client rests in your taskbar tray and allows you to receive push notifications to your desktop without requiring you to leave your browser open.
[![Version][github-version-img]][github-version-uri] [![Build Status][github-build-img]][github-build-uri] [![Build Status][github-tests-img]][github-tests-uri] [![Downloads][github-downloads-img]][github-downloads-uri] [![Size][github-size-img]][github-size-img] [![Last Commit][github-commit-img]][github-commit-img] [![Contributors][contribs-all-img]](#contributors-)
About
This project allows you to access the official free / paid notification service ntfy.sh, or your own self-hosted version of ntfy from within a desktop application which utilizes Electron as the wrapper.
What is Ntfy
ntfy.sh (pronounced "notify") is a simple HTTP-based pub-sub notification service. With ntfy, you can send notifications to your phone or desktop via scripts from any computer, without having to sign up or pay any fees. If you'd like to run your own instance of the service, you can easily do so since ntfy is open source.
To install Ntfy on your system, visit the following links:
Ntfy Desktop Features
- Supports both the official ntfy.sh website / service or your own self-hosted instance
- Two modes for minimizing app, configure in settings
- Start app minimized
- Shortcut key-binds
- Receive push notifications from ntfy server to desktop
datetime format
- Notifications (two options):
1. Persistent (sticky) notifications which require user interaction to clear
2. Timed notifications which disappear after X seconds
- Topic filtering & support
- Defaults: news, announcements
- Supports Ntfy API token
- Taskbar unread message count / count
- Includes command-line arguments
Self-hosted vs Ntfy.sh
To use this desktop client, you will be required to either have an Ntfy.sh account, or you must host your own instance of the Ntfy.sh server to pull notifications from.
You can install your own self-hosted copy of Ntfy server from:
- https://github.com/binwiederhier/ntfy/releases
Be aware that the official ntfy.sh website will rate-limit users who have not purchased a paid package. Out of box, this ntfy-desktop client polls for new notifications every 30 seconds; if you are on the free plan and decrease this timer in the desktop client settings, you will get an error saying that you have gone over your rate-limit.
If you are self-hosting your own copy of Ntfy, you must open the Ntfy Desktop client, click the top menu item App, go down to Settings and then click Instance. You must set your instance URL to your personal self-hosted instance. To set your instance URL back to the official ntfy server, clear the URL box and save.

You can set the polling rate lower without any limitations or rate limits:

Architecture Outline
We provide numerous different architectures you can download this app for. Below is a list:
| Architecture | Bits | Devices / Examples | | ------------ | ---- | -------------------------------------------------------------- | | ARMv7l | 32 | Raspberry Pi 2 & 3 (32-bit), Nexus 7, PS Vita (ARM Cortex-A9) | | ARMv6l | 32 | Raspberry Pi 1, Pi Zero, iPhone 3G | | ARM64 | 64 | Apple M1/M2/M3 Macs, Raspberry Pi 4 (64-bit OS), iPhone 5s+ | | AMD64 | 64 | Modern PCs, PS5, Xbox Series X, Steam Deck | | I386 | 32 | 386-era PCs, Windows 95 machines, Compaq Deskpro, old netbooks | | IA32 | 32 | Same as i386; Intel Atom netbooks, Pentium 4 PCs |
Usage
This section explains how to use ntfy-desktop once you have it ready to go on your system.
Key Binds
The following keybinds can be used within ntfy-desktop:| Key(s) | Description |
| --- | --- |
| CTRL + R | Refresh page |
| CTRL + Q | Quit application |
| CTRL + M | Minimize to tray |
| CTRL + = | Zoom in |
| CTRL + - | Zoom out |
| CTRL + 0 | Zoom reset |
| CTRL + SHIFT + I | Developer tools |
| F12 | Developer tools |
| CTRL + G | Show General settings window |
| CTRL + I | Show URL / Instance window |
| CTRL + T | Show API Token settings window |
| CTRL + SHIFT + T | Show Topics settings window |
| CTRL + N | Show Notifications settings window |
[!NOTE]
Hotkeys are disabled by default. To enable hotkeys, select App in the top menu, and select Settings -> General.
Enable Allow usage of hotkeys to navigate
CLI Arguments
This client allows you to utilize the following command-line arguments with ntfy-desktop:
| Argument | Description | Available as setting |
| --- | --- | --- |
| --hidden | Start app hidden in tray, suitable for auto-starting on system login/boot | ✅ |
| --hotkey | Start app with hotkeys enabled | ✅ |
| --quit | Top-right close button will completely exit app instead of minimize to tray | ✅ |
| --devtools | Start app with developer tools in App menu | ✅ |
| --env | Define startup environment | ❌ |
If you are running ntfy-desktop from node, you can pass arguments using the following example:
``shell ignore
npm run start -- --hidden --hotkey
<br />
If using the pre-built binaries, pass arguments by opening your terminal / command prompt, and passing the arguments using:shell
Windows
ntfy-desktop-win32-x64/ntfy-desktop.exe --hidden --hotkeyLinux
ntfy-desktop-linux-x64/ntfy-desktop --hidden --hotkeyMacOS
ntfy-desktop-darwin-x64/ntfy-desktop.app/Contents/MacOS/ntfy-desktop --hidden --hotkeyshell<br />build.bat
<br />
Build
There are numerous ways to build this application.
<br />
Method: Build Script
This method makes use of the
andbuild.shscripts provided in this repository. Find your operating system below and follow the instructions: <br />Windows
Install NodeJS with NPM by going to the following URL. Make sure to select your current operating system at the top:
<br />
- https://nodejs.org/en/download
Next, run the following commands in Powershell or Windows Command Prompt:
Clone ntfy-desktop repo, make sure you are in an EMPTY folder:
mkdir ntfy-desktop && cd ntfy-desktop/ git clone https://github.com/aetherinox/ntfy-desktop.git .install npm packages
npm install npm install -g electronbuild ntfy
./build.bat<br />
<br />
Linux
Run the following commands to install NodeJS + NPM, and then Ntfy Desktop:
shell
Install packages
sudo apt update sudo apt install git nodejs npm wine64create the needed folders
mkdir ntfy-desktop && cd ntfy-desktop/clone repo
git clone https://github.com/aetherinox/ntfy-desktop.git .install npm packages
npm install npm install -g electron-packagerset wine symlink
sudo ln -s /usr/bin/wine /usr/bin/wine64change permissions
sudo chmod +x build.shbuild ntfy
./build.sh<br />
<br />
MacOSX
Install NodeJS with NPM by going to the following URL. Make sure to select your current operating system at the top.
<br />
To install node / npm, download from:
- https://nodejs.org/en/download
<br />
To install Git on your system:
- https://git-scm.com/downloads/mac
<br />
Open your Terminal app and run the following commands:
<br />
shell
install git
brew install gitinstall wine
brew install --cask wine-stablecreate the needed folders
mkdir ntfy-desktop && cd ntfy-desktop/clone repo
git clone https://github.com/aetherinox/ntfy-desktop.git .install npm packages
npm install npm install -g electron-packagerset wine symlink
sudo ln -s /usr/bin/wine /usr/bin/wine64change permissions
sudo chmod +x build.shbuild ntfy
./build.shshell<br /> <br />package.jsonMethod: Package.json Command
You can also build your own copy of ntfy-desktop by executing the included
run commands. <br />npmSummary
To run the
commands, you must install NodeJS and NPM on your system. To install them, visit:package.json<br />
- https://nodejs.org/en/download
The
includes the commands listed below. Because the build commands have dynamic variables; you must run the command based on what operating system you are building from.npm run build:win:windowsIf you are building ntfy-desktop from a Windows machine:
npm run build:win:linuxnpm run build:win:mac<br />npm run build:lin:windowsIf you are building ntfy-desktop from a Linux or MacOS machine:
npm run build:lin:linuxnpm run build:lin:mac<br /> <br />Windows
Install NodeJS with NPM by going to the following URL. Make sure to select your current operating system at the top:
<br />
- https://nodejs.org/en/download
Next, run the following commands in Powershell or Windows Command Prompt:
create the needed folders
mkdir ntfy-desktop && cd ntfy-desktop/clone repo
git clone https://github.com/aetherinox/ntfy-desktop.git .install npm packages
npm install npm install -g electron-packagerbuild ntfy-desktop from Windows to Windows machine
npm run build:win:windowsbuild ntfy-desktop from Windows to Linux machine
npm run build:lin:windows<br >
<br >
Linux
Run the following commands to install NodeJS + NPM, and then Ntfy Desktop:
shell
Install NodeJS and NPM
sudo apt update sudo apt install git nodejs npm wine64create the needed folders
mkdir ntfy-desktop && cd ntfy-desktop/clone repo
git clone https://github.com/aetherinox/ntfy-desktop.git .install npm packages
npm install npm install -g electron-packagerset wine symlink
sudo ln -s /usr/bin/wine /usr/bin/wine64build ntfy-desktop from Linux to Windows machine
npm run build:lin:linuxbuild ntfy-desktop from Linux to Linux machine
npm run build:lin:windows<br />
<br />
MacOSX
Install NodeJS with NPM by going to the following URL. Make sure to select your current operating system at the top:
- https://nodejs.org/en/download
<br />
Install Git on your system next:
- https://git-scm.com/downloads/mac
<br />
Open your Terminal app and run the following commands:
shell
Install NodeJS and NPM
sudo apt update sudo apt install git nodejs npm wine64create the needed folders
mkdir ntfy-desktop && cd ntfy-desktop/clone repo
git clone https://github.com/aetherinox/ntfy-desktop.git .install npm packages
npm install npm install -g electron-packagerset wine symlink
sudo ln -s /usr/bin/wine /usr/bin/wine64build ntfy-desktop from Windows to MacOS machine
npm run build:win:macbuild ntfy-desktop from Linux toL MacOS machine
npm run build:lin:mac<br />
<br />
Tests
This repository contains tests in order to test the functionality of this project. We utilize a Github workflow to handle the automation, however, you can run the tests locally.
<br />
In order to run these tests, you must have some dependencies installed on your system or runner:
shell
sudo apt install xvfb -y
npm install
npx playwright install-deps
shell sudo apt install xvfb -y sudo apt-get install libasound2 libxslt-dev woff2 libevent-dev libopus0 \ libopus-dev libwebpdemux2 libharfbuzz-dev libharfbuzz0b libwebp-dev \ libenchant-2-dev libsecret-1-0 libsecret-1-dev libglib2.0-dev libhyphen0 \ libglfw3-dev libgles2-mesa-dev libudev1 libevdev2 libgles2-mesa yasm \ libudev1 libudev-dev libgudev-1.0-0 libx264-dev libgconf-2-4 libatk1.0-0 \ libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm-dev libnss3-dev \ libxss-dev -y npx playwright install<br />playwright install-depsIf you do not run the command
; then you will need to install all of the dependencies manually with the command:
shell cd ./src npm run test<br />npm installGithub Workflow
You can fork this repository and run the included Github workflows
<br />
- https://github.com/Aetherinox/ntfy-desktop/blob/f794bb835cb68a2b6da74d9161e7432c673179ea/.github/workflows/npm-tests.yml
In order for the workflow to work, your Github or self-hosted runner must have numerous dependencies installed. Ensure you do not remove the
andapt installcommands from the workflow; otherwise the tests will fail.<br />
Manual Test
You can also run the included tests manually without a Github workflow with the instructions below.
<br />
Playwright Tests
These tests specifically check the Electron app itself. They will attempt to open ntfy-desktop and make sure the application is in working order. These tests do NOT test the back-end code of the app.
<br />
You should see numerous windows open and multiple copies of Ntfy Desktop start up. This is normal, and is the test checking out the functionality of the application.
<br />
If you want to run the tests from a CI without having a GUI available to see the tests; you can run the command:
shell
xvfb-run --auto-servernum \
--server-args="-screen 0 1280x960x24" npx playwright test \
--trace on
<br />
If you want to run the tests, while having Electron running in debug / verbose mode; run the command:
shell
DISPLAY=:0 DEBUG=pw:browser xvfb-run \
--auto-servernum \
--server-args="-screen 0 1280x960x24" npx playwright test \
--trace on
<br />
The tests should show something similar to the following:
console
[chromium] › tests/main.spec.js:65:1 › ✅ ensure interface can fully load
✅ Open New Window: About
[webkit] › tests/main.spec.js:65:1 › ✅ ensure interface can fully load
✅ Open New Window: About
[chromium] › tests/main.spec.js:65:1 › ✅ ensure interface can fully load
✅ Saved screenshot: test-results/fullload_1749458422355.png
[webkit] › tests/main.spec.js:65:1 › ✅ ensure interface can fully load
[SubscriptionManager] No browser subscription currently exists, so web push was never enabled or the notification permission was removed. Skipping.
✅ Saved screenshot: test-results/fullload_1749458422373.png
[firefox] › tests/main.spec.js:143:1 › ✅ fail to sign into invalid account
ntfy
[chromium] › tests/main.spec.js:143:1 › ✅ fail to sign into invalid account
ntfy
[webkit] › tests/main.spec.js:143:1 › ✅ fail to sign into invalid account
ntfy
9 passed (15.3s)
To open last HTML report run:
npx playwright show-report
<br />
<br />
Vitest Tests
These tests check the back-end functionality of the app, including a lot of the functions that the source code comes with.
shell
cd ./src
npm run test:unit:run
<br />
The results for the tests will be printed in your terminal / command prompt.
shell
RUN v3.2.4 ntfy-desktop/src
✓ tests/storage.test.js (23 tests) 17ms ✓ tests/utils.test.js (26 tests) 31ms ✓ tests/logging.test.js (8 tests) 28ms
Test Files 3 passed (3) Tests 57 passed (57) Start at 10:19:17 Duration 577ms (transform 158ms, setup 0ms, collect 427ms, tests 76ms, environment 1ms, prepare 377ms)
<br />
<br />
Linting
This node package comes with ESlint, and a set of rules which should be followed. If you have intentions of creating new features and contributing to this repository; you must follow these linter rules. You can check the current status of your code by running:
shell
cd ./src
npm run lint
<br />
Any failures will be reported in console:
shell
ntfy-desktop\src\tests\storage.test.js
1:74 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
2:21 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
3:25 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
4:21 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
5:32 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
6:1 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
7:3 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
8:29 error Expected linebreaks to be 'LF' but found 'CRLF' @stylistic/linebreak-style
6:14 error A space is required after '[' @stylistic/array-bracket-spacing
6:29 error A space is required before ']' @stylistic/array-bracket-spacing
<br />
You must fix these before submitting a contribution. You can opt to automatically fix errors by running the command:
shell
npm run lint:fix
shell<br />sha256sum.txt.asc> [!WARNING] > Opting to automatically fix linting errors may result in mis-aligned brackets. Make sure these are fixed before submitting any pull requests.
<br />
<br />
Signed Releases
These steps allow you to validate the files
,sha1sum.txt.asc, andsha256sum.sigwhich we provide with every release.Validating these files helps ensure that the actual .zip or binary files you have downloaded indeed came from the real developer. Before you start reading the sections below; ensure you have the following packages installed:
<br />
- GPG
- sha1sum
- sha256sum
You can install these by running the commands:
Ubuntu / Debian Systems
sudo apt update sudo apt install gpg gnupg sha1sum sha256sumFedora / Redhat
(yum | or | dnf ) install gpg gnupgshell<br />.sigValidate .Sig
Each release includes two
files; these are known as a GPG Detached Signature.<br />
- sha1sum.sig
- sha256sum.sig
To validate that these signatures are good, download each of the files to your local machine:
sha1sum
wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha1sum.sigsha256sum
wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha256sum.sig<br />
Next, you will need the two associated files:
- sha1sum.txt.asc
- sha256sum.txt.asc
<br />
To download these, run the commands:
shell
sha1sum.txt.asc
wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha1sum.txt.ascsha256sum.txt.asc
wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha256sum.txt.asc<br />
Now we can validate that these files indeed came from the original developer; run the command:
shell
gpg --verify sha1sum.sig sha1sum.txt.asc
<br />
You should see the output:
shell
gpg: using RSA key 6921C2D3F6AE1188B7721C72F397BC89486A29A6
gpg: Good signature from "Binary Ninja (RSA 4096) shell gpg --verify sha256sum.sig sha256sum.txt.asc<br />sha256sum.sigNow validate the
with thesha256sum.txt.asc:
<br />
You should see the output:
shell
gpg: using RSA key 6921C2D3F6AE1188B7721C72F397BC89486A29A6
gpg: Good signature from "Binary Ninja (RSA 4096) shell curl -s https://github.com/BinaryServ.gpg | gpg --import<br />.zipIf you get the above results; you have validated the signature files.
<br />
<br />
Validate SHA256SUM
This section explains how you can validate the downloaded
files and see if they are indeed authentic from the original developer. Before you can validate these files, you need to download the public GPG key we use when we sign releases. You can download it by running the following command:
shell wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha256sum.txt.asc<br />sha256sum.txt.ascDownload the
and validate the file itself:
gpg --verify sha256sum.txt.asc
shell gpg: Signature made Mon 01 Jun 2025 00:00:00 UTC gpg: using RSA key 6921C2D3F6AE1188B7721C72F397BC89486A29A6 gpg: Good signature from "Binary Ninja (RSA 4096)<br />6921C2D3F6AE1188B7721C72F397BC89486A29A6You should see the following. The value
is the key's fingerprint.
<br />
You can view your existing GPG key fingerprints by running:
shell
gpg --list-keys --keyid-format=long --fingerprint --with-fingerprint
shell pub rsa4096 2025-04-21 [C] E8BA 8C94 B334 1673 0D8C 05C2 5769 7A1C BA63 B9FE uid [ unknown] Binary Ninja (RSA 4096)<br />692XXXXXThis will allow you to see where the
value comes from:
shell wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha256sum.sig<br />sha256sum.sigNext, download the
shell gpg --verify sha256sum.sig sha256sum.txt.asc<br />.sigTo validate the
file and yoursha256sumfile, run the command:
<br />
You should see:
shell
gpg: using RSA key 6921C2D3F6AE1188B7721C72F397BC89486A29A6
gpg: Good signature from "Binary Ninja (RSA 4096) shell<br />sha256sum.txt.ascYou can now validate the
file against the files you have downloaded from our repository. In order to verify that the files are legit, you must download them from the Releases page. They end with the extension.zip. You can also download them usingwget. Make sure you download the zip files to the same folder where you downloaded thesha256sum.txt.ascandsha256sum.sig
Download ntfy-desktop-2.1.1-darwin-amd64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-darwin-amd64.zipDownload ntfy-desktop-2.1.1-darwin-arm64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-darwin-arm64.zipDownload ntfy-desktop-2.1.1-linux-amd64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-linux-amd64.zipDownload ntfy-desktop-2.1.1-linux-arm64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-linux-arm64.zipDownload ntfy-desktop-2.1.1-linux-armv7l.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-linux-armv7l.zipDownload ntfy-desktop-2.1.1-win32-amd64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-win32-amd64.zipDownload ntfy-desktop-2.1.1-win32-arm64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-win32-arm64.zipDownload ntfy-desktop-2.1.1-win32-ia32.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-win32-ia32.zipshell gpg --output sha256sum.txt --verify sha256sum.txt.asc<br />sha256sum.txt.ascNext, extract the hashes from the hash digest
file by running the command:
shell sha256sum --check sha256sum.txt<br />sha256sum.txtThe command above will create a new file called
, now run that file with the programsha256sum:
<br />
Which will output:
shell
Successful validation
ntfy-desktop-2.1.1-win32-ia32.zip: OK ntfy-desktop-2.1.1-darwin-amd64.zip: OK ntfy-desktop-2.1.1-win32-amd64.zip: OK ntfy-desktop-2.1.1-win32-arm64.zip: OK ntfy-desktop-2.1.1-darwin-arm64.zip: OK ntfy-desktop-2.1.1-linux-armv7l.zip: OK ntfy-desktop-2.1.1-linux-amd64.zip: OK ntfy-desktop-2.1.1-linux-arm64.zip: OKFiles missing for validation
ntfy-desktop-2.1.1-linux-arm64.zip: FAILED open or readFile did not pass validation
ntfy-desktop-2.1.1-linux-arm64.zip: FAILEDshell curl -s https://github.com/BinaryServ.gpg | gpg --import<br />FAILEDIf you see
and the files are indeed there, ensure you downloaded them from our repository and not somewhere else.OK<br />
If you see
; this means the files are valid..zip<br />
Validate SHA1SUM
This section explains how you can validate the downloaded
files and see if they are indeed authentic from the original developer. Validating thesha1sum.txt.ascis similar to thesha256sum.txt.asc, first, download the public GPG key we use when we sign releases. You can download it by running the following command:
shell wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha1sum.txt.asc<br />sha1sum.txt.ascNext, download the
file:
shell gpg --verify sha1sum.txt.asc<br />sha1sum.txt.ascNow verify that the
is properly signed:
shell gpg: Signature made Mon 01 Jun 2025 00:00:00 UTC gpg: using RSA key 6921C2D3F6AE1188B7721C72F397BC89486A29A6 gpg: Good signature from "Binary Ninja (RSA 4096)<br />6921C2D3F6AE1188B7721C72F397BC89486A29A6You should see the following. The value
is the key's fingerprint.
<br />
You can view your existing GPG key fingerprints by running:
shell
gpg --list-keys --keyid-format=long --fingerprint --with-fingerprint
shell pub rsa4096 2025-04-21 [C] E8BA 8C94 B334 1673 0D8C 05C2 5769 7A1C BA63 B9FE uid [ unknown] Binary Ninja (RSA 4096)<br />692XXXXXThis will allow you to see where the
value comes from:
shell wget https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/sha1sum.sig<br />sha1sum.sigNext, download the
shell gpg --verify sha1sum.sig sha1sum.txt.asc<br />sha1sum.sigTo validate the
file and yoursha1sum.txt.ascfile, run the command:
<br />
You should see:
shell
gpg: using RSA key 6921C2D3F6AE1188B7721C72F397BC89486A29A6
gpg: Good signature from "Binary Ninja (RSA 4096) shell<br />sha1sum.txt.ascYou can now validate the
file against the files you have downloaded from our repository. In order to verify that the files are legit, you must download them from the Releases page. They end with the extension.zip. You can also download them usingwget. Make sure you download the zip files to the same folder where you downloaded thesha1sum.txt.ascandsha1sum.sig
Download ntfy-desktop-2.1.1-darwin-amd64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-darwin-amd64.zipDownload ntfy-desktop-2.1.1-darwin-arm64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-darwin-arm64.zipDownload ntfy-desktop-2.1.1-linux-amd64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-linux-amd64.zipDownload ntfy-desktop-2.1.1-linux-arm64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-linux-arm64.zipDownload ntfy-desktop-2.1.1-linux-armv7l.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-linux-armv7l.zipDownload ntfy-desktop-2.1.1-win32-amd64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-win32-amd64.zipDownload ntfy-desktop-2.1.1-win32-arm64.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-win32-arm64.zipDownload ntfy-desktop-2.1.1-win32-ia32.zip
wget \ https://github.com/Aetherinox/ntfy-desktop/releases/download/2.1.1/ntfy-desktop-2.1.1-win32-ia32.zipshell gpg --output sha1sum.txt --verify sha1sum.txt.asc<br />sha1sum.txt.ascNext, extract the hashes from the hash digest
file by running the command:
shell sha1sum --check sha1sum.txt<br />sha1sum.txtThe command above will create a new file called
, now run that file with the programsha1sum:
<br />
Which will output:
shell
Successful validation
ntfy-desktop-2.1.1-win32-ia32.zip: OK ntfy-desktop-2.1.1-darwin-amd64.zip: OK ntfy-desktop-2.1.1-win32-amd64.zip: OK ntfy-desktop-2.1.1-win32-arm64.zip: OK ntfy-desktop-2.1.1-darwin-arm64.zip: OK ntfy-desktop-2.1.1-linux-armv7l.zip: OK ntfy-desktop-2.1.1-linux-amd64.zip: OK ntfy-desktop-2.1.1-linux-arm64.zip: OKFiles missing for validation
ntfy-desktop-2.1.1-linux-arm64.zip: FAILED open or readFile did not pass validation
ntfy-desktop-2.1.1-linux-arm64.zip: FAILED `
If you see
FAILED and the files are indeed there, ensure you downloaded them from our repository and not somewhere else.
If you see
OK`; this means the files are valid.
Dependencies
Ntfy Desktop relies on the following packages, some of these are also made by us:
| Package | Language | Version | Description | --- | --- | --- | --- | | ntfy-toast | C++ | [![Version][ntfy-toast-github-version-img]][ntfy-toast-github-version-uri] | Command-line application which handles toast notifications on Windows 8 and newer | | toasted-notifier | Javascript | [![Version][toasted-notifier-npm-version-img]][toasted-notifier-npm-version-uri] | Node package which acts as a wrapper to send notification data between Ntfy Desktop and ntfy-toast | | electron-plugin-prompts | Javascript | [![Version][plugin-prompts-npm-version-img]][plugin-prompts-npm-version-uri] | Node package which allows for more detailed and customizable interface forms |
Contributors ✨
We are always looking for contributors. If you feel that you can provide something useful to this project, then we'd love to review your suggestion. Before submitting your contribution, please review the following resources:
Want to help but can't write code?
- Review active questions by our community and answer the ones you know.
!Alt
The following people have helped get this project going:
[plugin-prompts-npm-version-img]: https://img.shields.io/npm/v/electron-plugin-prompts?logo=npm&label=Version&color=ba5225 [plugin-prompts-npm-version-uri]: https://npmjs.com/package/electron-plugin-prompts
[toasted-notifier-npm-version-img]: https://img.shields.io/npm/v/toasted-notifier?logo=npm&label=Version&color=ba5225 [toasted-notifier-npm-version-uri]: https://npmjs.com/package/toasted-notifier
[ntfy-toast-github-version-img]: https://img.shields.io/github/v/tag/aetherinox/ntfy-toast?logo=GitHub&label=Version&color=ba5225 [ntfy-toast-github-version-uri]: https://github.com/aetherinox/ntfy-toast/releases
[general-npmjs-uri]: https://npmjs.com [general-nodejs-uri]: https://nodejs.org [general-npmtrends-uri]: http://npmtrends.com/ntfy-desktop
[github-version-img]: https://img.shields.io/github/v/tag/aetherinox/ntfy-desktop?logo=GitHub&label=Version&color=ba5225 [github-version-uri]: https://github.com/aetherinox/ntfy-desktop/releases
[npm-version-img]: https://img.shields.io/npm/v/ntfy-desktop?logo=npm&label=Version&color=ba5225 [npm-version-uri]: https://npmjs.com/package/ntfy-desktop
[pypi-version-img]: https://img.shields.io/pypi/v/ntfy-desktop [pypi-version-uri]: https://pypi.org/project/ntfy-desktop/
[license-mit-img]: https://img.shields.io/badge/MIT-FFF?logo=creativecommons&logoColor=FFFFFF&label=License&color=9d29a0 [license-mit-uri]: https://github.com/aetherinox/ntfy-desktop/blob/main/LICENSE
[github-downloads-img]: https://img.shields.io/github/downloads/aetherinox/ntfy-desktop/total?logo=github&logoColor=FFFFFF&label=Downloads&color=376892 [github-downloads-uri]: https://github.com/aetherinox/ntfy-desktop/releases
[npmjs-downloads-img]: https://img.shields.io/npm/dw/%40aetherinox%2Fntfy-desktop?logo=npm&&label=Downloads&color=376892 [npmjs-downloads-uri]: https://npmjs.com/package/ntfy-desktop
[github-size-img]: https://img.shields.io/github/repo-size/aetherinox/ntfy-desktop?logo=github&label=Size&color=59702a [github-size-uri]: https://github.com/aetherinox/ntfy-desktop/releases
[npmjs-size-img]: https://img.shields.io/npm/unpacked-size/ntfy-desktop/latest?logo=npm&label=Size&color=59702a [npmjs-size-uri]: https://npmjs.com/package/ntfy-desktop
[codecov-coverage-img]: https://img.shields.io/codecov/c/github/aetherinox/ntfy-desktop?token=MPAVASGIOG&logo=codecov&logoColor=FFFFFF&label=Coverage&color=354b9e [codecov-coverage-uri]: https://codecov.io/github/aetherinox/ntfy-desktop
[contribs-all-img]: https://img.shields.io/github/all-contributors/aetherinox/ntfy-desktop?logo=contributorcovenant&color=de1f6f&label=contributors [contribs-all-uri]: https://github.com/all-contributors/all-contributors
[github-build-img]: https://img.shields.io/github/actions/workflow/status/aetherinox/ntfy-desktop/npm-build.yml?logo=github&logoColor=FFFFFF&label=Build&color=%23278b30 [github-build-uri]: https://github.com/aetherinox/ntfy-desktop/actions/workflows/npm-build.yml
[github-build-pypi-img]: https://img.shields.io/github/actions/workflow/status/aetherinox/ntfy-desktop/app-pypi.yml?logo=github&logoColor=FFFFFF&label=Build&color=%23278b30 [github-build-pypi-uri]: https://github.com/aetherinox/ntfy-desktop/actions/workflows/app-pypi.yml
[github-tests-img]: https://img.shields.io/github/actions/workflow/status/aetherinox/ntfy-desktop/npm-tests.yml?logo=github&label=Tests&color=2c6488 [github-tests-uri]: https://github.com/aetherinox/ntfy-desktop/actions/workflows/npm-tests.yml?logo=github&label=Tests&color=2c6488 [github-tests-uri]: https://github.com/aetherinox/ntfy-desktop/actions/workflows/app-tests.yml.yml
[github-commit-img]: https://img.shields.io/github/last-commit/aetherinox/ntfy-desktop?logo=conventionalcommits&logoColor=FFFFFF&label=Last%20Commit&color=313131 [github-commit-uri]: https://github.com/aetherinox/ntfy-desktop/commits/main/