2016-01-20 9 views
2

В Gnome 3 у Nautilus есть новый файловый предварительный просмотр под названием Sushi. Вы можете выбрать файл в Nautilus, нажать пробел, и он покажет быстрый просмотр. Это очень похоже на то, что делает Quick Look (Preview) на OSX. Quick Look имеет интерфейс командной строки, который позволяет вам использовать Quick Look изнутри вашего собственного приложения. Суши, похоже, не допускают этого.Gnome 3: Звоните суши, быстрый просмотрщик файлов Nautilus через DBus

Это единственный способ вызвать суши через dbus. (Если вы знаете, как назвать это по линии cmd, еще лучше), я нашел источник суши, где он находится registers its dbus messages, но не может понять, как его назвать.

Вот что я пробовал:

> qdbus org.gnome.NautilusPreviewer /org/gnome/NautilusPreviewer org.gnome.NautilusPreviewer.ShowFile /foo/bar/baz.png 0x1c00010 0 
Error: org.gnome.gjs.JSError.Error 
Argument 'parent' (type interface) may not be null 

Я новичок, когда дело доходит до DBus, так что, может быть, я что-то очевидное

> dbus-send --print-reply --dest=org.gnome.NautilusPreviewer /org/gnome/NautilusPreviewer org.gnome.NautilusPreviewer.ShowFile string:"/foo/bar/baz.png" uint32:0x1c00010 uint32:1 
Error org.freedesktop.DBus.Error.InvalidArgs: Type of message, '(suu)', does not match expected type '(sib)' 
+0

Вы хотите бросить окно из командной строки? Или из вашего приложения? –

+0

Я не совсем уверен, что вы подразумеваете под этим. Вы говорите об идентификаторе xwin? –

+0

Вы забыли задать вопрос ... –

ответ

1

Try это отсутствует:

dbus-send —print-reply —dest=org.gnome.NautilusPreviewer /org/gnome/NautilusPreviewer org.gnome.NautilusPreviewer.ShowFile string:"file:///foo/bar/baz.png" int32:0 boolean:false 

Ваша вторая ошибка означает, что вы использовали неправильные типы: вы должны использовать string, int32 и boolean (sib), а не string и два целых без знака (suu).

Также обратите внимание, что вы должны использовать URI, а не сырое имя файла - просто добавьте префикс схемы file://.

Второй параметр должен быть xid окна, в котором вы хотите показать свой предварительный просмотр. Но 0 работает для меня.

+0

Это больше не работает: «аргументы для dbus_message_new_signal() были неверными, утверждение« _dbus_check_is_valid_path (path) »не удалось в файле ../../../dbus/ dbus-message.c строка 1456. " – hackel