Como posso executar um script kwin a partir da linha de comando?

8

Eu escrevi um script kwin básico para colocar janelas do jeito que eu gosto,

// 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 o console de script ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole ou wm console do krunner).

Eu quero vincular isso a uma tecla de atalho.

Eu só consegui encontrar recursos sobre a criação de pacotes do Plasma, que eu não consegui trabalhar (eu tenho um metadata.desktop que é parecido com aqueles em /usr/share/kde4/apps/kwin/scripts , e conteúdo similar do diretório, mas diz plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows" ).

Estou um pouco cansado de usar a embalagem do Plasma. Como posso invocar meu script kwin baseado em JavaScript a partir da linha de comando?

EDIT / Nota

Caso você não esteja familiarizado, é fácil vincular o comando a teclas de atalho no KDE - basta clicar com o botão direito no lançador de aplicativos, ir para "Editar aplicativos", adicionar um novo item, digitar o comando shell no "Comando "caixa e, em seguida, defina a tecla de atalho na guia" Avançado ".

    
por gatoatigrado 13.02.2014 / 20:59

1 resposta

7

Com algumas dicas do aqui , consegui fazer o seguinte funcionar:

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
    
por 22.02.2014 / 01:11

Tags