Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Ohmyzsh
Commits
ff3e0d53
Commit
ff3e0d53
authored
Sep 19, 2015
by
Robby Russell
Browse files
Merge pull request #4266 from t413/master
Bring bgnotify plugin up to date with t413/zsh-background-notify
parents
3b5300c2
e8639c70
Changes
1
Hide whitespace changes
Inline
Side-by-side
plugins/bgnotify/bgnotify.plugin.zsh
View file @
ff3e0d53
...
...
@@ -11,31 +11,38 @@ autoload -Uz add-zsh-hook || { print "can't add zsh hook!"; return }
## definitions ##
if
!
(
type
bgnotify_formatted |
grep
-q
'function'
)
;
then
function
bgnotify_formatted
{
## exit_status, command, elapsed_time
[
$1
-eq
0
]
&&
title
=
"#win (took
$3
s)"
||
title
=
"#fail (took
$3
s)"
bgnotify
"
$title
"
"
$2
"
if
!
(
type
bgnotify_formatted |
grep
-q
'function'
)
;
then
## allow custom function override
function
bgnotify_formatted
{
## args: (exit_status, command, elapsed_seconds)
elapsed
=
"
$((
$3
%
60
))
s"
((
$3
>=
60
))
&&
elapsed
=
"
$((
(
$3
%
3600
)
/
60
))
m
$elapsed
"
((
$3
>=
3600
))
&&
elapsed
=
"
$((
$3
/
3600
))
h
$elapsed
"
[
$1
-eq
0
]
&&
bgnotify
"#win (took
$elapsed
)"
"
$2
"
||
bgnotify
"#fail (took
$elapsed
)"
"
$2
"
}
fi
currentWindowId
()
{
if
hash
osascript 2>/dev/null
;
then
#osx
osascript
-e
'tell application (path to frontmost application as text) to id of front window'
2&> /dev/null
||
echo
"0"
elif
hash
notify-send 2>/dev/null
;
then
#ubuntu!
xprop
-root
|
awk
'/NET_ACTIVE_WINDOW/
{
print $5;
exit }'
elif
(
hash
notify-send 2>/dev/null
||
hash
kdialog 2>/dev/null
)
;
then
#ubuntu!
xprop
-root
2> /dev/null
|
awk
'/NET_ACTIVE_WINDOW/
{
print $5;
exit} END{exit !$5}'
||
echo
"0"
else
echo
$EPOCHSECONDS
#fallback for windows
fi
}
bgnotify
()
{
bgnotify
()
{
## args: (title, subtitle)
if
hash
terminal-notifier 2>/dev/null
;
then
#osx
terminal-notifier
-message
"
$2
"
-title
"
$1
"
[[
"
$TERM_PROGRAM
"
==
'iTerm.app'
]]
&&
term_id
=
'com.googlecode.iterm2'
;
[[
"
$TERM_PROGRAM
"
==
'Apple_Terminal'
]]
&&
term_id
=
'com.apple.terminal'
;
## now call terminal-notifier, (hopefully with $term_id!)
[
-z
"
$term_id
"
]
&&
terminal-notifier
-message
"
$2
"
-title
"
$1
"
>
/dev/null
||
terminal-notifier
-message
"
$2
"
-title
"
$1
"
-activate
"
$term_id
"
-sender
"
$term_id
"
>
/dev/null
elif
hash
growlnotify 2>/dev/null
;
then
#osx growl
growlnotify
-m
"
$1
"
"
$2
"
elif
hash
notify-send 2>/dev/null
;
then
#ubuntu!
elif
hash
notify-send 2>/dev/null
;
then
#ubuntu
gnome
!
notify-send
"
$1
"
"
$2
"
elif
hash
kdialog 2>/dev/null
;
then
#ubuntu kde!
kdialog
-title
"
$1
"
--passivepopup
"
$2
"
5
elif
hash
notifu 2>/dev/null
;
then
#cygwyn support!
notifu /m
"
$2
"
/p
"
$1
"
fi
...
...
@@ -46,7 +53,7 @@ bgnotify () {
bgnotify_begin
()
{
bgnotify_timestamp
=
$EPOCHSECONDS
bgnotify_lastcmd
=
$1
bgnotify_lastcmd
=
"
$1
"
bgnotify_windowid
=
$(
currentWindowId
)
}
...
...
@@ -63,5 +70,8 @@ bgnotify_end() {
bgnotify_timestamp
=
0
#reset it to 0!
}
add-zsh-hook preexec bgnotify_begin
add-zsh-hook precmd bgnotify_end
## only enable if a local (non-ssh) connection
if
[
-z
"
$SSH_CLIENT
"
]
&&
[
-z
"
$SSH_TTY
"
]
;
then
add-zsh-hook preexec bgnotify_begin
add-zsh-hook precmd bgnotify_end
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment