Я хочу, чтобы справка изменила сценарий для распознавания и Firefox и Firefox (Частный Просмотр)

У меня есть этот сценарий, который работает через сочетание клавиш (и переключает таблицу стилей расширения Стилуса *** включения - выключения). Это специально для максимизируемых окон, таким образом, значения xdotool не изменятся:

#!/bin/bash

xgg="$(xdotool getactivewindow getwindowname)"

if [[ "$xgg" == *" - Mozilla Firefox" ]]
  then
    xdotool mousemove --sync 18 54 click 1 
    sleep 0.2
    xdotool mousemove --sync 134 85 click 1
    sleep 0.2
    xdotool mousemove --sync 1365 85 click 1
    sleep 0.2
    xdotool mousemove --sync 683 384
fi

Это проверяет, является ли окно в фокусе Firefox из-за *" - Mozilla Firefox", который является, как заголовки конца окон Firefox, и, если он соответствует, он выполняет последующие команды xdotool.

Я теперь хотел бы, чтобы команды xdotool работали, даже если окно является Частным экземпляром Просмотра Firefox.

Если у меня есть и обычное окно Firefox и частное открытое окно просмотра, wmctrl -l шоу это:

$ wmctrl -l
0x0260000b -1    N/A Desktop — Plasma
0x02600016 -1    N/A Plasma
0x03e00018  0 kububb Newest Questions - Ask Ubuntu - Mozilla Firefox
0x03e001cd  0 kububb Newest Questions - Ask Ubuntu - Mozilla Firefox (Private Browsing)
0x05a00006  0    N/A bash: dkb — Konsole
$ 

Какой regex требуется, чтобы сценарий распознал обоих - Mozilla Firefox и - Mozilla Firefox (Private Browsing) в конце заголовков окон?

*** У меня есть значок для Стилуса слева от строки поиска. Когда значок нажат однажды, выпадающее появляется. Второй щелчок (в определенной области выпадающего) переключает таблицу стилей вкл\выкл.

2
задан 5 November 2019 в 16:00

2 ответа

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

if [[ "$xgg" == *" - Mozilla Firefox"* ]]

Или с тех пор существует только две возможности для Mozilla Firefox, т.е. Mozilla Firefox и Mozilla Firefox (Private Browsing), можно использовать логичный ИЛИ в if, чтобы быть более конкретными.

if [[ "$xgg" = *" - Mozilla Firefox" ]] || [[ "$xgg" = *" - Mozilla Firefox (Private Browsing)" ]]

Или согласно комментарий Bose DK:

if [[ "$xgg" == *?(" - Mozilla Firefox"|" - Mozilla Firefox (Private Browsing)") ]]
3
ответ дан 2 December 2019 в 01:41

Просто используйте шарик (придеритесь к мелочам, но == берет шарики не регулярные выражения), который позволяет строки после Firefox:

#!/bin/bash

xgg="$(xdotool getactivewindow getwindowname)"
if [[ "$xgg" = *"Mozilla Firefox"* ]]
then
    xdotool mousemove --sync 18 54 click 1 
    sleep 0.2
    xdotool mousemove --sync 134 85 click 1
    sleep 0.2
    xdotool mousemove --sync 1365 85 click 1
    sleep 0.2
    xdotool mousemove --sync 683 384
fi

, С другой стороны, так как Вы используете [[ так или иначе, можно использовать соответствие regex:

#!/bin/bash

xgg="$(xdotool getactivewindow getwindowname)"
if [[ "$xgg" =~ "Mozilla Firefox" ]]
then
    xdotool mousemove --sync 18 54 click 1 
    sleep 0.2
    xdotool mousemove --sync 134 85 click 1
    sleep 0.2
    xdotool mousemove --sync 1365 85 click 1
    sleep 0.2
    xdotool mousemove --sync 683 384
fi
3
ответ дан 2 December 2019 в 01:41

Другие вопросы по тегам:

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