[Emacs] Add windows toast support to alert.el
This commit is contained in:
parent
67a72d3474
commit
67ee945f8d
@ -3843,9 +3843,20 @@ This is useful with server mode when editing gmail messages. I think that it is
|
|||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package alert
|
(use-package alert
|
||||||
:defer t
|
:defer t
|
||||||
|
:preface
|
||||||
|
(defun imalison:windows-toast-notify (info)
|
||||||
|
(let ((message (plist-get info :message))
|
||||||
|
(title (plist-get info :title)))
|
||||||
|
(shell-command (format "windows_toast '%s' '%s'" (or title "No title") (or message "No message")))))
|
||||||
:config
|
:config
|
||||||
(progn
|
(progn
|
||||||
(setq alert-default-style 'libnotify)))
|
(setq alert-default-style 'libnotify)
|
||||||
|
(when (not (string-empty-p (shell-command-to-string "grep -i microsoft /proc/version")))
|
||||||
|
(alert-define-style
|
||||||
|
'windows-toast
|
||||||
|
:title "Windows Toast"
|
||||||
|
:notifier 'imalison:windows-toast-notify)
|
||||||
|
(setq alert-default-style 'windows-toast))))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
** sauron
|
** sauron
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
17
dotfiles/lib/bin/windows-toast.ps1
Executable file
17
dotfiles/lib/bin/windows-toast.ps1
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
param($Title)
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
|
||||||
|
$Template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)
|
||||||
|
|
||||||
|
$RawXml = [xml] $Template.GetXml()
|
||||||
|
($RawXml.toast.visual.binding.text | Where-Object { $_.id -eq "1" }).AppendChild($RawXml.CreateTextNode($Title)) > $null
|
||||||
|
($RawXml.toast.visual.binding.text | Where-Object { $_.id -eq "2" }).AppendChild($RawXml.CreateTextNode($args[0])) > $null
|
||||||
|
|
||||||
|
$SerializedXml = New-Object Windows.Data.Xml.Dom.XmlDocument
|
||||||
|
$SerializedXml.LoadXml($RawXml.OuterXml)
|
||||||
|
|
||||||
|
$Toast = [Windows.UI.Notifications.ToastNotification]::new($SerializedXml)
|
||||||
|
$Toast.ExpirationTime = [DateTimeOffset]::Now.AddMinutes(30)
|
||||||
|
|
||||||
|
$Notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Emacs")
|
||||||
|
$Notifier.Show($Toast);
|
7
dotfiles/lib/functions/windows_toast
Executable file
7
dotfiles/lib/functions/windows_toast
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
function windows_toast {
|
||||||
|
powershell.exe -File ~/dotfiles/dotfiles/lib/bin/windows-toast.ps1 -Title "$@" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
windows_toast "$@"
|
Loading…
Reference in New Issue
Block a user