Donc, après avoir creusé autour, et grâce à l'aide de @leinir, J'ai été en mesure de trouver ce qui suit:
- Depuis Plasma 5.6 KDE supporte l'Unitiy DBus Launcher-API, qui peut être utilisé, par exemple, pour montrer la progression
- J'ai trouvé un post sur AskUbuntu qui explique comment utiliser l'API avec Qt
Le vrai problème est le suivant: Ce seulement œuvres, si vous avez un fichier de bureau valide dans l'un des emplacements standard! Vous devez passer le fichier en paramètre du message DBus pour le faire fonctionner. Sur la base de ces informations, j'ai compris comment l'utiliser et créer un GitHub repository qui prend en charge la progression de la barre des tâches multiplateforme et utilise cette API pour l'implémentation Linux.
Cependant, voici comment le faire de toute façon. Il devrait fonctionner pour KDE Plasma et le bureau Unity, peut-être plus (ont pas essayé tous les autres):
Créez un fichier .desktop
pour votre application. Pour des fins de test, cela peut être un fichier « factice », qui pourrait ressembler à ceci:
[Desktop Entry]
Type=Application
Version=1.1
Name=MyApp
Exec=<path_to>/MyApp
Copier ce fichier à ~/.local/share/applications/
(ou chaque fois que les fichiers de bureau spécifiques des utilisateurs vont sur votre système)
En votre code, tout ce que vous devez faire est d'exécuter le code suivant, pour mettre à jour l'état barre des tâches:
auto message = QDBusMessage::createSignal(QStringLiteral("/com/example/MyApp"),
QStringLiteral("com.canonical.Unity.LauncherEntry"),
QStringLiteral("Update"));
//you don't always have to specify all parameters, just the ones you want to update
properties.insert(QStringLiteral("progress-visible"), true);// enable the progress
properties.insert(QStringLiteral("progress"), 0.5);// set the progress value (from 0.0 to 1.0)
properties.insert(QStringLiteral("count-visible"), true);// display the "counter badge"
properties.insert(QStringLiteral("count"), 42);// set the counter value
message << QStringLiteral("application://myapp.desktop") //assuming you named the desktop file "myapp.desktop"
<< params;
QDBusConnection::sessionBus().send(message);
compilez et exécutez votre application. Vous n'avez pas à le démarrer via le fichier de bureau, au moins je n'ai pas besoin de le faire. Si vous voulez être sûr que votre application est "connectée" à ce fichier de bureau, il suffit de définir une icône personnalisée pour le fichier. Votre application doit afficher cette icône dans la barre des tâches.
Et c'est fondamentalement ça. Remarque: Le système mémorise le dernier état lors du redémarrage de l'application.Ainsi, vous devriez réinitialiser tous ces paramètres une fois au démarrage de l'application.
Je vais probablement créer un référentiel github pour cela. – Felix
Cependant, je pense que cela fonctionne pour le bureau Ubuntu Unity seulement? J'utilise le bureau KDE Plasma – Felix
Je l'ai fonctionné maintenant! Je posterai ma propre réponse demain montrant la solution "complète". – Felix