アプリケーションの起動時にアプリケーションを最大化するスクリプト

アプリケーションの起動時にアプリケーションを最大化するスクリプト

この質問が重複していることがわかります。
コマンドラインを介して画面上のアプリケーションのウィンドウサイズと位置を設定するには?
コマンドラインで最大化されたウィンドウのサイズ変更

最初のリンクで問題を解決できました。しかし、私はBash言語を学ぶつもりですが、次のスクリプトにどのような問題があるのか​​知りたいです。

#!/bin/bash

xfce4-settings-manager & sleep 0.1
xwininfo -name "xfce4-settings-manager" | grep xwininfo: | awk {'printf$4'}
wmctrl -i -r $1 -b add,maximized_vert,maximized_horz &

スクリプトを実行したら、「xwininfo」がアプリケーションに異なるID値を使用していることを確認してください。理由がわからない。誰でもこの問題を解決するのに役立ちますか?

よろしくお願いします。

答え1

あなたが探しているツールは悪魔の勢力(バージョン1でも2でも全く異なる設定言語を使用しています。)このサイトには、次のような多くの例があります。1 2 サム 4

スクリプトに問題があることが確認されましたジェフ・シャラーコメントから:出力が抽出される行はxwininfo呼び出しを挿入しませんwmctrl。スクリプトでコマンド出力を使用するには、次のようにします。コマンドの置き換え

windowid=$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')
wmctrl -i -r "$windowid" -b add,maximized_vert,maximized_horz &

行が長すぎるのを防ぐために中間変数を使用しましたが、すべての操作をインラインで実行することもできます。

wmctrl -i -r "$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')" -b add,maximized_vert,maximized_horz &

また、grepとawk呼び出しを組み合わせて単一のツールを使用する方が簡単であることがわかりました。

xwininfoルックアップウィンドウIDを使用する必要はありません。wmctrlウィンドウ名を渡すだけです。

wmctrl -r "xfce4-settings-manager" -b add,maximized_vert,maximized_horz &

答え2

あなたが欲しいので:

2行目の結果は3行目の$ 1によって取得されます。

あなたはできます:

#!/bin/bash

xfce4-settings-manager & sleep 0.1
wid=$(xwininfo -name "xfce4-settings-manager" | grep xwininfo: | awk {'printf$4'})
wmctrl -i -r "$wid" -b add,maximized_vert,maximized_horz &

ただし、別のバージョンを提案できる場合(Xモニターの前にないためテストされていません):

#!/bin/bash

xfce4-settings-manager & 
while ! pgrep xfce4-settings-manager > /dev/null
do
  :
done
wid=$(xwininfo -name "xfce4-settings-manager" | awk '/xwininfo:/ { print $4 }')
wmctrl -i -r "$wid" -b add,maximized_vert,maximized_horz

多様性:

  • wmctrlがバックグラウンドにあるべきかどうかわからないので削除しました。&
  • awkは「grep」できるので、awkとgrepを組み合わせました。
  • プロセスを見つけるように要求するループに変更しましたsleep 0.1xfce4-settings-managerその期間中に開始されると仮定)。pgrep

答え3

答えありがとうございます。上記の説明では、@Gillesと@Jeffが説明した操作を試しましたが、スクリプトは機能しません。最初のメッセージで述べたのと同じ問題です。

何が起こっているのかを一行ずつ説明します。

  1. このスクリプトは「xfce4-settings-manager」を起動します。

    USER@PC:~$ xfce4-settings-manager とスリープ 0.1;

[3]9825

  1. 「xfce4-settings-manager」ウィンドウの値が必要です。この例では、結果を出力したいと思います。台本にはGilesとJeffが言ったように書きました。

    USER@PC:~$ xwininfo -name "xfce4-settings-manager" | USER@PC:~$ xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}' 0x5400001

  2. 最後のコマンドにウィンドウ値(0x5400001)が含まれていましたが、ウィンドウは最大化されませんでした。

    USER@PC:~$ wmctrl -i -r 0x5400001 -b 追加、maximized_vert,maximized_horz

[4]9852

  1. 「xwininfo」コマンドを実行し、「xfce4-settings-manager」ウィンドウを選択しましたが、結果は次のとおりです。

    ユーザー@PC:~$ xwininfo

xwininfo:ウィンドウでマウスをクリックして情報を知りたいウィンドウを選択します。

xwininfo: ウィンドウ ID: 0x5800003 "設定"

絶対左上隅X:343

絶対左上隅Y:286

相対左上隅X:5

相対左上隅Y:19

幅:680

身長:195

深さ: 24

視覚的:0x20

ビジュアルグレード:トゥルーカラー

ボーダー幅:0

クラス:入出力

カラーマップ:0x22(インストール済み)

ビット重力状態: NorthWestGravity

ウィンドウ重力状態: NorthWestGravity

バックアップストレージの状態:無駄

保存状態:いいえ

地図の状態: IsViewable

リダイレクト状態を無視:いいえ

コーナーキック: +343+286 -343+286 -343-287 +343-287

-幾何学的サイズ 680x195+338+267

[2] xfce4-settings-manager 完了

[4]+ wmctrl -i -r 0x5400001 -b 追加、最大化_vert、最大化_horz完了

「xfce4-settings-manager」のウィンドウ値は、コマンドラインから値を取得するのか、カーソルを使用してウィンドウを選択するのか(0x5400001と0x5800003)によって異なります。

どんなアイデアがありますか?

答え4

evinceウィンドウのタイトルはPDFファイルのタイトルと同じで、テキスト証拠はありません。したがって、もう1つの方法は、しばらく待ってから(sleep 0.4証拠で十分です)、wmctrl -lリストの最後のウィンドウを最大化することです(たとえば、最後の項目が追加されている)、次のように表示されます。

evince file.pdf & sleep 0.4; wmctrl -i -r "$(wmctrl -l | tail -1 | fgrep -o '^\S+')" -b add,maximized_vert,maximized_horz

これはすべてのアプリケーションに適用されますが、次のバージョンにアップグレードする前に十分な時間を待つ必要があります。wmctrl

関連情報