Страница 1 из 1

Эмуляция нажатия клавиш в скрипте

Добавлено: 16 янв 2018, 21:47
mint
Может кто то подскажет?
в общем нужно обновить окно вкладку nemo вне скрипта клавиши "ctrl+r" или "F5"
в скрипте пытаюсь так:

xdotool search --name "Домашняя папка" windowactivate key ctrl+r
окно nemo "Домашняя папка" вылазит на передний план но не обновляется

Эмуляция нажатия клавиш в скрипте

Добавлено: 17 янв 2018, 08:34
Chocobo
mint,

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

app='Домашняя папка'
window_id=`wmctrl -l | grep "$app" | cut -d' ' -f1`
wmctrl -i -R $window_id && xdotool key F5

Эмуляция нажатия клавиш в скрипте

Добавлено: 17 янв 2018, 17:13
mint
1 раз сработало потом перестало, попробовал запустить с терминала такая ошибка

X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 20 (X_GetProperty)
Resource id in failed request: 0x7600003
Serial number of failed request: 16
Current serial number in output stream: 16
wmctrl: ключ должен использоваться с аргументом — «R»

Эмуляция нажатия клавиш в скрипте

Добавлено: 18 янв 2018, 18:10
mint
Chocobo,
обновляет не окно "Домашняя папка" а окно терминала из которого запущен скрипт появляется новая строка с символом "~"

Эмуляция нажатия клавиш в скрипте

Добавлено: 26 мар 2018, 01:25
Dja
mint, если нужно через время, то...
напишу свой вариант, пусть и кривой.
Итак, допустим, мы хотим обновлять окно ФМ каждую минуту.
При этом у нас есть папка скриптов.
~/.scripts
Теперь создадим скрипт

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

cd ~/.scripts
nano upnemo.sh
#!/bin/sh

xdotool key --window XXXXXXXXX "F5"
где, XXXXXXXXX - числовой идентификатор окна, который в свою очередь мы получаем из

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

xdotool getmouselocation --shell
$ хдемышь
X=1161
Y=473
SCREEN=0
WINDOW=92274689
Теперь нам осталось зациклить.

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

watch --interval=60 ~/.scripts/upnemo.sh
Делаем алиасы

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

alias хдемышь="xdotool getmouselocation --shell"
alias апнемо="watch --interval=60 ~/.scripts/upnemo.sh"
alias наноапнемо="nano ~/.scripts/upnemo.sh"
В итоге:
делаем раз: "хдемышь" - узнаем ID окна.
делаем два: "наноапнемо" - меняем ID окна, ставя нужный.
делаем три: "апнемо".
Цель достигнута.
Возможно кто напишет сценарий лучше.

Эмуляция нажатия клавиш в скрипте

Добавлено: 26 мар 2018, 21:22
mint
Dja, Попробовал ваш вариант, не работает
sleep 5 ; WIN=$(xdotool getmouselocation --shell | sed '/WINDOW/!d;s/^.*=//') ; xdotool key --window $WIN "F5"
У себя для теста использовал задержку в 5 секунд чтоб попробовать на разных окнах, id окна определяется, xdotool отрабатывает без ошибок, похоже он это вообще не умеет (передавать клавиши окнам) проверьте у себя пожалуйста

Эмуляция нажатия клавиш в скрипте

Добавлено: 26 мар 2018, 21:34
Dja
mint, у меня текст в HexChat, к примеру, передает. И ентером посылает. Уж обновлять окна не приходилось ))) Даже не знаю как проверить. Это ж надо чтоб какое-то изменение делалось. А так то смысл обновлять

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

xdotool type --window 111149059 "текст" && xdotool key --window 111149059 "Return"

Эмуляция нажатия клавиш в скрипте

Добавлено: 26 мар 2018, 21:42
mint
Dja, у меня скрипт вносит изменения и они видны только при обновлении окна клавишей F5

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

#!/bin/bash
DCLICK () {
xdg-open "$3/$4"
} 
export -f DCLICK

GUI () { 
for i in $(ls -1 "$1" | sed 's/ //g')
do  
       A=$(echo "$i" | sed 's// /g') 
       grep -wq "$A" "$1/.hidden" && echo -e "TRUE\nСкрыто\n$1"|| echo -e "FALSE\nВидимый\n$1"
       echo "$A"
done | yad --list --checklist --title='' --window-icon='imagemagick' --width=400 --height=400\
 --dclick-action='bash -c "DCLICK %s"' --tooltip-column=2 --no-rules-hint --print-all\
 --column='' --column='подсказка:HD' --column='Директория:HD' --column='Скрытые элементы обозначены галкой'
} 

REZ=$(GUI "$1") 

[ $? -ne 0 ] && exit # если нажата кнопка "Ok" то продолжаем скрипт

REZULTAT=$(echo "$REZ" | awk  -F "|" '/^TRUE/ {print $4}')

if [ -z "$REZULTAT" ] 
  then  rm "$1/.hidden" 
  else echo "$REZULTAT" > "$1/.hidden"
fi

Эмуляция нажатия клавиш в скрипте

Добавлено: 26 мар 2018, 21:46
mint
Вот так выглядит gui

Эмуляция нажатия клавиш в скрипте

Добавлено: 26 мар 2018, 21:52
mint
Вот файл Action

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

[Nemo Action]

Name=Скрыть объекты

Comment=Позволяет скрыть файлы директории без добавления точки перед именем, по прямому запросу объекты доступны

Exec=hidden.sh '%P'

Icon-Name=imagemagick

Selection=none

Extensions=any;

Conditions=dbus org.Cinnamon;

EscapeSpaces=false

Эмуляция нажатия клавиш в скрипте

Добавлено: 26 мар 2018, 22:10
Dja
mint,