Code Monkey home page Code Monkey logo

growltotoast's Introduction

GrowlToToast

Implements a Growl Display with a companion program to forward them to Windows 10 Toast notifications (Action Center).

  • Sends Growl titles and messages
  • Supports configurable "silent" mode

Requirements

  • Windows 10

Installation

  1. Grab the latest release
  2. Run the MSI installer. This will install the application and create the "GrowlToToast.Toaster" shortcut in your Start Menu. The Start Menu shortcut must exist; it is required in order to display notifications as of Windows 10 v1709.
  3. Exit Growl if it is running.
  4. Run the "GrowlerInstaller" application. You can run this from the shortcut in your Start Menu, under the GrowlToToast folder. This will add the actual plugin to Growl. In most cases, simply installing it under the "Current User" location will be enough.
  5. Start Growl and enable the display in the Growl settings.

Development notes


Written for a SuperUser question.

(And a thanks to @JourneymanGeek for being my testing guinea pig, and @Jonno for the original SDK comment suggestion)

growltotoast's People

Contributors

bobvul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

barbedx

growltotoast's Issues

Request: Integration with Action Center

Hey man, thanks for making this Display for Growl-for-Windows.
It was super easy to install - just pasted the unzipped folder into the Displays folder of Growl, set it as default, and I was up and running!

Would it be possible to integrate the notifications into Action Center?
(So that, once they slide out of screen, if I miss the notification it'll be waiting for my attention in the Action Center!)

Thanks for your time and effort, and for putting this out for free!

Create a proper installer

This will likely be a two-stage installation: an MSI installer to unpack the application into Program Files (along with a start menu shortcut to fix #11), and a custom application to find and install the Growler (Display) component into the Growl folders.

Unfortunately there is no good way to migrate existing installs.

Support non-English languages (Unicode)

process.standardInput encoding problem - don't show cyrylic
Solution:
StreamWriter utf8Writer = new StreamWriter(proc.StandardInput.BaseStream, new UTF8Encoding(false));--disable bom characters
utf8Writer.Write(...);
utf8Writer.Close();

Temporary image files should be cleaned up

Currently we leave a lot of temp files lying around - one for each image. While they can be cleaned up using the Disk Cleanup utility, it's better if we tidy after ourselves.

Keep Toaster running in the background

In order to support callbacks (#4) we need to keep something running to receive clicks and report back to Growl.

Most likely will just be a windowless application with maybe a notification area icon. It should be per-user, so no system-wide service. Will likely need #9 to communicate with Growler, plus a mutex to single-instance it.

System-wide install uses the wrong path

From #15.

Because the Growl detector API lies and gives me the wrong path. It should be in common files instead.

Will either fix or remove the system-wide install option. It might not be worth the trouble.

Error running GrowlToToast

I'm getting the following error on launch. How can I get around this?

2019-07-01 09:53:01.063 +02:00 [ERR] Encountered exception, quitting
System.ArgumentNullException: Value cannot be null.
Parameter name: value
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at GrowlToToast.Toaster.Program.GetMessage(Options options) in C:\Users\User1\Documents\GrowlToToast\src\Toaster\Program.cs:line 151
   at GrowlToToast.Toaster.Program.<>c.<Main>b__2_0(Options options) in C:\Users\User1\Documents\GrowlToToast\src\Toaster\Program.cs:line 47
2019-07-01 09:54:08.665 +02:00 [ERR] Encountered exception, quitting
System.ArgumentNullException: Value cannot be null.
Parameter name: value
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at GrowlToToast.Toaster.Program.GetMessage(Options options) in C:\Users\User1\Documents\GrowlToToast\src\Toaster\Program.cs:line 151
   at GrowlToToast.Toaster.Program.<>c.<Main>b__2_0(Options options) in C:\Users\User1\Documents\GrowlToToast\src\Toaster\Program.cs:line 47
2019-07-01 09:55:23.171 +02:00 [ERR] Encountered exception, quitting
System.ArgumentNullException: Value cannot be null.
Parameter name: value
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at GrowlToToast.Toaster.Program.GetMessage(Options options) in C:\Users\User1\Documents\GrowlToToast\src\Toaster\Program.cs:line 151
   at GrowlToToast.Toaster.Program.<>c.<Main>b__2_0(Options options) in C:\Users\User1\Documents\GrowlToToast\src\Toaster\Program.cs:line 47

Scale images to prevent overflow/cropping

From #2:

You might want to think about scaling the images. As you can see in my attachment, the standard notification display scales the image to fit the quadratic frame. This is only an issue if the source application uses non-standard aspect ratios, so not strictly necessary if you assume to work with applications keeping to standard growl formats.

I don't actually know if Windows will crop or scale down too-large images, so this needs some testing.

Could probably pad extra space with transparent background to preserve aspect ratio.

Callback

Hi

great work on this.

Should callback to the originating application be working?
Is this possible and therefore could this be included in future developments?

font support

please to add other font support example arabic

Showing images in notification

Would it be possible to include Application images in the notifications like Visor or the default Notifications do it? This makes quickly identifying notification types a lot easier.

More reliable message passing

Because Growl itself is .NET 2.0 (3.5) while Win10 Toasts require 4.0 (4.5/4.6), we need to send messages between the in-Growl DLL and the ex-Growl exe.

Unfortunately, the command line argument as in the original design is not long enough for some images, as in #2.

The stdin messaging introduced in #2 does not appear to be completely reliable, at least in 1709 in some cases.

Need to find a better way. Perhaps named pipes with a persistent Toaster?

Android notifier error

GtT 2.0
Windows 10 Pro v 1803
Growl 2.0.9.1
MultiDroid notifier 0.51_x64 - https://code.google.com/archive/p/android-notifier/downloads\
Windows Java v 1.8.0_171

Android P preview on Google Pixel
Remote notifier 0.2.8

PC > Growl > Display > GTT > Preview > works as expected
Android > Remote notifier > Send test notification > works as expected when display set to (notGTT)

Android > Remote notifier > Send test > Error (see screen dump below, but no log file created at the file location in the first line)

untitled

Show and log errors

Currently errors are silently swallowed, or crash Toaster.

It's probably better if Toaster logged the messages and stack traces somewhere so they can be reported and fixed.

Also show a messagebox so the user is aware that a notification should have happened.

Should hopefully make issues like #6 easier to diagnose.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.