Вы должны взглянуть на «Magic SysRq key», который по умолчанию включен Linux
Нажмите Alt + SysRq + E, чтобы закрыть все процессы
Чтобы выполнить чистую перезагрузку:
Используемые последовательно, некоторые из этих действий могут использоваться для чистого завершения процессов, очистки данных на диске, отключения всех файловых систем и перезагрузки компьютера. Чтобы выполнить этот процесс, нажмите и удерживайте комбинацию клавиш Alt + SysRq, и - удерживая клавиши Alt и SysRq вниз - введите следующие клавиши в порядке, пауза в течение нескольких секунд между каждой клавишей:reisub
[d10 ] Для выключения вместо этого нажмите Alt вместо b в конце указанной последовательности.
Я также изучаю Qt и пытаюсь найти способ использования Unity API в Qt, я могу использовать только API Dbus, но мне не повезло с Quicklist, так как ему нужен DbusMenu, и я не знаю, как реализовать это (все еще learning :)).
Это пример, который я создал для себя, и надеюсь, что он будет полезен другим. Возможно, Unity-разработчики могут помочь исправить / исправить / добавить новый код (quicklist) к нему:)
/*
Unity Launcher Dbus API exmable for Qt
foxoman [gplus.to/foxoman][foxoman.u@gmail.com]
https://wiki.ubuntu.com/Unity/LauncherAPI#Low_level_DBus_API:_com.canonical.Unity.LauncherEntry
First step : add this line to your Qt project file .pro
QT += dbus
*/
/* I will run this example as Qt console apps */
#include <QtCore/QCoreApplication>
/* Include Qt Dbus required */
#include <QtDBus>
// Qt Main Method
int main(int argc, char *argv[])
{
/* Qt console Main Loop [ in GUI application the Main loop is QApplication ]
Unity API need Main Loop to run */
QCoreApplication a(argc, argv);
/* Create Qt Dbus Signal to send Dbus Message to unity Dbus API
signal com.canonical.Unity.LauncherEntry.Update (in s app_uri, in a{sv} properties)
*/
QDBusMessage signal = QDBusMessage::createSignal(
"/", /* Path */
"com.canonical.Unity.LauncherEntry", /* Unity DBus Interface */
"Update"); /* Update Signal */
/* app_uri
Desktop ID ex: firefox -> need to be pined in the launcher to see the effect
*/
signal << "application://firefox.desktop";
/* properties : A map of strings to variants with the properties to set on the launcher icon */
QVariantMap setProperty;
/* A number to display on the launcher icon */
setProperty.insert("count", qint64(80));
/* show count */
setProperty.insert("count-visible", true);
/* progress bar count must be float between 0 and 1 (mean from 0.00 to 0.100)*/
setProperty.insert("progress", double(0.80));
/* show progress bar */
setProperty.insert("progress-visible", true);
/* Tells the launcher to get the users attention */
setProperty.insert("urgent",true);
/* Pack the properties Map to the signal */
signal << setProperty;
/* Send the signal */
QDBusConnection::sessionBus().send(signal);
return a.exec();
}
скачать пример здесь http://ubuntuone.com/1SLDPcN9OhrU6LD1wgDs3r
Я также изучаю Qt и пытаюсь найти способ использования Unity API в Qt, я мог бы использовать только API Dbus, но мне не повезло с Quicklist, так как ему нужен DbusMenu, и я не знаю, как реализовать это (все еще learning :)).
Это пример, который я создал для себя, и я надеюсь, что он полезен для других. Возможно, Unity devs может помочь исправить / исправить / добавить в него новый код (quicklist):)
/*
Unity Launcher Dbus API exmable for Qt
foxoman [gplus.to/foxoman][foxoman.u@gmail.com]
https://wiki.ubuntu.com/Unity/LauncherAPI#Low_level_DBus_API:_com.canonical.Unity.LauncherEntry
First step : add this line to your Qt project file .pro
QT += dbus
*/
/* I will run this example as Qt console apps */
#include <QtCore/QCoreApplication>
/* Include Qt Dbus required */
#include <QtDBus>
// Qt Main Method
int main(int argc, char *argv[])
{
/* Qt console Main Loop [ in GUI application the Main loop is QApplication ]
Unity API need Main Loop to run */
QCoreApplication a(argc, argv);
/* Create Qt Dbus Signal to send Dbus Message to unity Dbus API
signal com.canonical.Unity.LauncherEntry.Update (in s app_uri, in a{sv} properties)
*/
QDBusMessage signal = QDBusMessage::createSignal(
"/", /* Path */
"com.canonical.Unity.LauncherEntry", /* Unity DBus Interface */
"Update"); /* Update Signal */
/* app_uri
Desktop ID ex: firefox -> need to be pined in the launcher to see the effect
*/
signal << "application://firefox.desktop";
/* properties : A map of strings to variants with the properties to set on the launcher icon */
QVariantMap setProperty;
/* A number to display on the launcher icon */
setProperty.insert("count", qint64(80));
/* show count */
setProperty.insert("count-visible", true);
/* progress bar count must be float between 0 and 1 (mean from 0.00 to 0.100)*/
setProperty.insert("progress", double(0.80));
/* show progress bar */
setProperty.insert("progress-visible", true);
/* Tells the launcher to get the users attention */
setProperty.insert("urgent",true);
/* Pack the properties Map to the signal */
signal << setProperty;
/* Send the signal */
QDBusConnection::sessionBus().send(signal);
return a.exec();
}
скачать пример здесь http://ubuntuone.com/1SLDPcN9OhrU6LD1wgDs3r
Я также изучаю Qt и пытаюсь найти способ использования Unity API в Qt, я мог бы использовать только API Dbus, но мне не повезло с Quicklist, так как ему нужен DbusMenu, и я не знаю, как реализовать это (все еще learning :)).
Это пример, который я создал для себя, и я надеюсь, что он полезен для других. Возможно, Unity devs может помочь исправить / исправить / добавить в него новый код (quicklist):)
/*
Unity Launcher Dbus API exmable for Qt
foxoman [gplus.to/foxoman][foxoman.u@gmail.com]
https://wiki.ubuntu.com/Unity/LauncherAPI#Low_level_DBus_API:_com.canonical.Unity.LauncherEntry
First step : add this line to your Qt project file .pro
QT += dbus
*/
/* I will run this example as Qt console apps */
#include <QtCore/QCoreApplication>
/* Include Qt Dbus required */
#include <QtDBus>
// Qt Main Method
int main(int argc, char *argv[])
{
/* Qt console Main Loop [ in GUI application the Main loop is QApplication ]
Unity API need Main Loop to run */
QCoreApplication a(argc, argv);
/* Create Qt Dbus Signal to send Dbus Message to unity Dbus API
signal com.canonical.Unity.LauncherEntry.Update (in s app_uri, in a{sv} properties)
*/
QDBusMessage signal = QDBusMessage::createSignal(
"/", /* Path */
"com.canonical.Unity.LauncherEntry", /* Unity DBus Interface */
"Update"); /* Update Signal */
/* app_uri
Desktop ID ex: firefox -> need to be pined in the launcher to see the effect
*/
signal << "application://firefox.desktop";
/* properties : A map of strings to variants with the properties to set on the launcher icon */
QVariantMap setProperty;
/* A number to display on the launcher icon */
setProperty.insert("count", qint64(80));
/* show count */
setProperty.insert("count-visible", true);
/* progress bar count must be float between 0 and 1 (mean from 0.00 to 0.100)*/
setProperty.insert("progress", double(0.80));
/* show progress bar */
setProperty.insert("progress-visible", true);
/* Tells the launcher to get the users attention */
setProperty.insert("urgent",true);
/* Pack the properties Map to the signal */
signal << setProperty;
/* Send the signal */
QDBusConnection::sessionBus().send(signal);
return a.exec();
}
скачать пример здесь http://ubuntuone.com/1SLDPcN9OhrU6LD1wgDs3r
Я также изучаю Qt и пытаюсь найти способ использования Unity API в Qt, я мог бы использовать только API Dbus, но мне не повезло с Quicklist, так как ему нужен DbusMenu, и я не знаю, как реализовать это (все еще learning :)).
Это пример, который я создал для себя, и я надеюсь, что он полезен для других. Возможно, Unity devs может помочь исправить / исправить / добавить в него новый код (quicklist):)
/*
Unity Launcher Dbus API exmable for Qt
foxoman [gplus.to/foxoman][foxoman.u@gmail.com]
https://wiki.ubuntu.com/Unity/LauncherAPI#Low_level_DBus_API:_com.canonical.Unity.LauncherEntry
First step : add this line to your Qt project file .pro
QT += dbus
*/
/* I will run this example as Qt console apps */
#include <QtCore/QCoreApplication>
/* Include Qt Dbus required */
#include <QtDBus>
// Qt Main Method
int main(int argc, char *argv[])
{
/* Qt console Main Loop [ in GUI application the Main loop is QApplication ]
Unity API need Main Loop to run */
QCoreApplication a(argc, argv);
/* Create Qt Dbus Signal to send Dbus Message to unity Dbus API
signal com.canonical.Unity.LauncherEntry.Update (in s app_uri, in a{sv} properties)
*/
QDBusMessage signal = QDBusMessage::createSignal(
"/", /* Path */
"com.canonical.Unity.LauncherEntry", /* Unity DBus Interface */
"Update"); /* Update Signal */
/* app_uri
Desktop ID ex: firefox -> need to be pined in the launcher to see the effect
*/
signal << "application://firefox.desktop";
/* properties : A map of strings to variants with the properties to set on the launcher icon */
QVariantMap setProperty;
/* A number to display on the launcher icon */
setProperty.insert("count", qint64(80));
/* show count */
setProperty.insert("count-visible", true);
/* progress bar count must be float between 0 and 1 (mean from 0.00 to 0.100)*/
setProperty.insert("progress", double(0.80));
/* show progress bar */
setProperty.insert("progress-visible", true);
/* Tells the launcher to get the users attention */
setProperty.insert("urgent",true);
/* Pack the properties Map to the signal */
signal << setProperty;
/* Send the signal */
QDBusConnection::sessionBus().send(signal);
return a.exec();
}
скачать пример здесь http://ubuntuone.com/1SLDPcN9OhrU6LD1wgDs3r
Я также изучаю Qt и пытаюсь найти способ использования Unity API в Qt, я мог бы использовать только API Dbus, но мне не повезло с Quicklist, так как ему нужен DbusMenu, и я не знаю, как реализовать это (все еще learning :)).
Это пример, который я создал для себя, и я надеюсь, что он полезен для других. Возможно, Unity devs может помочь исправить / исправить / добавить в него новый код (quicklist):)
/*
Unity Launcher Dbus API exmable for Qt
foxoman [gplus.to/foxoman][foxoman.u@gmail.com]
https://wiki.ubuntu.com/Unity/LauncherAPI#Low_level_DBus_API:_com.canonical.Unity.LauncherEntry
First step : add this line to your Qt project file .pro
QT += dbus
*/
/* I will run this example as Qt console apps */
#include <QtCore/QCoreApplication>
/* Include Qt Dbus required */
#include <QtDBus>
// Qt Main Method
int main(int argc, char *argv[])
{
/* Qt console Main Loop [ in GUI application the Main loop is QApplication ]
Unity API need Main Loop to run */
QCoreApplication a(argc, argv);
/* Create Qt Dbus Signal to send Dbus Message to unity Dbus API
signal com.canonical.Unity.LauncherEntry.Update (in s app_uri, in a{sv} properties)
*/
QDBusMessage signal = QDBusMessage::createSignal(
"/", /* Path */
"com.canonical.Unity.LauncherEntry", /* Unity DBus Interface */
"Update"); /* Update Signal */
/* app_uri
Desktop ID ex: firefox -> need to be pined in the launcher to see the effect
*/
signal << "application://firefox.desktop";
/* properties : A map of strings to variants with the properties to set on the launcher icon */
QVariantMap setProperty;
/* A number to display on the launcher icon */
setProperty.insert("count", qint64(80));
/* show count */
setProperty.insert("count-visible", true);
/* progress bar count must be float between 0 and 1 (mean from 0.00 to 0.100)*/
setProperty.insert("progress", double(0.80));
/* show progress bar */
setProperty.insert("progress-visible", true);
/* Tells the launcher to get the users attention */
setProperty.insert("urgent",true);
/* Pack the properties Map to the signal */
signal << setProperty;
/* Send the signal */
QDBusConnection::sessionBus().send(signal);
return a.exec();
}
скачать пример здесь http://ubuntuone.com/1SLDPcN9OhrU6LD1wgDs3r
QT += dbus
)
– kv1dr
11 October 2011 в 12:16
В настоящее время нет специальной библиотеки для доступа к функциям запуска от Qt C ++. Существует библиотека libunity, но она сильно ориентирована на glib, поэтому она не подходит для Qt. Как уже упоминалось в другом ответе, наиболее удобным способом интеграции с пусковой установкой является использование низкоуровневого dbus API.
Базовая концепция интеграции с пусковой установкой - вы посылаете сигнал на панель запуска с идентификатором приложения и набором свойств. Идентификатор приложения - это имя файла .desktop, обычно хранящегося в /usr/share/applications:
//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/",
"com.canonical.Unity.LauncherEntry", "Update");
//set the application ID
signal << "application://firefox.desktop";
//set the properties
QVariantMap properties;
...
signal << properties;
//send the signal
QDBusConnection::sessionBus().send(signal);
Чтобы установить счетчик, вам нужно будет установить свойства чтобы подсчет был видимым и дал ему желаемое целочисленное значение:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Чтобы установить индикатор выполнения, вам нужно будет установить свойства таким образом, чтобы прогресс отображается и дает ему желаемое двойное значение:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Быстрый список можно установить с помощью библиотеки Qt dbusmenu. Вам нужно будет включить файл заголовка:
#include <dbusmenuexporter.h>
Быстрый список создается как меню QMenu в Qt. Это меню экспортируется через dbusmenu с помощью объекта DBusMenuExporter. При экспорте вы передаете этому объекту уникальный путь, а затем ссылаетесь на этот путь, чтобы сообщить элементу запуска, какое меню отобразить в качестве быстрого списка.
В объявлении класса основного окна добавьте следующие переменные экземпляра:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Затем в функции конструктора:
quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);
Чтобы добавить элементы в меню, используйте [addAction] (http: //qt-project.org/doc/ qt-5.0 / qtwidgets / qmenu.html # addAction), чтобы добавить объекты [QAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qaction.html).
Чтобы установить быстрый список значка запуска, установите свойство «быстрого списка» для сигнала:
properties["quicklist"] = "/com/me/myapp/quicklist";
Вам нужно будет настроить. pro для добавления поддержки dbus: QT += dbus. Чтобы построить с поддержкой быстрого списка, вам нужно будет установить библиотеки разработки dbusmenu-qt (libdbusmenu*dev). Затем вы можете добавить в файл проекта следующие файлы, чтобы включить библиотеку dbusmenu:
#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
INCLUDEPATH += /usr/include/dbusmenu-qt5/
LIBS += -ldbusmenu-qt5
} else {
INCLUDEPATH += /usr/include/dbusmenu-qt/
LIBS += -ldbusmenu-qt
}
Чтобы увидеть полный пример, используя все функции запуска из Qt, посмотрите на этом низком уровне dbus API .
В настоящее время нет специальной библиотеки для доступа к функциям запуска от Qt C ++. Существует библиотека libunity, но она сильно ориентирована на glib, поэтому она не подходит для Qt. Как уже упоминалось в другом ответе, наиболее удобным способом интеграции с пусковой установкой является использование низкоуровневого dbus API .
Основная концепция интеграции с пусковой установкой вы отправляете сигнал в пусковую установку с идентификатором приложения и набором свойств. Идентификатор приложения - это имя файла .desktop, обычно хранящегося в /usr/share/applications
:
//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/",
"com.canonical.Unity.LauncherEntry", "Update");
//set the application ID
signal << "application://firefox.desktop";
//set the properties
QVariantMap properties;
...
signal << properties;
//send the signal
QDBusConnection::sessionBus().send(signal);
. Чтобы установить счетчик, вам нужно будет установить свойства чтобы подсчет был видимым и дал ему желаемое целочисленное значение:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Чтобы установить индикатор выполнения, вам нужно будет установить свойства таким образом, чтобы прогресс отображается и дает ему желаемое двойное значение:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Быстрый список можно установить с помощью библиотеки Qt dbusmenu. Вам нужно будет включить файл заголовка:
#include <dbusmenuexporter.h>
Быстрый список создается как меню QMenu
в Qt. Это меню экспортируется через dbusmenu с помощью объекта DBusMenuExporter
. При экспорте вы передаете этому объекту уникальный путь, а затем ссылаетесь на этот путь, чтобы сообщить элементу запуска, какое меню отображать в качестве быстрого списка.
В объявлении класса основного окна добавьте следующие переменные экземпляра:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Затем в функции конструктора:
quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);
Чтобы добавить элементы в меню, используйте [addAction] (http: //qt-project.org/doc/ qt-5.0 / qtwidgets / qmenu.html # addAction), чтобы добавить объекты [QAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qaction.html).
Чтобы установить быстрый список значка пусковой установки, установите свойство «быстрого списка» для сигнала:
properties["quicklist"] = "/com/me/myapp/quicklist";
Вам нужно будет настроить. pro для добавления поддержки dbus: QT += dbus
. Чтобы построить с поддержкой быстрого списка, вам нужно будет установить библиотеки разработки dbusmenu-qt (libdbusmenu*dev
). Затем вы можете добавить в файл проекта следующие файлы, чтобы включить библиотеку dbusmenu:
#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
INCLUDEPATH += /usr/include/dbusmenu-qt5/
LIBS += -ldbusmenu-qt5
} else {
INCLUDEPATH += /usr/include/dbusmenu-qt/
LIBS += -ldbusmenu-qt
}
Чтобы увидеть полный пример с использованием всех функций запуска из Qt, посмотрите в этом проекте Github .
В настоящее время нет специальной библиотеки для доступа к функциям запуска от Qt C ++. Существует библиотека libunity, но она сильно ориентирована на glib, поэтому она не подходит для Qt. Как уже упоминалось в другом ответе, наиболее удобным способом интеграции с пусковой установкой является использование низкоуровневого dbus API .
Основная концепция интеграции с пусковой установкой вы отправляете сигнал в пусковую установку с идентификатором приложения и набором свойств. Идентификатор приложения - это имя файла .desktop, обычно хранящегося в /usr/share/applications
:
//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/",
"com.canonical.Unity.LauncherEntry", "Update");
//set the application ID
signal << "application://firefox.desktop";
//set the properties
QVariantMap properties;
...
signal << properties;
//send the signal
QDBusConnection::sessionBus().send(signal);
. Чтобы установить счетчик, вам нужно будет установить свойства чтобы подсчет был видимым и дал ему желаемое целочисленное значение:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Чтобы установить индикатор выполнения, вам нужно будет установить свойства таким образом, чтобы прогресс отображается и дает ему желаемое двойное значение:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Быстрый список можно установить с помощью библиотеки Qt dbusmenu. Вам нужно будет включить файл заголовка:
#include <dbusmenuexporter.h>
Быстрый список создается как меню QMenu
в Qt. Это меню экспортируется через dbusmenu с помощью объекта DBusMenuExporter
. При экспорте вы передаете этому объекту уникальный путь, а затем ссылаетесь на этот путь, чтобы сообщить элементу запуска, какое меню отображать в качестве быстрого списка.
В объявлении класса основного окна добавьте следующие переменные экземпляра:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Затем в функции конструктора:
quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);
Чтобы добавить элементы в меню, используйте [addAction] (http: //qt-project.org/doc/ qt-5.0 / qtwidgets / qmenu.html # addAction), чтобы добавить объекты [QAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qaction.html).
Чтобы установить быстрый список значка пусковой установки, установите свойство «быстрого списка» для сигнала:
properties["quicklist"] = "/com/me/myapp/quicklist";
Вам нужно будет настроить. pro для добавления поддержки dbus: QT += dbus
. Чтобы построить с поддержкой быстрого списка, вам нужно будет установить библиотеки разработки dbusmenu-qt (libdbusmenu*dev
). Затем вы можете добавить в файл проекта следующие файлы, чтобы включить библиотеку dbusmenu:
#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
INCLUDEPATH += /usr/include/dbusmenu-qt5/
LIBS += -ldbusmenu-qt5
} else {
INCLUDEPATH += /usr/include/dbusmenu-qt/
LIBS += -ldbusmenu-qt
}
Чтобы увидеть полный пример с использованием всех функций запуска из Qt, посмотрите в этом проекте Github .
В настоящее время нет специальной библиотеки для доступа к функциям запуска от Qt C ++. Существует библиотека libunity, но она сильно ориентирована на glib, поэтому она не подходит для Qt. Как уже упоминалось в другом ответе, наиболее удобным способом интеграции с пусковой установкой является использование низкоуровневого dbus API .
Основная концепция интеграции с пусковой установкой вы отправляете сигнал в пусковую установку с идентификатором приложения и набором свойств. Идентификатор приложения - это имя файла .desktop, обычно хранящегося в /usr/share/applications
:
//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/",
"com.canonical.Unity.LauncherEntry", "Update");
//set the application ID
signal << "application://firefox.desktop";
//set the properties
QVariantMap properties;
...
signal << properties;
//send the signal
QDBusConnection::sessionBus().send(signal);
. Чтобы установить счетчик, вам нужно будет установить свойства чтобы подсчет был видимым и дал ему желаемое целочисленное значение:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Чтобы установить индикатор выполнения, вам нужно будет установить свойства таким образом, чтобы прогресс отображается и дает ему желаемое двойное значение:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Быстрый список можно установить с помощью библиотеки Qt dbusmenu. Вам нужно будет включить файл заголовка:
#include <dbusmenuexporter.h>
Быстрый список создается как меню QMenu
в Qt. Это меню экспортируется через dbusmenu с помощью объекта DBusMenuExporter
. При экспорте вы передаете этому объекту уникальный путь, а затем ссылаетесь на этот путь, чтобы сообщить элементу запуска, какое меню отображать в качестве быстрого списка.
В объявлении класса основного окна добавьте следующие переменные экземпляра:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Затем в функции конструктора:
quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);
Чтобы добавить элементы в меню, используйте [addAction] (http: //qt-project.org/doc/ qt-5.0 / qtwidgets / qmenu.html # addAction), чтобы добавить объекты [QAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qaction.html).
Чтобы установить быстрый список значка пусковой установки, установите свойство «быстрого списка» для сигнала:
properties["quicklist"] = "/com/me/myapp/quicklist";
Вам нужно будет настроить. pro для добавления поддержки dbus: QT += dbus
. Чтобы построить с поддержкой быстрого списка, вам нужно будет установить библиотеки разработки dbusmenu-qt (libdbusmenu*dev
). Затем вы можете добавить в файл проекта следующие файлы, чтобы включить библиотеку dbusmenu:
#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
INCLUDEPATH += /usr/include/dbusmenu-qt5/
LIBS += -ldbusmenu-qt5
} else {
INCLUDEPATH += /usr/include/dbusmenu-qt/
LIBS += -ldbusmenu-qt
}
Чтобы увидеть полный пример с использованием всех функций запуска из Qt, посмотрите в этом проекте Github .
В настоящее время нет специальной библиотеки для доступа к функциям запуска от Qt C ++. Существует библиотека libunity, но она сильно ориентирована на glib, поэтому она не подходит для Qt. Как уже упоминалось в другом ответе, наиболее удобным способом интеграции с пусковой установкой является использование низкоуровневого dbus API .
Основная концепция интеграции с пусковой установкой вы отправляете сигнал в пусковую установку с идентификатором приложения и набором свойств. Идентификатор приложения - это имя файла .desktop, обычно хранящегося в /usr/share/applications
:
//create the signal
QDBusMessage signal = QDBusMessage::createSignal("/",
"com.canonical.Unity.LauncherEntry", "Update");
//set the application ID
signal << "application://firefox.desktop";
//set the properties
QVariantMap properties;
...
signal << properties;
//send the signal
QDBusConnection::sessionBus().send(signal);
. Чтобы установить счетчик, вам нужно будет установить свойства чтобы подсчет был видимым и дал ему желаемое целочисленное значение:
qint64 counter_value = 1;
properties["count-visible"] = true; //set the count to visible
properties["count"] = counter_value; //set the counter value
Чтобы установить индикатор выполнения, вам нужно будет установить свойства таким образом, чтобы прогресс отображается и дает ему желаемое двойное значение:
double progress_value = 0.5;
properties["progress-visible"] = true; //set the progress bar to visible
properties["progress"] = progress_value; //set the progress value
Быстрый список можно установить с помощью библиотеки Qt dbusmenu. Вам нужно будет включить файл заголовка:
#include <dbusmenuexporter.h>
Быстрый список создается как меню QMenu
в Qt. Это меню экспортируется через dbusmenu с помощью объекта DBusMenuExporter
. При экспорте вы передаете этому объекту уникальный путь, а затем ссылаетесь на этот путь, чтобы сообщить элементу запуска, какое меню отображать в качестве быстрого списка.
В объявлении класса основного окна добавьте следующие переменные экземпляра:
QMenu *quicklist;
DBusMenuExporter *quicklist_exporter;
Затем в функции конструктора:
quicklist = new QMenu(this);
//exports the menu over dbus using the object: /com/me/myapp/quicklist
quicklist_exporter = new DBusMenuExporter("/com/me/myapp/quicklist", quicklist);
Чтобы добавить элементы в меню, используйте [addAction] (http: //qt-project.org/doc/ qt-5.0 / qtwidgets / qmenu.html # addAction), чтобы добавить объекты [QAction] (http: //qt-project.org/doc/qt-5.0/qtwidgets/qaction.html).
Чтобы установить быстрый список значка пусковой установки, установите свойство «быстрого списка» для сигнала:
properties["quicklist"] = "/com/me/myapp/quicklist";
Вам нужно будет настроить. pro для добавления поддержки dbus: QT += dbus
. Чтобы построить с поддержкой быстрого списка, вам нужно будет установить библиотеки разработки dbusmenu-qt (libdbusmenu*dev
). Затем вы можете добавить в файл проекта следующие файлы, чтобы включить библиотеку dbusmenu:
#import the dbusmenu-qt library for quicklists
greaterThan(QT_MAJOR_VERSION, 4) {
INCLUDEPATH += /usr/include/dbusmenu-qt5/
LIBS += -ldbusmenu-qt5
} else {
INCLUDEPATH += /usr/include/dbusmenu-qt/
LIBS += -ldbusmenu-qt
}
Чтобы увидеть полный пример с использованием всех функций запуска из Qt, посмотрите в этом проекте Github .