Есть ли способ вызвать всплывающее уведомление от Vala MSYS2 на Windows 10? - PullRequest
0 голосов
/ 04 января 2019

Мне не нравится Windows, я просто хочу проверить, насколько кроссплатформенна Vala.

При использовании libnoyify вижу

    gavr@DESKTOP-B57MHT8 MINGW64 ~
$ ./notify.exe

** (notify.exe:6680): ERROR **: 15:50:47.138: notify.vala:13: Error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications is unknown

в таком коде

    public static int main (string[] args) {
        string summary = "Short summary";
        string body = "A long description";
        string icon = "dialog-information";

        Notify.init ("My test app");

        try {
            Notify.Notification notification = new Notify.Notification (summary, body, icon);
            notification.show ();
        } catch (Error e) {
            error ("Error

: %s", e.message);
    }
    return 0;
}

Так есть ли способ вызвать всплывающее уведомление от Vala?

Все, что я нашел, это это , но я не думаю, что он подходит для Windows 10, похоже, он остановился в 2011 году.

1 Ответ

0 голосов
/ 04 января 2019

Чтобы понять, что происходит, я разбью его на Vala, GTK +, системные уведомления и D-Bus.

Похоже, вы скомпилировали свою программу и запустили ее в Windows.Итак, Vala и компилятор C сделали свое дело и создали бинарный файл, работающий на Windows.Vala часто используется с графическим инструментарием GTK +, а GTK + использует разные GDK бэкэнды для таких вещей, как создание окон и обработка ввода.GTK + также использует различные Cairo backends для рендеринга виджетов на разных платформах.GDK и Cairo используют Windows API в Windows, Quartz API в macOS и т. Д.

Общесистемные уведомления не выглядят такими кроссплатформенными, как GDK и Cairo.Общим стандартом для Unix является спецификация уведомлений Freedesktop.org .Эта спецификация использует D-Bus для межпроцессного взаимодействия с общесистемной реализацией уведомлений.На Linux и других Unix-подобных платформах это работает довольно хорошо.Требования: D-Bus работает и есть реализация org.freedesktop.Notifications.

. В Windows я не уверен, работает ли D-Bus.Может быть реализация TCP для Windows, но в Unix используются сокеты Unix.Если D-Bus можно запустить в Windows, то также потребуется реализация org.freedesktop.Notifications, которая переводит сообщения D-Bus в Windows API для уведомлений.Так что это может быть возможно, но я не могу найти реализацию.

Обновление

Как указывает @AlexB GIO, GNotification предоставляет кроссплатформенные системные уведомления.Это включает org.freedesktop.Notifications, Flatpak , macOS и Windows .К сожалению, в настоящее время реализация Windows просто заполнитель .Существует проблема, чтобы исправить это .

...