136

I have a custom script and I want to send a desktop notification (the one that appears in the top right corner of the screen) with a custom message. How do I do that?

2
  • is there a C library that we can bind to for this? It would be nice to not have to launch an extra child process if possible. Mar 21, 2020 at 20:54
  • anyone know offhand how to do something similar on MacOS/Macbook pro? Mar 21, 2020 at 20:54

5 Answers 5

204

There are a bunch of other cool features with notify-send

We can run a command and make it display in the notification:

notify-send <title> <`command`>
notify-send Date "`date`"
notify-send Disk "`df / -H`"

We can use icons with the notifications

notify-send -i <icon> <Message>
notify-send -i face-wink "Hello! January"

Really annoying pop up

notify-send  -t 0 "Bringing down the system"

and

notify-send <title> <message>
notify-send "who am i" "I am January"

For more options check here

7
  • 2
    Thank you. Where can we get a list of icons, e.g. the face-wink that you used? Sep 24, 2012 at 10:56
  • 4
    check out my answer here
    – devav2
    Sep 24, 2012 at 13:07
  • notify-send -t 0 works but notify-send "who am i" "I am January" does not work :( - on ubuntu 15.10 May 23, 2016 at 9:19
  • 5
    Worked with --urgency=critical May 23, 2016 at 9:50
  • 2
    Installation on debian sudo apt install libnotify-bin.
    – user149244
    Feb 19, 2019 at 6:28
20

Just to add to the other answers, when running the command locally from cron, I use

DISPLAY=:0.0 /usr/bin/notify-send "TITLE" "MESSAGE"
2
  • This may fail if you currently used display appears to be at :1 or something else. I've noticed such things happen when e.g. Xorg crashes and gets restarted.
    – Ruslan
    Apr 29, 2020 at 12:00
  • To determine which display is used run echo $DISPLAY in console... Apr 21, 2022 at 19:50
18

I stumbled upon that one by chance. Answer: use the program notify-send:

notify-send "Hello world!"
6

I created a simple and almost-native script that plays Sound and displays a Notification with a Given Message and Time for Ubuntu (Gist):

#!/bin/sh

# https://gist.github.com/John-Almardeny/04fb95eeb969aa46f031457c7815b07d
# Create a Notification With Sound with a Given Message and Time
# The Downloaded Sound is from Notification Sounds https://notificationsounds.com/

MSSG="$1"
TIME="$2"

# install wget if not found
if ! [ -x "$(command -v wget)" ]; then 
    echo -e "INSTALLING WGET...\n\n"
    sudo apt-get install wget
    echo -e "\n\n"
fi

# install at package if not found
if ! [ -x "$(command -v at)" ]; then
    echo -e "INSTALLING AT...\n\n"
    sudo apt-get install at
    echo -e "\n\n"
fi

# install sox if not found
if ! [ -x "$(command -v sox)" ]; then
    echo -e "INSTALLING SOX...\n\n"
    sudo apt-get install sox
    sudo apt-get install sox libsox-fmt-all
    echo -e "\n\n"
fi

# download the noti sound if this is first time
# add alias to the bashrc file
if ! [ -f ~/noti/sound.mp3 ]; then
    echo -e "DOWNLOADING SOUND...\n\n"
    touch ~/noti/sound.mp3 | wget -O ~/noti/sound.mp3 "https://notificationsounds.com/wake-up-tones/rise-and-shine-342/download/mp3"
    sudo echo "alias noti=\"sh ~/noti/noti.sh\"" >> ~/.bashrc
    source ~/.bashrc        
    echo -e "\n\n"
fi

# notify with the sound playing and particular given message and time
echo "notify-send \""$MSSG\"" && play ~/noti/sound.mp3" | at $TIME

How To Use?

First Run - Setting Up:

  1. Create a new Directory at your home and call it noti

    mkdir ~/noti
    
  2. Download noti.sh and extract it to the above noti dir.

  3. Open Terminal and Change Directory to noti

    cd ~/noti
    
  4. Make noti.sh executable by issuing:

    sudo chmod +x noti.sh
    
  5. Run a Test like this:

    sh ~/noti/noti.sh "Test" "now"
    

Examples

noti "Hello From Noti" "now +1 minute"
noti "Hello From Noti" "now +5 minutes"
noti "Hello From Noti" "now + 1 hour"
noti "Hello From Noti" "now + 2 days"
noti "Hello From Noti" "4 PM + 2 days"
noti "Hello From Noti" "now + 3 weeks"
noti "Hello From Noti" "now + 4 months"
noti "Hello From Noti" "4:00 PM"
noti "Hello From Noti" "2:30 AM tomorrow"
noti "Hello From Noti" "2:30 PM Fri"
noti "Hello From Noti" "2:30 PM 25.07.18"

For Notifying The Finish of Process (example)

sudo apt-get update; noti "Done" "now"
4

There is also zenity - universal linux alternative to notify-send.

3
  • (Late, I know, but still valid) I disagree that this is an alternative, as zenity displays dialog boxes that don't go away by themselves.
    – noughtnaut
    Nov 16, 2020 at 20:31
  • 1
    @Noughtnaut, if I remember correct, there is customizable timeout.
    – ephemerr
    Nov 17, 2020 at 12:23
  • @Noughtnaut on the other hand notify-send's -t option is ignored by Ubuntu's Notify OSD and GNOME Shell. I could not make it work even in Xfce. (See the man page of it.)
    – jarno
    Mar 29, 2022 at 10:28

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .