Skip to content

Instantly share code, notes, and snippets.

Last active September 30, 2022 20:17
What would you like to do?
Script for the root to send desktop notifications to all active sessions
# notify-send-all - Script to send desktop notifications to all active sessions
### Utility functions
# A few utility functions to show errors, handle programa exit and more
PROGRAM_NAME="$(basename "$0")"
function error_exit() {
echo "${2:-"Unknown error"}" 1>&2
exit "${1:-1}"
### Loginctl commands
# Functions to make it easy to invoke some loginctl commands
function list-sessions() {
loginctl list-sessions --no-pager --no-legend | awk '{print $1}'
function show-session() {
local session_id=$1; shift
local property loginctl_params
for property in $@; do
loginctl_params="$loginctl_params -p $property"
loginctl show-session --no-pager --no-legend $loginctl_params $session_id
### Main function
function notify-send-all() {
local session_id
local Active Display Name
test "$UID" -eq 0 ||
error_exit 1 "You must be root to use this tool."
type -P notify-send &> /dev/null ||
error_exit 2 "The command notify-send was not found."
for session_id in $(list-sessions); do
eval $(show-session $session_id Active Display Name)
if [[ "$Active" == "yes" ]]; then
su "$Name" -c "DISPLAY=$Display notify-send "'"$@"' -- "$@"
exit 0
notify-send-all "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment