Intereting Posts

Как запустить скрипт KWin с консоли (чтобы настроить фокус на конкретное окно в KDE)?

Мне нужно настроить фокус на VirtualBox в KDE, я написал сценарий KWin для этой цели, но я не могу понять, как запустить его с консоли.

То, что я пробовал:

Этот сценарий KWin работает в консоли сценариев Desktop Shell Scripting Console

Как открыть консоль Scripting консоли рабочего стола:

  1. Нажмите Alt + F2 , введите

  2. Запустить консоль wm

Сценарий:

// Main reference: http://techbase.kde.org/Development/Tutorials/KWin/Scripting // API: https://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9 // Sets focus to VirtualBox var clients = workspace.clientList(); for (var i=0; i<clients.length; i++) { print(clients[i].caption); var cap = clients[i].caption; if (cap.indexOf("- Oracle VM VirtualBox") != -1) { workspace.activeClient = clients[i]; } } 

Но когда я пытаюсь запустить его в Bash ( согласно этому методу ), сценарий, похоже, не настроен, поскольку я получаю эти ошибки:

 Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.kwin.Scripting was not provided by any .service files Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.kwin.Scripting was not provided by any .service files 

Я не знаю, как dbus работает внутри, поэтому отсюда я просто стараюсь.

Я попытался исправить эти проблемы, вызванные изменениями в новых версиях KDE:

QDBusViewer

Поэтому я запускаю qdbusviewer, чтобы посмотреть.

Это должен быть KWin вместо kwin.Scripting.

Я нахожу org.kde.KWin в левом списке и Scripting вправо, под org.kde.kwin.Scripting Я нахожу методы loadScript и запускаю. Я могу использовать эти методы вручную, дважды щелкнув по ним, загрузив файл сценария, и он работает, мой скрипт запускается, а VirtualBox получает фокус.

Поэтому я стараюсь изменить команды загрузки соответственно:

 dbus-send --print-reply --dest=org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript string:"/home/jk/msexcel_setfocus.kwinscript" dbus-send --print-reply --dest=org.kde.KWin /Scripting org.kde.kwin.Scripting.start 

Эти команды не дают ошибку, но она не работает.

Работает ли dbus вообще?

Я попробую что-то еще, чтобы увидеть, работает ли dbus вообще, и это работает (включение / отключение эффекта FPS):

 dbus-send --print-reply --session --dest=org.kde.KWin /Effects org.kde.kwin.Effects.loadEffect string:"showfps" dbus-send --print-reply --session --dest=org.kde.KWin /Effects org.kde.kwin.Effects.unloadEffect string:"showfps" 

Нумерованные записи

Таким образом, это дело в скрипте, связанном с выше, с пронумерованным путем, я нахожу, что в QDBusViewer иногда есть нумерованные записи в правой панели (они приходят и уходят). И там есть элемент Scripting и метод запуска там, где существует число. Поэтому я пробую это:

Эта команда дает число, соответствующее номеру, отображаемому в QDBusViewer.

 num=$(dbus-send --print-reply --dest=org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript string:"/home/jk/msexcel_setfocus.kwinscript" | awk 'END {print $2}') echo $num dbus-send --print-reply --dest=org.kde.KWin /$num org.kde.kwin.Scripting.run 

Но последняя команда не работает, и она не работает, запуская метод start (как указано выше) перед запуском, тогда он жалуется, что номер ушел.

 Error org.freedesktop.DBus.Error.UnknownObject: No such object path '/1' 

После всех этих неприятностей я нашел альтернативный способ установки фокуса ( установить фокус на новое окно ):

 wmctrl -i -a $(wmctrl -l | grep "\- Oracle VM VirtualBox" | tail -n 1 | cut -d ' ' -f1) 

Все еще интересно понять, как запускать сценарии KWin.