ここでKDEを使用していますが、他のデスクトップ環境でも機能するソリューションがあるかもしれません。私はよくたくさんの窓を扱っています。ほとんどのウィンドウには多くのタブが含まれています(たとえば、多くのタブがあるDolphinウィンドウ、またはFirefox、Konsoleなど)。ウィンドウのタイトルは現在のタブに基づいて変更されます(ほとんどの場合、ほとんどの場合に役立ちます)が、非常に多くのウィンドウを操作するときは、少し整理して手動で再作成できます) -ウィンドウに名前を付け、アプリケーションが指定するウィンドウタイトルを上書きします。さまざまなタブを整理してグループ化するために使用したウィンドウを簡単に区別できるように、1つのFirefoxウィンドウを「研究」、もう1つのFirefoxウィンドウを「ドキュメント」と名付けたとします。
理想的には、ウィンドウのタイトルバーをクリックして簡単にカスタム名を付けることができればよいのですが、機能する限り、少し面倒な解決策で十分です。
私はもう試した wmctrl -r :SELECT: -T "Research"
ただし、これは一時的にしか機能しません(たとえば、タブを切り替えるときなど、アプリケーションがタイトルを変更すると、タイトルが元に戻ります)。
あなたが探しているものは、ウィンドウタグ付け機能のように聞こえます。 KDEがこれをサポートしているとは思えませんが、他のWM( XMonad やDWMなど)はサポートしています。
したがって、この生産性の向上を実現する1つの可能性は、 XMonadのトレードkwin
in および タグ付けを行うようにXMonadを構成する です。 2番目のリンクで説明されているXMonadタグ付けメカニズムは、キーの組み合わせをバインドして、フォーカスされたウィンドウにタグを付けることができるプロンプトを開くことです。 (XMonadの設定は実際にはHaskellプログラムなので、#xmonadで助けを求めることをためらわないでください。
編集:私はすべての人に少なくともタイリングWMを試すことをお勧めしますが、XMonadは一般的にWMを並べて表示すると、「シンプルフロート」モードがあります。タグ付けレイアウトと非タイルレイアウトをサポートする他のWMは確かにありますが、KDEとの相互運用性については知りません。
ウィンドウのタイトルを書き込み禁止に設定する方法はないので、多くのプログラムは既に発見したさまざまなアクションでタイトルをリセットするため、その問題の解決策はありません。
しかし、おそらくKDEとGnomeの人々にとっては素晴らしい提案です;-)
私は同じことを同じ理由で探していました。この70行のスクリプトでは、これに多くの時間を費やすことになりました。
それはどのように機能しますか?
次に、バックグラウンドでループを開始し、3秒ごとに確認し、変更された場合はタイトルを設定します。
警告:同じウィンドウで2回実行しないでください。スクリプトは完全ではありません。
スクリプト名の例:sticky-title
#!/bin/bash
# stop all instance of this script if "killall" provided as first argument
if [ "$1" == "killall" ]; then
scriptname=$(basename "$0")
pattern="[0-9]* /bin/bash .*$scriptname$"
pids=$(ps ax -o pid,cmd | grep -P "$pattern" | sed 's/^ *//;s/ *$//' | grep -Pv ' grep|killall$' | cut -d" " -f1)
if [ "$pids" != "" ]; then
kill -TERM $pids
echo "$(echo '$pids' | wc -l) instances stopped"
else
echo "None found to stop"
fi
exit 0
fi
# ask for window
echo -en "\nClick the window you want to set its title "
id=$(printf %i $(xwininfo | grep 'Window id' | cut -d" " -f4))
# fail if no window id
if [ "$id" == "" ]; then
echo 'Error: Window id not found'
exit 1
else
echo "- Got it"
fi
# ask for title
read -e -p "Enter target title: " title
# fail if no title
if [ "$title" == "" ]; then
echo "Error: No title to set"
exit 1
fi
# define loop as a function, so we can run it in background
windowByIdSetStickyTitle() {
local id title curr_title
id="$1"
title="$2"
while true; do
# get current title
curr_title="$(xdotool getwindowname $id 2>/dev/null)"
# exit if we can't find window anymore
if [ $? -ne 0 ]; then
echo "Window id does not exist anymore"
break
fi
# update title if changed
if [ "$curr_title" != "$title" ]; then
xdotool set_window --name "$title" $id
fi
# needed else you will eat up a significant amount of cpu
sleep 3
done
}
# infinite loop
windowByIdSetStickyTitle $id "$title" &
# done
echo "Sticky title set"
exit 0