zlong_alert.zsh
will send a desktop notification and sound a
bell to alert you when a
command that has taken a long time (default: 15 seconds) has completed.
Desktop notifications are sent using notify-send
on Linux and using alerter
on MacOS.
Ensure that you downloaded the alerter binary from here, have placed it in your PATH, and given the file executable permissions before continuing with any of the installation methods.
zplug "kevinywlui/zlong_alert.zsh"
-
Download the plugin
a. Clone into
$ZSH_CUSTOM/plugins/zlong_alert
.or
b. if on archlinux you can use this aur package
-
Add
zlong_alert
toplugins
in.zshrc
.
Add in your ~/.zimrc
:
zmodule "kevinywlui/zlong_alert.zsh" --name zlong_alert
This script just needs to be sourced so add this to your .zshrc
:
source /path/to/zlong_alert.zsh
There are 7 variables you can set that will alter the behavior this script.
zlong_duration
(default:15
): number of seconds that is considered a long duration.zlong_ignore_cmds
(default:"vim ssh"
): commands to ignore (do not notify).zlong_ignore_pfxs
(default:"sudo time"
): prefixes to ignore (consider command in argument).zlong_send_notifications
(default:true
): whether to send notifications.zlong_terminal_bell
(default:true
): whether to enable the terminal bell.zlong_ignorespace
(default:false
): whether to ignore commands with a leading spacezlong_message
(default:'"Done: $cmd Time: $ftime"'
): define a custom message to display
For example, adding the following anywhere in your .zshrc
zlong_send_notifications=false
zlong_duration=2
zlong_ignore_cmds="vim ssh pacman yay"
will alert you, without sending a notification, if a command has lasted for more
than 2 seconds, provided that the command does not start with any of vim ssh pacman yay
.
zlong_message
requires very specific syntax in order to function correctly.
Arguments passed must be wrapped in single quotes and then doubles quotes in order
for the variables to be passed in correctly to the evaluation function. Currently,
the variables $cmd
and $ftime
are available to be included in your zlong_message
definition. Some notification clients (i.e. notify-send) allow both a heading and
a body message to be passed. Examples of how to do so are below:
zlong_message='"Done: $cmd Time: $ftime"'
zlong_message='"Finished ($ftime)" "$cmd"'
See CHANGELOG
This script is the result of me trying to understand and emulate this gist: https://gist.github.com/jpouellet/5278239 My version fixes some things (possibly bugs?) that I did not like about the original version.