переход на определенный экран в awesome wm

Очевидно, fish использует ; и для && и () для замены команд.

Так что простое изменение команды на

pacman -Qtdq; and sudo pacman -Rns (pacman -Qtdq)

должно сработать.


Отвечая на вопрос, обычно вы можете заставить оператор выполняться в Bash, просто перенаправив его на STDIN команды bash любым способом (обратите внимание, что я использую Zsh, который поддерживает здесь строки, и что оператор печатает содержимое переменной, специфичной для Bash):

% <<<'echo $BASH' bash
/bin/bash

Однако в качестве общего правила я бы предложил использовать опцию bash -c. Например, здесь строки и трубы не слишком хорошо сочетаются с несколькими командами, здесь документы будут расширены текущей оболочкой, и т.д. (тем не менее, они должны поддерживаться текущей оболочкой).

В целом bash -c кажется всегда надежным вариантом:

bash -c 'pacman -Qtdq && sudo pacman -Rns $(pacman -Qtdq)'

Что для нескольких команд становится чем-то вроде этого:

bash -c '
command1
command2
command3
'

3
12.04.2019, 10:44
2 ответа

Насколько я знаю, для этого нет привязок по умолчанию, но существуют необходимые методы для их создания:

  • прямая фокусировка на экранеawful.screen.focus. Принимает экранный объект для перемещения фокуса.
  • перемещение клиентаclient:move_to_screen. Обратите внимание, что вы захотите добавить это в таблицу привязок клиентов, а не в глобальную.

Если вы хотите создать привязки на основе выходных имен randr, вы можете использовать свойствоoutputsэкранных объектов. Эта таблица имеет выходные имена randr как ключи , так что это немного запутанно для этой цели. Я бы попробовал что-то вроде этого:

for s in screen do
  for out,_ in pairs(s.outputs) do
    if out == "eDP1" then
      globalkeys = awful.util.table.join(globalkeys,
        awful.key({modkey}, "F1", function() awful.screen.focus(s) end))
    elseif out == "DP-1-2" then
      --...
    end
  end
end

Я не могу проверить это прямо сейчас, здесь нет нескольких экранов.

2
27.01.2020, 21:24

Основываясь на ответе crater2150 , я нашел рабочее решение. Я публикую это, если у кого-то есть такая же проблема.

-- set up keybindings based on existing monitors
for s in screen do
  for screen_name, _ in pairs(s.outputs) do
    if screen_name == "eDP-1" then
      globalkeys = awful.util.table.join(globalkeys,
          awful.key({modkey}, "F1", function() awful.screen.focus(s) end))
    elseif screen_name == "DP-2-2" then
      globalkeys = awful.util.table.join(globalkeys,
          awful.key({modkey}, "F2", function() awful.screen.focus(s) end))
    elseif screen_name == "DP-1-2" then
      globalkeys = awful.util.table.join(globalkeys,
          awful.key({modkey}, "F3", function() awful.screen.focus(s) end))
    end
  end
end

Просто переберите все экраны и, если интересующие вас существуют, добавьте привязку клавиш, которая переключает на соответствующий экран.

0
27.01.2020, 21:24

Теги

Похожие вопросы