Come posso eseguire uno script kwin dalla riga di comando?


9

Ho scritto uno script kwin davvero semplice per affiancare Windows come mi piacciono,

// 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;
}

usando la console di scripting ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole, o wm consoleda krunner).

Voglio associare questo a un tasto di scelta rapida.

Sono stato solo in grado di trovare risorse sulla creazione di pacchetti Plasma, che non ho avuto modo di lavorare (ne ho uno metadata.desktopsimile a quelli in /usr/share/kde4/apps/kwin/scripts, e contenuti di directory simili, ma dice plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows").

Sono un po 'stanco di sporcare con la confezione al plasma. Come posso invocare il mio script kwin basato su JavaScript dalla riga di comando?

MODIFICA / Nota

Nel caso in cui non si abbia familiarità, è facile associare il comando ai tasti di scelta rapida in KDE: basta fare clic con il pulsante destro del mouse sul programma di avvio dell'applicazione, andare su "Modifica applicazioni", aggiungere un nuovo elemento, immettere il comando shell nella casella "Comando", e quindi imposta il tasto di scelta rapida nella scheda "Avanzate".

Risposte:


7

Con alcuni suggerimenti da qui , sono riuscito a far funzionare quanto segue:

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

1

Aggiornamento: questo è quello che dovevo fare nel 2019 per farlo funzionare:

# 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.