xdotool, как выбрать рабочий стол, отправляют F5 и возврат?

Это звучит простым; xdotool выбирает рабочий стол, моделирует нажатие клавиши F5 и возвращает фокус вызову окна / программа.

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

Я должен сделать это от удара / оболочка гнома.

Какие-либо идеи?


Этот проект связан с этим Вопросы и ответы, где значки привозят левый экран в черное целое из-за разного размера мониторов:

Благодаря справке Подесты я создал этот код:

TestIcons () {

    [[ $TestSeconds == "" ]] || [[ $TestSeconds == 0 ]] && TestSeconds=5

    local i Position File
    for (( i=0; i<${#IconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
        File="$ICONS_DIR"/"${IconsArr[((i+ICON_NAME_NDX))]}"
        Position="${IconsArr[((i+ICON_COL_NDX))]},${IconsArr[((i+ICON_ROW_NDX))]}"
        gvfs-set-attribute -t string "$File" \
                'metadata::nautilus-icon-position' "$Position"
    done

    wmctrl -k on        # Show desktop
    xdotool key F5      # Refresh desktop (show icon new positions)
    sleep $TestSeconds  # Pause for view
    wmctrl -k off       # Restore windows

    for (( i=0; i<${#OldIconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
        File="$ICONS_DIR"/"${OldIconsArr[((i+ICON_NAME_NDX))]}"
        Position="${OldIconsArr[((i+ICON_COL_NDX))]},${OldIconsArr[((i+ICON_ROW_NDX))]}"
        gvfs-set-attribute -t string "$File" \
                'metadata::nautilus-icon-position' "$Position"

    done

    wmctrl -k on        # Show desktop
    xdotool key F5      # Refresh desktop (show icon new positions)
    wmctrl -k off       # Restore windows

} # TestIcons

Это - то, на что похож экран:

iconic 2 optimized.gif

3
задан 31 May 2019 в 04:04

1 ответ

Скрипт ниже работы @ WinEunuuchs2Unix и является окончательным решением. Мой оригинальный ответ в конце.

#!/bin/bash

TestIcons () {

    [[ $TestSeconds == "" ]] || [[ $TestSeconds == 0 ]] && TestSeconds=5

    local i Position File
    for (( i=0; i<${#IconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
        File="$ICONS_DIR"/"${IconsArr[((i+ICON_NAME_NDX))]}"
        Position="${IconsArr[((i+ICON_COL_NDX))]},${IconsArr[((i+ICON_ROW_NDX))]}"
        gvfs-set-attribute -t string "$File" \
                'metadata::nautilus-icon-position' "$Position"
    done

    wmctrl -k on        # Show desktop
    xdotool key F5      # Refresh desktop (show icon new positions)
    sleep $TestSeconds  # Pause for view
    wmctrl -k off       # Restore windows

    for (( i=0; i<${#OldIconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
        File="$ICONS_DIR"/"${OldIconsArr[((i+ICON_NAME_NDX))]}"
        Position="${OldIconsArr[((i+ICON_COL_NDX))]},${OldIconsArr[((i+ICON_ROW_NDX))]}"
        gvfs-set-attribute -t string "$File" \
                'metadata::nautilus-icon-position' "$Position"

    done

    wmctrl -k on        # Show desktop
    xdotool key F5      # Refresh desktop (show icon new positions)
    wmctrl -k off       # Restore windows

} 
TestIcons

Несколько других xdotools команд, которые могут быть полезны в аналогичной ситуации:

Если в вашем оконном менеджере есть команда show desktop, это может быть полезно свернуть и вернуть все окна. Обычно для него установлено значение ctrl+alt+d:

xdotool key ctrl+alt+d

Если вы хотите сохранить текущее активное окно, чтобы позже восстановить его, вы можете использовать:

myWindow="$(xdotool getactivewindow)"

Чтобы минимизировать окно, которое вы можете использовать. Добавление его в цикл позволяет минимизировать все окна в качестве альтернативы show dekstop.

xdotool windowminimize $(xdotool getactivewindow)

Чтобы вернуть активное окно, которое вы сохранили, обратно в фокус:

xdotool windowactivate "$myWindow"

Чтобы закрыть активное окно, используйте:

xdotool getactivewindow windowkill

И самое главное, все эти команды что вы можете использовать с активным окном, вы можете на самом деле искать и применять к конкретным случаям. Например, поиск этого конкретного окна на основе заголовка.

xdotool search --desktop 0 --name "command line - xdotool" windowactivate

Существует много разных способов поиска окон, основанных на заголовке, классе, если они видны и т. Д. Он также может манипулировать как положениями окон, так и мышью. Man-страница для xdotol очень полная. Объединение их со скриптом bash дало бы большую свободу для достижения большинства целей.

0
ответ дан 31 May 2019 в 04:04

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

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