how хан I rewrite в bash рукописный шрифт схвати в one liner?

I want to add в gesture command using compiz. There is command plugin in CCSM, it lets you assign one of the screen углы on мышь move to execute в command. enter image description here

I want to toggle onboard screen keyboard to hide and шоу on мышь move to topleft screen угол.

Below рукописный шрифт toggles onboard but it must be в one liner to copy it into compiz command plugin

  #!/bin/bash

  wid=`xdotool search --name Keyboard|head -1`
  wstate=`xwininfo -id $wid | grep "Map State:"`

  if [[ "$wstate" == *IsViewable ]]
  then
      xdotool windowunmap $wid
  else
      xdotool windowmap $wid
  fi

How хан I make it one liner?

0
задан 11 December 2015 в 16:24

2 ответа

Так как необходимо выполнить команду со значением, данным предыдущей командой, по крайней мере, необходимо выполнить две различных команды. Поэтому первое хранилище значение wid и затем использует короткое if проверка:

wid=$(xdotool search --name Keyboard|head -1)
[[ "$(xwininfo -id "$wid" | grep "Map State:")" == *IsViewable ]] && xdotool windowunmap $wid || xdotool windowmap $wid

Это берет отдушину того, что if условие:

if [ ... ]; then
   do if true
else
   do if false
fi

Может быть записан как всего [ ... ] && do if true || do if false

Во всего одной строке:

wid=$(xdotool search --name Keyboard|head -1); [[ "$(xwininfo -id "$wid" | grep "Map State:")" == *IsViewable ]] && xdotool windowunmap $wid || xdotool windowmap $wid
4
ответ дан 26 July 2019 в 12:58

Можно сохранить код в сценарии удара с .sh расширение и обеспечить полный путь в текстовом поле.

И Ваша одна строка колотят код:

wid="$(xdotool search --name Keyboard|head -1)"; wstate="$(xwininfo -id $wid | grep "Map State:")"; if [[ "$wstate" == *IsViewable ]];then xdotool windowunmap $wid; else xdotool windowmap $wid; fi

Здесь ; используется для объединения multline кода удара строки в 1 строке.

3
ответ дан 26 July 2019 в 12:58

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

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