Comment puis-je exécuter un script kwin à partir de la ligne de commande?

9

J'ai écrit un script kwin vraiment basique pour carreler les fenêtres comme je les aime,

// Main reference: http://techbase.kde.org/Development/Tutorials/KWin/Scripting

// Top-level parameters. Adjust these as suitable for your desktop.
var width = 3840;
var third = Math.round(width / 3);


var clients = workspace.clientList();
for (var i=0; i<clients.length; i++) {
  var client = clients[i];
  var cap = client.caption.toLowerCase();
  var g = client.geometry;

  if (cap.indexOf("firefox") != -1) {
    g.x = 0;
    g.width = third;
  } else if (cap.indexOf("vim") != -1) {
    g.x = third;
    g.width = third;
  } else if (cap.indexOf("konsole") != -1) {
    g.x = third * 2;
    g.width = third;
  }

  client.geometry = g;
}

en utilisant la console de script ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole, ou à wm consolepartir de krunner).

Je veux le lier à un raccourci clavier.

Je n'ai pu trouver que des ressources sur la construction de packages Plasma, que je n'ai pas réussi à travailler (j'en ai un metadata.desktopqui est similaire à ceux de /usr/share/kde4/apps/kwin/scripts, et un contenu de répertoire similaire, mais ça dit plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows").

Je suis un peu fatigué de nettoyer avec un emballage Plasma. Comment puis-je appeler mon script kwin basé sur JavaScript à partir de la ligne de commande?

Note éditée

Dans le cas où vous n'êtes pas familier, il est facile de lier la commande aux raccourcis clavier dans KDE - cliquez simplement avec le bouton droit sur le lanceur d'application, allez dans "Modifier les applications", ajoutez un nouvel élément, entrez la commande shell dans la boîte "Commande", puis définissez la touche de raccourci dans l'onglet "Avancé".

gatoatigrado
la source

Réponses:

7

Avec quelques conseils d' ici , j'ai réussi à faire fonctionner les éléments suivants:

script=/path/to/script

num=$(dbus-send --print-reply --dest=org.kde.kwin.Scripting \
  /Scripting \
  org.kde.kwin.Scripting.loadScript \
  string:"$script" |
  awk 'END {print $2}' )

dbus-send --print-reply --dest=org.kde.kwin.Scripting \
  /$num \
  org.kde.kwin.Scripting.run
Graeme
la source
1

Mise à jour: voici ce que je devais faire en 2019 pour que cela fonctionne:

# don't use ~/ in this path:
script="/path/to/script"

num=$(dbus-send --print-reply --dest=org.kde.KWin \
    /Scripting org.kde.kwin.Scripting.loadScript \
    string:"$script" | awk 'END {print $2}' )

dbus-send --print-reply --dest=org.kde.KWin /$num \
    org.kde.kwin.Scripting.run
user272901
la source