LINUX.ORG.RU

Интерактивные уведомления через bash

 ,


0

2

Использую Linux Mint MATE. Появилась необходимость создавать уведомления с кнопкой. Как я понимаю, в простом notify-send такой функции нет. Нашел информацию о zenity - не совсем то, что мне нужно. Видел в интернете упоминания, что такие функции может выполнять встроенное в оболочку приложение. Подскажите, пожалуйста, как реализовать подобные notification?


Ответ на: комментарий от shell-script

не знаю твоей задачи

Задача проста. При появлении нотиса что бы в нем было, например 3 кнопки, каждая из которых отвечает за запуск определенного действия/скрипта. Мне нужна только реализация кнопки в нотисе и понять, как действие с кнопки привязать к запуску других действий. Через bash

balzi
() автор топика
Ответ на: комментарий от balzi

При появлении нотиса что бы в нем было, например 3 кнопки, каждая из которых отвечает за запуск определенного действия/скрипта.

Не думаю что bash хорош для этого.
Но несложно навоять питоновский скрипт, который будет дергать нужные тебе bash скрипты.

Как запустить и как модифицировать, думаю, разберешься?

#!/usr/bin/python
from subprocess import call
import sys

import gi

gi.require_version('Notify', '0.7')
from gi.repository import GLib, Notify

class App():
    def __init__(self):
        self.last_notification = None
        Notify.init('This is a title')
        self.check()

    def check(self):
        self.last_notification = Notify.Notification.new('Which directory to list?')
        self.last_notification.add_action('curr', 'Current', self.notification_callback, None)
        self.last_notification.add_action('root', 'Root', self.notification_callback, None)
        self.last_notification.show()
        GLib.timeout_add_seconds(10, self.check)

    def notification_callback(self, notification, action_name, data):
        print(action_name)

        if action_name == "curr":
            call(["ls", "-l"])

        if action_name == "root":
            call(["ls", "-l", "/"])

        notification.close()
        sys.exit()

app = App()
GLib.MainLoop().run()
Взято отсюда немного подправлено.

P. S. А первым python скриптом был web серверок по типу «webserver на bash».

Kroz ★★★★★
()
Ответ на: комментарий от abraziv_whiskey

Оно умеет нотификации?
ТС'у диалоговое окно не нужно.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

А оно разве умеет в d-bus, которым сегодня и отправляют уведомления? Вообще, ТСу надо dbus-send, но его пока не довели до ума. Я вот не смог из-за этого в нотификации с элементами HTML...

yars068 ★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.