¿Cómo puedo ejecutar un script kwin desde la línea de comando?

9

Escribí un script de kwin realmente básico para ventanas en mosaico como me gustan,

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

utilizando la consola de secuencias de comandos ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsoleo wm consoledesde krunner).

Quiero vincular esto a una tecla de acceso rápido.

Solo he podido encontrar recursos sobre la construcción de paquetes de Plasma, que no he podido trabajar (tengo un metadata.desktopsimilar a los que están en /usr/share/kde4/apps/kwin/scripts, y contenidos de directorio similares, pero dice plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows").

Estoy un poco cansado de estorbar con los envases de plasma. ¿Cómo puedo invocar mi script kwin basado en JavaScript desde la línea de comandos?

Editar nota

En caso de que no esté familiarizado, es fácil vincular el comando a las teclas de acceso rápido en KDE: simplemente haga clic con el botón derecho en el iniciador de aplicaciones, vaya a "Editar aplicaciones", agregue un nuevo elemento, ingrese el comando de shell en el cuadro "Comando", y luego configure la tecla de acceso directo en la pestaña "Avanzado".

gatoatigrado
fuente

Respuestas:

7

Con algunas pistas de aquí , logré que lo siguiente funcione:

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
fuente
1

Actualización: esto es lo que tuve que hacer en 2019 para que esto funcione:

# 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
usuario272901
fuente