Горячие клавиши в Lubuntu

Модератор: adventurer


Sipnet
Сообщения: 4
Зарегистрирован: 07 апр 2019, 15:36

Re: Горячие клавиши в Lubuntu

#81

Сообщение Sipnet » 07 апр 2019, 15:44

Здравствуйте!
Подскажите, пожалуйста, как с помощью АЛТ + ТАБ переключаться между окнами на всех рабочих столах, а не только на текущем рабочем столе? кажется, где-то была галка такая, но все перерыл и не нашел.

Аватара пользователя

Автор темы
adventurer
Супермодератор
Сообщения: 3294
Зарегистрирован: 15 июн 2011, 18:24

Re: Горячие клавиши в Lubuntu

#82

Сообщение adventurer » 07 апр 2019, 16:30

А можно поподробнее? Какие-то окна отображаются на всех рабочих столах?


Sipnet
Сообщения: 4
Зарегистрирован: 07 апр 2019, 15:36

Re: Горячие клавиши в Lubuntu

#83

Сообщение Sipnet » 07 апр 2019, 19:23

adventurer, ситуация возникает, когда нажимаешь АЛТ + ТАБ. Появляется всплывающее окно, в котором ТАБ ом можно выбрать нужное окно. Проблема в том, что в этом всплывающем окне присутствуют только те окна, которые открыты на данном рабочем столе. А не на всех столах. Окна открытые на других рабочих столах отсутстувуют. Сейчас, я уже не уверен, что галка была в Лубунте. Возможно я перепутал с Убунтой которая у меня была долгое время до этого.


ВикторА
Сообщения: 531
Зарегистрирован: 06 ноя 2011, 11:10

Re: Горячие клавиши в Lubuntu

#84

Сообщение ВикторА » 04 май 2020, 15:39

Может, кому пригодится. Так как из гугла мне информация не подошла, чтобы запустить терминал с клавиатуры.
Сменил окружение с лубунты на LXDE и обнаружил, что терминал по Ctr+Alt+T не запускается. Это в 18.04.
Спойлер
Показать
если его через меню запустить, то потом новые окна так открываются, а изначально-нет. В лубунту проблем не было.
Пробовал через графику добавить раскладку для включения-ничего не вышло...
Открыл ~/.config/openbox/lxde-rc.xml В нем терминала не обнаружил. Здесь же в файле lubuntu-rc.xml включение терминала было...
Скопировал строчки с лубунты и добавил в lxde - не заработало. Тогда исправил этот файл в соответствии с настройками для других программ и терминал стал запускаться нормально. Только после исправления сразу надо либо окружение перезагрузить, или файл...
Вот как команда должна быть прописана в ~/.config/openbox/lxde-rc.xml для запуска терминала с клавиатуры:
<!-- Launch a terminal on Ctrl + Alt + T-->
<keybind key="C-A-T">
<action name="Execute">
<startupnotify>
<enabled>true</enabled>
<name>lxsession-default terminal</name>
</startupnotify>
<command>lxterminal</command>
</action>
</keybind>


slim8020
Сообщения: 1
Зарегистрирован: 10 май 2020, 17:56

Re: Горячие клавиши в Lubuntu

#85

Сообщение slim8020 » 10 май 2020, 19:21

В Lubuntu 19.04 и выше горячие клавиши есть как в openbox, так и в lxqt-globalkeysd, причем из-за последнего в openbox сочетания c super (win) не работают. Можно отключить вручную:
Меню->Параметры->Настройки LXQt->Сочетания кавиш, и снять галку с пункта Super_L.
Только это нужно делать при каждой перезагрузке.
Поэтому я написал скрипт:
super_key_reset.sh
Показать

Код: Выделить всё

#!/bin/bash
function key_toggle {
dbus-send --type=method_call --print-reply --dest=org.lxqt.global_key_shortcuts /daemon org.lxqt.global_key_shortcuts.daemon.enableAction uint64:$1 boolean:$2
}
KEYNUM=$(grep Super_L ~/.config/lxqt/globalkeyshortcuts.conf | sed s/[^0-9]//g)
key_toggle $KEYNUM true
key_toggle $KEYNUM false
Он ищет в файле настроек глобальных сочетаний клавиш lxqt номер строчки с клавишей Super_L и затем отправляет два DBus сообщения включить/выключить сочетание.
Закинул в /usr/bin/, установил разрешение на выполнение, добавил в автозапуск:
Меню->Параметры->Настройки LXQt->Настройки сессии LXQt -> Автозапуск -> Добавить с именем и с галкой "Ожидание системного лотка"
Можно, конечно и вовсе отключить lxqt-globalkeysd:
Меню->Параметры->Настройки LXQt->Настройки сессии LXQt -> Основные настройки в модулях убрать галку с Голобальных сочетаний клавиш.
При этом не будут работать сочетания, которые связаны с lxqt-panel: Меню(пуск), Громкость, Активировать окно по номеру (Win+1,2...).
Т.к. эти действия отправляют DBus сообщения в lxqt-panel.
Они удобные, я к ним привык и отказываться от них не хотелось.
Чисто из спортивного интереса я понаблюдал DBus-monitor'ом, и вытащил все нужные команды которые lxqt-globalkeysd отправляет в lxqt-panel.
Правда прикаждай загрузке lxqt-panel получает новое bus_name, поэтому я написал 2 скрипта:
panel_busname.sh
Показать

Код: Выделить всё

#!/bin/bash
GOOD=false
PANEL_PID=$(pidof lxqt-panel)
IFS=$'\n'
for BUSN in $(dbus-send --${1:-session} --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames | awk '/string \":/,/\"/ {print $2}' | sed s/\"//g | sort -r)
do 
        PID=$(($(gdbus call --${1:-session} --dest org.freedesktop.DBus --object-path / --method org.freedesktop.DBus.GetConnectionUnixProcessID $BUSN 2>/dev/null | cut -c9- | cut -d',' -f1) + 0))
        if [ "$PID" -eq "$PANEL_PID" ] ; then 
                echo $BUSN > ~/.busname
                GOOD=true
                break
        fi
done
if [ ! $GOOD ] ; then 
        $0 system
fi
Этот скрипт получает спискок всех dbus имен, и оставляет только имена формата :1.xx, далее для каждого получает PID сравнивает с PID'ом lxqt-panel. При совпадении сохраняет это имя в ~/.busname, он будет использован вторым скриптом. На всяки случай добавил поиск и в пространстве system в случае неудачи. Как и с предыдущим скриптом закинул в /usr/bin/, установил разрешение на выполнение, добавил в автозапуск (см. выше)
Сначала хотел вместо файла истользовать переменные окружения, но ни openbox, ни автозапуск lxqt не хотя запускать . panel_busname.sh, ни source panel_busname.sh, а без этого переменная окуржения будет не видна. Как вариант можно запустить службой через systemctl, но это в слежующей серии.
panel_act.sh
Показать

Код: Выделить всё

BUSNAME=$(<~/.busname)
dbus-send --type=method_call --dest=$BUSNAME /global_key_shortcuts/panel/$1 org.lxqt.global_key_shortcuts.client.activated
Этот простой скрипт отправляет dbus сообщение по имени из файла записанного предыдущим скриптом. Аргумены к нему из Сочетаний кавиш.
Сохранил в /usr/bin/, установил разрешение на выполнение. Запускать его будет openbox.
После этих двух скиптов, я добавил/изменил следующие пункты в ~/.config/openbox/
lxqt-rc.xml
Показать

Код: Выделить всё

<!-- Keybindings for task switching  Lubuntu specific -->
  	 <keybind key="W-1">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_1</command>
      </action>
    </keybind>
  	 <keybind key="W-2">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_2</command>
      </action>
    </keybind>    
  	 <keybind key="W-3">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_3</command>
      </action>
    </keybind>
  	 <keybind key="W-4">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_4</command>
      </action>
    </keybind>
   	<keybind key="W-5">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_5</command>
      </action>
    </keybind>
  	 <keybind key="W-6">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_6</command>
      </action>
    </keybind>
  	 <keybind key="W-7">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_7</command>
      </action>
    </keybind>
  	 <keybind key="W-8">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_8</command>
      </action>
    </keybind>
   	<keybind key="W-9">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_9</command>
      </action>
    </keybind>
  	 <keybind key="W-0">
      <action name="Execute">
        <command>panel_act.sh taskbar/task_10</command>
      </action>
    </keybind>
<!-- Keybindings for running Menu from Lxqt-panel -->
    <keybind key="C-Escape">
      <action name="Execute">
        <command>panel_act.sh mainmenu/show_hide</command>
      </action>
    </keybind>
<!-- Keybindings for Multimedia Keys  -->
    <keybind key="XF86AudioRaiseVolume">
      <action name="Execute">
        <command>panel_act.sh volume/up</command>
      </action>
    </keybind>
    <keybind key="XF86AudioLowerVolume">
      <action name="Execute">
        <command>panel_act.sh volume/down</command>
      </action>
    </keybind>
    <keybind key="XF86AudioMute">
      <action name="Execute">
        <command>panel_act.sh volume/mute</command>
      </action>
    </keybind>
    
Тут все просто в скрипт передается соответствующий команде аргумент.
Затем я отключил lxqt-globalkeysd:
Меню->Параметры->Настройки LXQt->Настройки сессии LXQt -> Основные настройки в модулях убрать галку с Голобальных сочетаний клавиш.
И убрал из автозагрузки самый первый скрипт super_key_reset.sh чтобы он не отправл сообщения в пустоту.
После перезагрузки все прекрасно работает через openbox без lxqt-globalkeysd.

Ответить