rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

X Window System アクティブウィンドウ取得、指定したウィンドウのアクティブ化

2022 Jan. 23.

参考ページ [Bash] 特定のアプリで複数開いたウィンドウのうち前面のものをアクティブにするスクリプト : mackroの製作日記

アクティブウィンドウ情報を取得
xprop -root _NET_ACTIVE_WINDOW


xpropのウィンドウ情報出力からウィンドウIDを取得
ActiveWin=`xprop -root _NET_ACTIVE_WINDOW`
ActiveWinId=`echo ${ActiveWin} | grep -oP "0x[0-9aa-fA-F]+" | head -n 1


指定したウィンドウID(WinId)のウィンドウをアクティブにする
wmctrl -i -R WinId

ImageMagick displayコマンドによる画像の縮小拡大表示とスクリーン上の表示位置指定

2022 Jan. 23.

参考ページ (HobNote)ImageMagick option

"-resize"で画像を縮小拡大し、"-geometry"で表示キャンバスの大きさとスクリーン上の位置を指定する。


display -resize WIDTHxHIGHT -geometry WIDTHxHIGHT+OffsetWidth+OffsetHight PictureFile


Sample

# get screen resolution
ScreenX=$(xdpyinfo | grep dimensions  | grep -Po -m 1 "[0-9]+x" | head -n 1)
ScreenX=${ScreenX%x}

ScreenY=$(xdpyinfo | grep dimensions  | grep -Po -m 1 "x[0-9]+" | head -n 1)
ScreenY=${ScreenY#x}

# set display size
DisplayX=$(( ${ScreenX} * ${Size} / 100 ))
DisplayY=$(( ${ScreenY} * ${Size} / 100 ))

  # SIZE: ratio to screen-resolution.
  #   Unit of SIZE is %.(Integer in 0-100)
  #   Display-size of picture is SIZE(%) of screen-resolution.

# get location of picture in screen
case "${Loc}" in
  # Loc indicates area of screen in which picture is displayed.
  nw) # North West
    Geomet="${DisplayX}x${DisplayY}+0+0"
    ;;
  ne) # North East
    OffX=$(( ${ScreenX} - ${DisplayX} )) 
    Geomet="${DisplayX}x${DisplayY}+${OffX}+0"
    ;;
  sw) # South West
    OffY=$(( ${ScreenY} - ${DisplayY} )) 
    Geomet="${DisplayX}x${DisplayY}+0+${OffY}"
    ;;
  se) # South East
    OffX=$(( ${ScreenX} - ${DisplayX} )) 
    OffY=$(( ${ScreenY} - ${DisplayY} )) 
    Geomet="${DisplayX}x${DisplayY}+${OffX}+${OffY}"
    ;;
  ce) # Center
    OffX=$(( ${ScreenX} / 2 - ( ${DisplayX} / 2) )) 
    OffY=$(( ${ScreenY} / 2 - ( ${DisplayY} / 2) )) 
    Geomet="${DisplayX}x${DisplayY}+${OffX}+${OffY}"
    ;;
  *)
    echo "Illegal value for location." 1>&2
    exit 1
    ;;
esac

display -resize "${DisplayX}x${DisplayY}" -geometry "${Geomet}" PictureFile

linux ディレクトリ属性

2022 Jan. 10.

ディレクトリの属性


r : ディレクトリ内のファイル一覧を表示可能
w : ディレクトリ内でのファイル作成/削除/移動(名前変更)可能
x : ディレクトリ内のファイルにアクセス可能。ディレクトリへ移動可能

出典 Linux ディレクトリのパーミッション(アクセス権)について | TURNING POINT


スティッキービット

設定されたディレクトリは、すべてのユーザがファイルおよびディレクトリを作成書き込みを行えるようになる。
しかし、作成したファイルやディレクトリを削除出来るのは所有者だけとなる。 出典 【Linux初心者向け】スティッキービットとは?と設定方法
所有者のみがディレクトリ内のファイル削除やファイル名変更をできる。
スティッキービットが指定されているディレクトリは,その他のユーザーの実行権限(x)がスティッキービット(t)になっている。 出典 【 アクセス権限とは 】 | 日経クロステック(xTECH)

sedコマンド 置換

2022 Jan. 09.

  • テキストファイルをパイプでsedの標準入力に流し、結果を同じテキストファイルにリダイレクトすると、そのテキストファイルのすべての内容が失われる。(サイズがゼロのファイルになる)

  • 区切り文字は / (スラッシュ) 以外でもよい

(OKな例)
$ cat FILE | sed -e "s/STR1/STR2/"
$ cat FILE | sed -e "s:STR1:STR2:"
$ cat FILE | sed -e "s/STR1/STR2/" > FILE2

(NGな例)
$ cat FILE | sed -e "s/STR1/STR2/" > FILE

sedコマンド 行削除

2022 Jan. 09.

  • 行削除での区切り文字は / (スラッシュ) でなけれなならない

  • テキストファイルをパイプでsedの標準入力に流し、結果を同じテキストファイルにリダイレクトすると、そのテキストファイルのすべての内容が失われる。(サイズがゼロのファイルになる)

(OKな例)
$ cat FILE | sed -e "/STR/d"
$ cat FILE | sed -e "/STR/d" > FILE2

(NGな例)
$ cat FILE | sed -e ":STR:d"
$ cat FILE | sed -e "/STR/d" > FILE

シェルスクリプト 配列 全要素の展開([@])

2022 Jan. 09.

出典 配列を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス

インデックスに @ を指定することで配列内の全ての要素が別々の値として出力される。
インデックスに * を指定することで配列内の全ての要素がスペース連結された1つの値として出力される。

配列の全要素の展開・参照には "${MyArray[@]}" を使う


$ MyArray=("aa" "bb" "AA" "BB")

$ for i in "${MyArray[@]}"
> do
> echo $i
> done
aa
bb
AA
BB

$ for i in "${MyArray[*]}"
> do
> echo $i
> done
aa bb AA BB

$ MyStr1=`echo "${MyArray[@]}"`
$ echo "${MyStr1}"
  =>  aa bb AA BB

$ MyStr2=`echo ${MyArray[@]}`
$ echo "${MyStr2}"
  =>  aa bb AA BB

$ MyStr3=`echo "${MyArray[*]}"`
$ echo "${MyStr3}"
  =>  aa bb AA BB

$ MyStr4=`echo ${MyArray[*]}`
$ echo "${MyStr4}"
  =>  aa bb AA BB