LINUX.ORG.RU

Как прочитать нотификации гнома?

 


0

1

Решил заюзать нотификации гном (которые сверху у часов валятся), раньше их не юзал, не обращал внимания. Оказалось, что там полно сообщений вида

Сообщение от программы А. Внимание, произош...

Сообщение от программы А. Внимание, внимани...

Сообщение от программы B. Внимание, произош...

Сообщение от программы C. Срочно сделайте бо...

Более того, они сразу пропадают в небытье, стоит на них взглянуть.

Как их прочитать полностью? Как вернуть то, что пропало?

Refs:

https://askubuntu.com/questions/978241/view-full-message-from-gnome-notifications-area

https://bugzilla.gnome.org/show_bug.cgi?id=776048

Кажется, решения нет

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

У notify-list есть тайм-аут в течение которого тебе показывают уведомление. Если ты не успел учись скорочтению либо меняй это время из ПО которое вызвало уведомление. Успехов.

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

Я не могу прочитать то, чего не написано (там многоточие), даже сделав скриншот. В journalctl их тоже нет

Успехов

спасибо :)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous

А ты пробовал? Этот список и выпадает после клика на часы.

(То что там всплывает поверх экрана - оно вообще не рассматривается, т.к. неюзабельно, и отключено, естественно)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 3)

Вместо гномовских нотификаций использовать dunst – там можно посмотреть всю историю через Ctrl+`

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

Ясно, спасибо. Что-то не заработал он сразу. Надо будет настроить, сейчас не понятно что ему надо.

А в KDE оказыватся такая же херня. Невозможно посмотреть полный текст нотификации.

Deleted
()
Ответ на: комментарий от cuelebra

Они не мои, в частности спамит Nextcloud client. Да и notify-send позволяет послать сообщение такой длины, что оно не влазит, без каких-либо препон.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от init_6

Я бы тоже так сказал. Поэтому полез проверять: journalctl -f -p7 в одной консоли, notify-send "Hellokjsfdjhskjhfk - в другой. И хрен в тех логах. Эх… Головняк на пустом месте. Просто хотел посмотреть, какая файл меняется, что nextcloud упорно спамит о его изменении. И ведь всего лишь нужно раскрыть чертово многоточие. В логах nextcloud client тоже ничего нет. Может дебажные логи получится в nextcloud client включить

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

То что там всплывает поверх экрана - оно вообще не рассматривается, т.к. неюзабельно, и отключено, естественно

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

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

ты серьезно, думаешь я не Включал? ну проверь, или балабол

notify-send "aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk llll mmmm nnnn oooo pppp qqqq rrrr sss"
Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Мда, кстати, если твоя прога есть в «Settings→Notifications», то включи там ползунок «Show Message Content in Popus», может полегчает, а вообще, видимо, нотификации типа не для чтения, а для привлечения внимания, чтобы отправить в программу, которая требует к себе внимания.

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

О, это действительно влияет. К сожалению, лишь на всплывающее сообщение (собственно, popups), но надо навести мышь туда, тогда popup увеличится в размере. Когда мышь убрать или нажать - все пропадает бесследно. Список под часами продолжает быть обрезан. Спасибо, этот переключатель я не нашел. Пользоваться этим конечно невозможно, но хотя бы увидел что хотел

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

Нет, всё таки какие же невежественные школьники делали гном! Вот делаешь ты оповещения. Наверняка, используешь notify-send для тестов. Наверняка, сам же сделал эти многоточия и видел их на экране. Но мозгов нет понять, что свернутую информацию кто-то захочет поглядеть. Ну ограничь ты длину строки в аргументе и протоколе dbus, если считаешь, что пользователь не должен видеть длинные сообщения. Но нет, надо сделать неюзабельное г.

В ТС бага по ссылке висит с 2016 года. Прошлые аналогичные баги в гноме, когда не помещались надписи, пофиксили через 5 лет, переписыванием приложения.

Deleted
()
Ответ на: комментарий от bass

Да, точно, спасибо за напоминание. Но на них надежды мало, там всегда хрен пойми к какой версии подходит, никакой совместимости. Может из кучи чего и подберу. Конкретно этот не установился

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

С этим беда, есть такое расширение которое позволяет вести логи https://extensions.gnome.org/extension/1136/notifications-to-file/?c=45592 , сейчас глянул оказалось оно сломано, я репорт оформил и исправлением, но ты можешь установить его (игнорируй ошибки)

Затем открой cd /home/$USER/.local/share/gnome-shell/extensions/notifications_to_file@11.2016.mildred.fr и замени код extension.js на


const St = imports.gi.St;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
const MessageTray = imports.ui.messageTray;

let text, button;
let originalCountUpdated, originalDestroy;

function updateMessageFile() {
    let sources = Main.messageTray.getSources();
    let fname = GLib.getenv("XDG_RUNTIME_DIR") + "/notifications";
    let file = Gio.file_new_for_path(fname);
    let fstream = file.replace(null, false, Gio.FileCreateFlags.NONE, null);

    for (let i = 0; i < sources.length; i++) {
    	for (let n = 0; n < sources[i].notifications.length; n++) {
    	    let notif = sources[i].notifications[n];
    	    let urg = "" + notif.urgency;
    	    if (notif.urgency == 0) {
    	        urg = "L"
    	    } else if (notif.urgency == 1) {
    	    	urg = "N"
    	    } else if (notif.urgency == 3) {
    	    	urg = "C"
    	    }
            let data = urg + " " + notif.title + " — " + notif.bannerBodyText;
            data = data.replace("\\", "\\\\").replace("\n", "\\n") + "\n"
            fstream.write(data, null, data.length);
    	}
    }

    fstream.close(null);
}

function _countUpdated() {
    let res = originalCountUpdated.call(this);

    updateMessageFile();
    return res;
}

function _destroy() {
    let res = originalDestroy.call(this);

    updateMessageFile();
    return res;
}

function init() {
}

function enable() {
    
    MessageTray.Source.prototype.countUpdated = _countUpdated;
    MessageTray.Source.prototype.destroy = _destroy;

    Main.panel._rightBox.insert_child_at_index(button, 0);
    
}

function disable() {
    
    originalCountUpdated = MessageTray.Source.prototype.countUpdated;
    originalDestroy = MessageTray.Source.prototype.destroy;
    MessageTray.Source.prototype.countUpdated = originalCountUpdated;
    MessageTray.Source.prototype.destroy = originalDestroy;
    Main.panel._rightBox.remove_child(button);
    
}

и перезапусти расширение gnome-shell-extension-tool -r notifications_to_file

Ну и вот результат

dron@gnu:~$ notify-send "aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk llll mmmm nnnn oooo pppp qqqq rrrr sss"
dron@gnu:~$ cat  $XDG_RUNTIME_DIR/notifications
N aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk llll mmmm nnnn oooo pppp qqqq rrrr sss — 
N aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk llll mmmm nnnn oooo pppp qqqq rrrr sss — 
dron@gnu:~$ ls  $XDG_RUNTIME_DIR/notifications
/run/user/1000/notifications
dron@gnu:~$ 

Оно может даже заброшено, я подожду немного и если не ответит запилю форк и залью его на extensions.gnome.org

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

спасибо! Как раз столкнулся с тем, что оно не работает :)

Одно время я поддерживал пару каких-то расширений, которые были заброшены но казались мне очень полезными. Но с каждым апдейтом гном приходилось вносить какие-то фиксы, иногда нетривиальные. Поэтому я забил и понял что расширения гнома это мертворожденные уродцы.

Разок поюзать хватит.

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

Ну, тут вообще поц выкатил расширение нерабочее, тоесть оно вообще не работало и не могло работать тупо из за того что переменные объявил в одной функции, а вызывал в другой :D

Концепция расширений хороша, но я хоть гном и люблю но, js однопотоковое дерьмо делает мой шестиядерный проц бесполезным, но обещают многопоток. Уродское API https://wiki.gnome.org/Projects/GnomeShell/Extensions/EcoDoc/JavaScript с дибильной документацией, как простому человеку с нуля написать расширение решительно непонятно, просто ужас и это же можно легко пофиксить оформив нормальную доку вместо портянки и необходимости лезть в сорцы что бы понять мля куда надо ХРенПоймиКакуюПеременнУЮвСУНУТЬ_.В_субмодуле.

Хорошие расширения работают всегда ибо не юзают кишков shell`a как не странно это расширение хорошее (просто оно с тупым багом) работает от версии к версии с 2016 года.

Я вот прям негодую по этому поводу. Но несмотря на всю ту парашу которой я с радостью поливаю головы причастным к gjs и shell-extension-dev эта штука хорошая, по сути это как раньше расширения для панели всякие gnome2.xx только теперь глобальные и на js. Эх. Надеюсь очухаются

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну ограничь ты длину строки в аргументе и протоколе dbus, если считаешь, что пользователь не должен видеть длинные сообщения.

Только вот длина видимой части сообщения зависит от стиля (размера шрифта, ширины выпадающего окна), который в момент написания кода неизвестен и может меняться.

А так да, все вокруг мудаки, а ты — гений, только непризнанный.

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

Это неразрешимая задача, лол.

«Эй парни, прекращаем готовить полет к Марсу, мы забыли о космической радиции.png»

Deleted
()

dbus-monitor «interface='org.freedesktop.Notifications'» > nmsg.log
Это колхоз, если писать на c/glib в строчек 100 можно уложиться.

arrecck ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.