В Linux, как смотреть событие создания окна в Bash или C или C ++ - PullRequest
0 голосов
/ 01 октября 2018

редактор linux linux всегда выскакивает «Hold On», даже если мое текущее окно не является редактором Unity, поэтому я надеюсь минимизировать выигрыш «Hold On» при создании этого выигрыша, вот мой код:

#!/bin/bash
# regex for extracting hex id's
grep_id='0[xX][a-zA-Z0-9]\{7\}'

xprop -spy -root _NET_ACTIVE_WINDOW | grep --line-buffered -o $grep_id |
while read -r id; do
    class="`xprop -id $id WM_CLASS | grep Unity`"
    win_title="`xprop -id $id WM_NAME | grep Hold\ On`"
    if [ -n "$class" ] && [ -n "$win_title" ]; then
      xdotool windowminimize $id
    fi
done

, ноПриведенный выше код имеет проблему, _NET_ACTIVE_WINDOW будет срабатывать каждый раз, когда я активирую «Hold On», мне нужно только минимизировать «Hold On» при создании окна, как мне это сделать?

в linux xfce, «Window Manager»>«автоматически придавать фокус только что созданному окну», так что, я думаю, существует какой-то способ наблюдать за событием создания окна enter image description here

1 Ответ

0 голосов
/ 01 октября 2018

вот мое решение ruby: я кэширую свернутые идентификаторы окон, одно окно свернуть только один раз

system %Q(notify-send "auto hide Unity 'Hold On' popup, conf: #{__FILE__}")
# bash_script = File.expand_path("../../sh/auto_hide_unity_hold_on_popup.sh", __FILE__)
# system "bash #{bash_script}"

pipe = IO.popen("xprop -spy -root _NET_ACTIVE_WINDOW")
wids = []
while (line = pipe.gets)
  wid = line.match(%r{0x[\da-z]{2,}})
  kls = `xprop -id #{wid} WM_CLASS | grep Unity`
  win_title = `xprop -id #{wid} WM_NAME | grep "Hold On"`
  if !wids.include?(wid) && kls != "" && win_title != ""
    wids << wid
    if (wids.size > 20)
      wids = wids[-20..-1]
    end
    `xdotool windowminimize #{wid}`
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...