Ntfy - πŸ–₯οΈπŸ“±πŸ”” A utility for sending notifications, on demand and when commands finish.

Overview

About ntfy

Version Docs Build WinBuild Coverage SayThanks

ntfy brings notification to your shell. It can automatically provide desktop notifications when long running commands finish or it can send push notifications to your phone when a specific command finishes. Confused? This video demonstrates some of this functionality:

https://raw.githubusercontent.com/dschep/ntfy/master/docs/demo.gif

Quickstart

~/.ntfy.yml $ ntfy send "Pushover via config file!" $ ntfy done --pid 6379 # pid extra $ ntfy send ":tada: ntfy supports emoji! :100:" # emoji extra # Enable shell integration $ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc">
$ sudo pip install ntfy
$ ntfy send test
# send a notification when the command `sleep 10` finishes
# this sends the message '"sleep 10" succeeded in 0:10 minutes'
$ ntfy done sleep 10
$ ntfy -b pushover -o user_key t0k3n send 'Pushover test!'
$ ntfy -t 'ntfy' send "Here's a custom notification title!"
$ echo -e 'backends: ["pushover"]\npushover: {"user_key": "t0k3n"}' > ~/.ntfy.yml
$ ntfy send "Pushover via config file!"
$ ntfy done --pid 6379  # pid extra
$ ntfy send ":tada: ntfy supports emoji! :100:"  # emoji extra
# Enable shell integration
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc

Install

The install technique in the quickstart is the suggested method of installation. It can be installed in a virtualenv, but with some caveats: Linux notifications require --system-site-packages for the virtualenv and OS X notifications don't work at all.

🐧 NOTE: Linux Desktop Notifications require Python DBUS bindings. See here for more info.

Shell integration

ntfy has support for automatically sending notifications when long running commands finish in bash and zsh. In bash it emulates zsh's preexec and precmd functionality with rcaloras/bash-preexec. To enable it add the following to your .bashrc or .zshrc:

eval "$(ntfy shell-integration)"

By default it will only send notifications for commands lasting longer than 10 seconds and if the terminal is focused. Terminal focus works on X11(Linux) and with Terminal.app and iTerm2 on MacOS. Both options can be configured via the --longer-than and --foreground-too options.

To avoid unnecessary notifications when running interactive programs, programs listed in AUTO_NTFY_DONE_IGNORE don't generate notifications. For example:

export AUTO_NTFY_DONE_IGNORE="vim screen meld"

Extras

ntfy has a few features that require extra dependencies.
  • ntfy done -p $PID requires installing as pip install ntfy[pid]
  • emoji support requires installing as pip install ntfy[emoji]
  • XMPP support requires installing as pip install ntfy[xmpp]
  • Telegram support requires installing as pip install ntfy[telegram]
  • Instapush support requires installing as pip install ntfy[instapush]
  • Slack support requires installing as pip install ntfy[slack]
  • Slack Incoming webhook - simpler slack implementation that doesn't have additional dependencies
  • Rocket.Chat support requires installing as pip install ntfy[rocketchat]

To install multiple extras, separate with commas: e.g., pip install ntfy[pid,emoji].

Configuring ntfy

ntfy is configured with a YAML file stored at ~/.ntfy.yml or in standard platform specific locations:

  • Linux - ~/.config/ntfy/ntfy.yml
  • macOS - ~/Library/Application Support/ntfy/ntfy.yml
  • Windows - C:\Users\ \AppData\Local\dschep\ntfy.yml

Backends

The backends key specifies what backends to use by default. Each backend has its own configuration, stored in a key of its own name. For example:

---
backends:
    - pushover
pushover:
    user_key: hunter2
pushbullet:
    access_token: hunter2
simplepush:
    key: hunter2
slack:
    token: slacktoken
    recipient: "#slackchannel"
xmpp:
     jid: "[email protected]"
     password: "xxxx"
     mtype: "chat"
     recipient: "[email protected]"

If you want mulitple configs for the same backend type, you can specify any name and then specify the backend with a backend key. For example:

---
pushover:
    user_key: hunter2
cellphone:
    backend: pushover
    user_key: hunter2

See the backends below for available backends and options. As of v2.6.0 ntfy also supports 3rd party backends

Pushover - pushover

Required parameters:
  • user_key
Optional parameters:
  • sound
  • priority
  • expire
  • retry
  • callback
  • api_token - use your own application token
  • device - target a device, if omitted, notification is sent to all devices
  • url
  • url_title
  • html

Pushbullet - pushbullet

Required parameter:
Optional parameters:
  • device_iden - a device identifier, if omited, notification is sent to all devices
  • email - send notification to pushbullet user with the specified email or send an email if they aren't a pushullet user

Simplepush - simplepush

Required parameter:
  • key - Your Simplepush key, created by installing the Android App (no registration required) at https://simplepush.io
Optional parameters:
  • event - sets ringtone and vibration pattern for incoming notifications (can be defined in the simplepush app)

XMPP - xmpp

Requires parameters:
  • jid
  • password
  • recipient
Optional parameters
  • hostname (if not from jid)
  • port
  • path_to_certs
  • mtype

Requires extras, install like this: pip install ntfy[xmpp].

To verify the SSL certificates offered by a server: path_to_certs = "path/to/ca/cert"

Without dnspython library installed, you will need to specify the server hostname if it doesn't match the jid.

Specify port if other than 5222. NOTE: Ignored without specified hostname

NOTE: Google Hangouts doesn't support XMPP since 2017

Telegram - telegram

Requires extras, install like this: pip install ntfy[telegram].

Requires ntfy to be installed as ntfy[telegram]. This backend is configured the first time you will try to use it: ntfy -b telegram send "Telegram configured for ntfy".

Pushjet - pushjet

Required parameter:
Optional parameters:
  • endpoint - custom Pushjet API endpoint
    (defaults to https://api.pushjet.io)
  • level - The importance level from 1(low) to 5(high)
  • link

Notifico - notifico

Required parameter:
  • webhook - The webhook link, created at https://n.tkte.ch/
    (choose Plain Text service when creating the webhook)

Slack - slack

Requires extras, install like this: pip install ntfy[slack].

Required parameter:
  • token - The Slack service secret token, either a legacy user token created at https://api.slack.com/custom-integrations/legacy-tokens or a token obtained by creating an app at https://api.slack.com/apps?new_app=1 with chat:write:bot scope and linking it to a workspace.
  • recipient - The Slack channel or user to send notifications to. If you use the # symbol the message is send to a Slack channel and if you use the @ symbol the message is send to a Slack user.

Slack Incoming Webhook - slack_webhook

Required parameter:
  • url - the URL of the incoming webhook
  • user - The Slack channel or user to send notifications to

Instapush - insta

Requires extras, install like this pip install ntfy[instapush].

Instapush does not support notification title. It sends template-driven notifications, so you have to setup you events on the dashboard first. The backend is called insta due to homonymy with the instapush python wrapper

Required parameters:
  • appid - The application id
  • secret - The application secret
  • event_name - The instapush event to be used
  • trackers - The array of trakers to use

Note on trackers: Trackers are placeholders for events (a sort of notification template). If you defined more than one tracker in your event you'll have to provide more messages. At the moment, the only way to do so is to separate each message with a colon (:) character. You can also escape the separator character: Example:

ntfy -b insta send "message1:message2"
ntfy -b insta send "message1:message2\:with\:colons"

Prowl - prowl

Optional parameters:
  • api_key
  • provider_key
  • priority
  • url

Linux Desktop Notifications - linux

Works via dbus, works with most DEs like Gnome, KDE, XFCE and with libnotify.

The following dependecies should be installed.

$ sudo apt install python-dbus # on ubuntu/debian

You will need to install some font that supports emojis (in Debian fonts-symbola or Gentoo media-fonts/symbola).

Optional parameters:
  • icon - Specifies path to the notification icon, empty string for no icon.
  • urgency - Specifies the urgency level (low, normal, critical).
  • transient - Skip the history (exp: the Gnome message tray) (true, false).
  • soundfile - Specifies the notification sound file (e.g. /usr/share/sounds/notif.wav).
  • timeout - Specifies notification expiration time level (-1 - system default, 0 - never expire).

Windows Desktop Notifications - win32

Uses pywin32.

Mac OS X Notification Center - darwin

Requires ntfy to be installed globally (not in a virtualenv).

System log - systemlog

Uses the syslog core Python module, which is not available on Windows platforms.

Optional parameters:
  • prio - Syslog priority level. Default is ALERT. Possible values are:

    • EMERG
    • ALERT
    • CRIT
    • ERR
    • WARNING
    • NOTICE
    • INFO
    • DEBUG
  • facility - Syslog facility. Default is LOCAL5. Possible values are:

    • KERN
    • USER
    • MAIL
    • DAEMON
    • AUTH
    • LPR
    • NEWS
    • UUCP
    • CRON
    • SYSLOG
    • LOCAL0
    • LOCAL1
    • LOCAL2
    • LOCAL3
    • LOCAL4
    • LOCAL5
    • LOCAL6
    • LOCAL7
  • fmt - Format of the message to be sent to the system logger. The title and the message are specified using the following placeholders:

    • {title}
    • {message}

    Default is [{title}] {message}.

Termux:API - termux

Requires the app to be install from the Play store and the CLI utility be installed with apt install termux-api.

Pushalot - pushalot

Required parameter:
Optional parameters:
  • source - source of the notification
  • ttl - message expire time in minutes (time to live)
  • url - URL to include in the notifications
  • url_title - visible URL title (ignored if no url specified)
  • image - URL of image included in the notifications
  • important - mark notifications as important
  • silent - mark notifications as silent

Rocket.Chat - rocketchat

Requires extras, install like this: pip install ntfy[rocketchat].

Required parameters:
  • url - URL of your Rocket.Chat instance
  • username - login username
  • password - login password
  • room - room/channel name to post in

Matrix.org - matrix

Requires extras, install like this: pip install ntfy[matrix].

Required parameters:
  • url - URL of your homeserver instance
  • roomId - room to post in
  • userId - login userid
  • password - login password
  • token - access token

You must either specify token, or userId and password.

Webpush - ntfy_webpush

Webpush support is provded by an external ntfy module, install like this: pip install ntfy ntfy-webpush.

Required parameters:
  • subscription_info - A PushSubscription Object
  • private_key - the path to private key file or anything else that works with pywebpush.

For more info, see ntfy-webpush <https://github.com/dschep/ntfy-webpush>`_

3rd party backends

To use or implement your own backends, specify the full path of the module as your backend. The module needs to contain a module with a function called notify with the following signature:

def notify(title, message, **kwargs):
    """
    kwargs contains retcode if using ntfy done or ntfy shell-integration
    and all options in your backend's section of the config
    """
    pass

Other options

Title is configurable with the title key in the config. Example:

---
title: Customized Title

Backends ToDo

Testing

python setup.py test

Contributors

Comments
  • xmpp config?

    xmpp config?

    Hello,

    I've instaledl 'ntfy[xmpp]' but I don't know what the yml file needs to look like and how I connect it to a xmpp server. Do you have any documentation that can be shared so I can set it up?

    Thanks, sean

    opened by jungle-boogie 19
  • ntfy done: error: argument --formatter: expected 3 arguments

    ntfy done: error: argument --formatter: expected 3 arguments

    % ls -l
    ...
    ntfy done: error: argument --formatter: expected 3 arguments
    

    This is with the single binary and with zsh AUTO_NTFY_DONE setup. Will I need to continue to use pip for auto shell integration?

    bug 
    opened by jungle-boogie 12
  • QTKit error on installing on macOS 10.12.1

    QTKit error on installing on macOS 10.12.1

    Apparently QTKit has been removed in 10.12.1 and installation is producing an error:

        overriding build_packages to copy PyObjCTest
        creating build
        creating build/lib.macosx-10.11-x86_64-3.5
        creating build/lib.macosx-10.11-x86_64-3.5/QTKit
        copying Lib/QTKit/__init__.py -> build/lib.macosx-10.11-x86_64-3.5/QTKit
        copying Lib/QTKit/_metadata.py -> build/lib.macosx-10.11-x86_64-3.5/QTKit
        creating build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/__init__.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtcaptureconnection.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_QTCaptureDecompressedVideoOutput.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtcapturedevice.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_QTCaptureFileOutput.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_QTCaptureSession.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_QTCaptureVideoPreviewOutput.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_QTCaptureView.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_QTCompressionOptions.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtdatareference.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qterror.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtexportoptions.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtexportsession.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtformatdescription.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtkitdefines.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtmedia.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtmetadataitem.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtmovie.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtmoviemodernizer.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_QTMovieView.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtsamplebuffer.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qttime.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qttimerange.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qttrack.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        copying PyObjCTest/test_qtutilities.py -> build/lib.macosx-10.11-x86_64-3.5/PyObjCTest
        running build_ext
        building 'QTKit._QTKit' extension
        creating build/temp.macosx-10.11-x86_64-3.5/Modules
        clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Ibuild/temp.macosx-10.11-x86_64-3.5/pyobjc-include -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -c Modules/_QTKit.m -o build/temp.macosx-10.11-x86_64-3.5/Modules/_QTKit.o -DPyObjC_BUILD_RELEASE=1012 -Wno-deprecated-declarations
        Modules/_QTKit.m:6:9: fatal error: 'QTKit/QTKit.h' file not found
        #import <QTKit/QTKit.h>
                ^
        1 error generated.
        error: command 'clang' failed with exit status 1```
    
    opened by nuin 8
  • WIP of #125: screen locking detection

    WIP of #125: screen locking detection

    separate backends implemented via a 'multi' meta-backend. Uses config like this:

    backends: [multi]
    multi:
        locked:
            pushover:
                user_key: user-api-key
        unfocused:
            default: {}
        focused: {}
    
    

    This config would cause no notifications if the shell is focused, desktop notifications when unfocused, and pushover notifications when the screen is locked. Freaking magic. :tada:

    Currently supports linux :penguin: with xscreensaver, lightlocker(detection seems iffy), and Gnome.

    There's also a --locked-only cli option.

    Todo:

    • [ ] macOS :apple: support
    • [ ] Windows :flags: support
    • [ ] a better solution than the multi module
    • [ ] documentation
    opened by dschep 7
  • Fix integration tests

    Fix integration tests

    • Always check return value of ntfy_main (no longer using exceptions)
    • Do not use a dict as the default of args.option

    The latter accidentally shared state across tests, breaking all integration tests. However, this was hidden because exceptions are now caught and integration tests were not checking return values.

    opened by sambrightman 7
  • WARNING: Failed to send notification using linux

    WARNING: Failed to send notification using linux

    After installing the dependencies, I tried ntfy.

    [email protected]:~# ntfy -b linux -v send 'test'
    WARNING: Failed to send notification using linux
    [email protected]:~# ntfy send test
    WARNING: Failed to send notification using linux
    [email protected]:~# ntfy done sleep 2
    WARNING: Failed to send notification using linux
    

    Without any other exceptions showing, I can not find out the root cause.

    question 
    opened by dixudx 7
  • Fix #77 - Stop throwing exceptions if $WINDOWID has not been set.

    Fix #77 - Stop throwing exceptions if $WINDOWID has not been set.

    Traceback (most recent call last):                                                                                                                                                                                 
      File "/usr/bin/ntfy", line 11, in <module>
        load_entry_point('ntfy==2.4.1', 'console_scripts', 'ntfy')()
      File "/usr/lib/python3.6/site-packages/ntfy/cli.py", line 341, in main
        message, retcode = args.func(args)
      File "/usr/lib/python3.6/site-packages/ntfy/cli.py", line 64, in run_cmd
        if args.unfocused_only and is_focused():
      File "/usr/lib/python3.6/site-packages/ntfy/terminal.py", line 61, in is_focused
        return linux_window_is_focused()
      File "/usr/lib/python3.6/site-packages/ntfy/terminal.py", line 15, in linux_window_is_focused
        return int(environ['WINDOWID']) == window_id
      File "/usr/lib/python3.6/os.py", line 669, in __getitem__
        raise KeyError(key) from None
    KeyError: 'WINDOWID'
    

    The KeyError comes from the usage of environ["WINDOWID"]. What should be used instead is the get method, e.g. environ.get("WINDOWID") which return None if the key is missing. Of course None is also a non-valid argument for int() but I think that defaulting to 0 is reasonable.

    opened by pmav99 6
  • Arch Linux: No such file or directory xprop

    Arch Linux: No such file or directory xprop

    In Arch after installing via pip and adding the eval to my zshrc I would get this:

    Traceback (most recent call last):
      File "/usr/bin/ntfy", line 11, in <module>
        sys.exit(main())
      File "/usr/lib/python3.5/site-packages/ntfy/cli.py", line 341, in main
        message, retcode = args.func(args)
      File "/usr/lib/python3.5/site-packages/ntfy/cli.py", line 64, in run_cmd
        if args.unfocused_only and is_focused():
      File "/usr/lib/python3.5/site-packages/ntfy/terminal.py", line 61, in is_focused
        return linux_window_is_focused()
      File "/usr/lib/python3.5/site-packages/ntfy/terminal.py", line 14, in linux_window_is_focused
        '_NET_ACTIVE_WINDOW']).split()[1], 16)
      File "/usr/lib/python3.5/subprocess.py", line 626, in check_output
        **kwargs).stdout
      File "/usr/lib/python3.5/subprocess.py", line 693, in run
        with Popen(*popenargs, **kwargs) as process:
      File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
        restore_signals, start_new_session)
      File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
        raise child_exception_type(errno_num, err_msg)
    FileNotFoundError: [Errno 2] No such file or directory: 'xprop'
    

    After installing the Arch package xorg-xprop it works.

    bug 
    opened by austinbutler 6
  • ERROR: Invalid backend xmpp

    ERROR: Invalid backend xmpp

    $  sudo -H pip install ntfy[XMPP]
    Requirement already satisfied (use --upgrade to upgrade): ntfy[XMPP] in /usr/local/lib/python2.7/dist-packages
      ntfy 2.2.0 does not provide the extra 'XMPP'
    Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python2.7/dist-packages (from ntfy[XMPP])
    Requirement already satisfied (use --upgrade to upgrade): ruamel.yaml in /usr/local/lib/python2.7/dist-packages (from ntfy[XMPP])
    Requirement already satisfied (use --upgrade to upgrade): appdirs in /usr/local/lib/python2.7/dist-packages (from ntfy[XMPP])
    Requirement already satisfied (use --upgrade to upgrade): ruamel.ordereddict in /usr/local/lib/python2.7/dist-packages (from ruamel.yaml->ntfy[XMPP])
    Requirement already satisfied (use --upgrade to upgrade): typing in /usr/local/lib/python2.7/dist-packages (from ruamel.yaml->ntfy[XMPP])
    
    $ ntfy -v -b xmpp send 'XMPP test!'
    ERROR: Invalid backend xmpp
    
    $ cat  ~/.config/ntfy/ntfy.yml
    
    
    ---
    backends:
            - xmpp
    xmpp:
            jid: "[email protected]"
            password: "XXXXXXX"
            hostname: "domain.tld"
            port: "62285"
            mtype: "chat"
            recipient: "[email protected]"
    

    @danryder Am I missing something?

    question 
    opened by tristan-k 6
  • Using ntfy background shell?

    Using ntfy background shell?

    I want to use ntfy to notify me from my headless serve (ubuntu 14). A script starts at inserting a disc in the drive SUBSYSTEM=="block", KERNEL=="sr0", ACTION=="change", RUN+="/usr/local/bin/add-disc.sh" In add-disc.sh i do some differnet things (in the backgrond -> headless) and want be notified via ntfy. All commandos in add-disc.sh works - not nfty. Is there a parameter to let nfty work in background?

    opened by grkngls 6
  • XDG base dirs?

    XDG base dirs?

    Should I use XDG Base dirs for the config? EG: ~/.config/ntfy/ntfy.yml instead of ~/.ntfy.yml. Use ~/Library/Appplication Support/ntfy/ntfy.yml on Mac? Windows???

    ref: http://stackoverflow.com/questions/3373948/equivalents-of-xdg-config-home-and-xdg-data-home-on-mac-os-x

    opened by dschep 6
  • feature: support customizing icons depending on the result code

    feature: support customizing icons depending on the result code

    hello,

    I love the tool so versatile and useful

    i think this could be a great idea to support customizing the icon based on the result code

    exemple: "βœ… sleep 30 succeeded" "❗️ slip 30 failed"

    my personal concern is for darwin but it could nice for others backends too

    opened by fredleger 0
  • Support python3.11

    Support python3.11

    In python3.11 inspect.getargspec removed at last (after deprecation in 3.0). Proposed fix:

    try:
        from inspect import getargspec
    except ImportError:
        from inspect import getfullargspec
        def getargspec(f):
            return tuple(getfullargspec(f))[:4]
    
    opened by pyhedgehog 1
  • Can not use shell variable as message

    Can not use shell variable as message

    I am using ntfy with in shell script. A python script prints a string which is assigned to a variable and I can echo the variable. But if I use this as ntfy -t "Title" send $var it returns an error. Is there a way to use a variable as ntfy's input?

    opened by Fuad-HH 1
  • Not auto starting after reboot

    Not auto starting after reboot

    I have motorola g82 phone with android 12. Ntfy doesn't start when phone reboots and there seems to be no option.

    As far as I can see, there is permission for this, however, Permission option is grayed for ntfy as it apparently doesnt need any.

    Is it possible to add this permission or app might not be useful on phones withour root.

    opened by majkinetor 0
  • Add compatibility with emoji 2.0

    Add compatibility with emoji 2.0

    Emoji deprecated the use_alias parameter in 1.6.2. This changes our use to the new API which exists since that version. Without this change, ntfy cannot be used with emoji 2.0 or higher.

    opened by theMarix 0
Releases(v2.4.4)
Owner
Daniel Schep
Maps, Python, Bikes, Serverless, & More
Daniel Schep
Command-line script to upload videos to Youtube using theYoutube APIv3.

Introduction Command-line script to upload videos to Youtube using theYoutube APIv3. It should work on any platform (GNU/Linux, BSD, OS X, Windows, ..

Arnau Sanchez 1.9k Jan 09, 2023
πŸ“¦ A command line utility to put text in a box.

boxie A command line utility to put text in a box. Installation pip install boxie If you are on Linux you may need to use sudo to access this globally

Eliaz Bobadilla 10 Jun 30, 2022
This is a Command Line program to interact with your NFTs, Cryptocurrencies etc

This is a Command Line program to interact with your NFTs, Cryptocurrencies etc. via the ThirdWeb Platform. This is just a fun little project that I made to be able to connect to blockchains and Web3

Arpan Pandey 5 Oct 02, 2022
Automaton - python script to execute bash command based on changes in size of a file.

automaton python script to execute given command = everytime size of a given file changes,hence everytime a file is modified.(almost) download automa

asrar bhat 1 Jan 03, 2022
dbt-subdocs is a python CLI you can used to generate a dbt-docs for a subset of your dbt project

dbt-subdocs dbt-subdocs is a python CLI you can used to generate a dbt-docs for a subset of your dbt project πŸ€” Description This project is useful if

Jambe 6 Jan 03, 2023
A CLI/Shell supporting OpenRobot API and more!

A CLI/Shell supporting JeyyAPI, OpenRobot API and RePI API.

OpenRobot Packages 1 Jan 06, 2022
My dotfiles -My configuration, with installations steps.

.dotfiles My configuration, with installations steps. Installation Oh My ZSH Install with this command: sh -c "$(curl -fsSL https://raw.githubusercont

Luca Angioloni 4 Dec 14, 2022
Tiny command-line utility for mapping broken keys to other positions.

brokenkey Tiny command-line utility for mapping broken keys to other positions. Installation Clone this repository using git: git clone https://github

0 Oct 04, 2021
πŸͺ› A simple pydantic to Form FastAPI model converter.

pyfa-converter Makes it pretty easy to create a model based on Field [pydantic] and use the model for www-form-data. How to install? pip install pyfa_

20 Dec 22, 2022
Dart Version Manager CLI implemented with Python and Typer.

Dart Version Manager CLI implemented with Python and Typer.

EducUp 6 Jun 26, 2022
swarmexec executes command in swarm service

Swarmexec swarmexec executes command in swarm service Install pip install git+https://github.com/filimon43g/swarmexec.git Config In swarm_config.ini

Phil 2 Nov 23, 2021
A command line tool to remove background from video and image

A command line tool to remove background from video and image, brought to you by BackgroundRemover.app which is an app made by nadermx powered by this tool

Johnathan Nader 1.7k Jan 01, 2023
Proman is a simple tool for managing projects through cli.

proman proman is a project manager. It helps you manage your projects from a terminal. The features are listed below. Installation Step 1: Download or

Arjun Somvanshi 2 Dec 06, 2021
A simple python implementation of a reverse shell

llehs A python implementation of a reverse shell. Note for contributors The project is open for contributions and is hacktoberfest registered! llehs u

Archisman Ghosh 2 Jul 05, 2022
pls is a better ls for developers, pronounced /pliːz/ as in 'please'

pls is a better ls for developers. The "p" stands for ("pro" as in "professional"/"programmer") or "prettier". It works in a manner similar to ls, in

Dhruv Bhanushali 572 Dec 28, 2022
A webmining CLI tool & library for python.

minet is a webmining command line tool & library for python (= 3.6) that can be used to collect and extract data from a large variety of web sources

mΓ©dialab Sciences Po 165 Dec 17, 2022
WazirX Portfolio Tracker on your Terminal!

If you have been investing in crypto in India, there is a very good chance that you are using WazirX. If you are using WazirX, then you definitely know that there is no P&L report, no green arrows no

Raunit 15 Jan 10, 2022
ICMP Reverse Shell written in Python 3 and with Scapy (backdoor/rev shell)

icmpdoor - ICMP Reverse Shell icmpdoor is an ICMP rev shell written in Python3 and scapy. Tested on Ubuntu 20.04, Debian 10 (Kali Linux), and Windows

Jeroen van Kessel 206 Dec 29, 2022
A python package to display progress of loops to the user

ProgressBars A python package to display progress of loops to the user. Installation This package can be installed using pip. pip install progressbars

Matthias 3 Jan 16, 2022
This tool is a free and unlimited python CLI for google translate. based on google_trans_new.

GoTransPy A free and unlimited python CLI for google translate based on google_trans_new. It's very easy to use and solve the problem that the old api

Youssef Mohamed 2 Jan 10, 2022