だから私たちはタブアウトライナー拡張を持っています。
https://chrome.google.com/webstore/detail/tabs-outliner/eggkanocgddhmammlbiijnphhppkpkmkl
これはChromiumのための非常に素晴らしい垂直タブマネージャです。問題は、画面が多すぎるのにワイドスクリーンモニタがないことです。したがって、常に表示される新しいChromeウィンドウが画面の左側を占めます。
問題は、マウスを別の場所に移動し、リストされたタブの1つをダブルクリックして自動的に非表示にするにはどうすればよいですか?
答え1
さて、私はこれのためのスクリプトを書いています。他の状況に似た機能を提供すると便利です。それから私も知りたいです:)
そしてもっと良い方法があれば私も知りたいです:)
開始変数はあなたの選択です
#!/bin/bash -i
waitStart=5
delayRaiseTabOutliner=0.1
screenLeftMarginOpen=10
screenLeftMarginClose=200
bUseScreenLeftMarginClose=false
bGoToChromiumWhenTablinkIsDoubleClicked=true
function FUNCparent() {
xwininfo -tree -id $1 |grep "Parent window id"
}
function FUNCparentest() {
local check=`printf %d $1`
local parent=-1
local parentest=-1
#echo "Child is: $check" >&2
while ! FUNCparent $check |grep -q "(the root window)"; do
#echo "a $check" >&2 #DEBUG info
xwininfo -id $check |grep "Window id" >&2 #report
parent=`FUNCparent $check |egrep -o "0x[^ ]* "`
parent=`printf %d $parent`
check=$parent
sleep 1
done
if((parent!=-1));then
parentest=$parent
fi
if((parentest!=-1));then
echo $parentest
#echo "Parentest is: $check" >&2
else
echo $1
#echo "Child has no parent." >&2
fi
}
while true; do
list=(`xdotool search Chromium 2>/dev/null`)
chromiumWindowId=""
for windowId in `echo ${list[*]}`; do
if xwininfo -id $windowId |grep "Window id" |egrep -oq " - Chromium\"$"; then
chromiumWindowId=$windowId
xwininfo -id $chromiumWindowId |grep "Window id" #report
break;
fi
done
if [[ -z "$chromiumWindowId" ]]; then
sleep $waitStart
continue;
fi
list=(`xdotool search "Tabs Outliner" 2>/dev/null`)
tabsOutlinerWindowId=""
for windowId in `echo ${list[*]}`; do
if xwininfo -id $windowId |grep "Window id" |egrep -oq "\"Tabs Outliner\"$"; then
tabsOutlinerWindowId=`FUNCparentest $windowId`
xwininfo -id $tabsOutlinerWindowId |grep "Window id" #report
break;
fi
done
if [[ -z "$tabsOutlinerWindowId" ]]; then
sleep $waitStart
continue;
fi
previousWindowId=-1
previousChromeTabName=""
while true; do
# check if chromium is still running
if ! xdotool getwindowname $chromiumWindowId 2>&1 >/dev/null; then
break;
fi
if ! xdotool getwindowname $tabsOutlinerWindowId 2>&1 >/dev/null; then
break;
fi
# info about window below mouse (even if have not focus)
eval `xdotool getmouselocation --shell 2>/dev/null`
windowId=$WINDOW
mouseX=$X
mouseY=$Y
# not working yet...
# must work only if over chromium application windows
#activeWindow=`xdotool getactivewindow`
#activeWindow=`FUNCparentest $activeWindow`
#echo "windowId=$windowId, chromiumWindowId=$chromiumWindowId, tabsOutlinerWindowId=$tabsOutlinerWindowId, previousWindowId=$previousWindowId, activeWindow=$activeWindow" #DEBUG info
# not working yet...
# only allowed to work if chromium windows has focus
# if((activeWindow!=chromiumWindowId && activeWindow!=tabsOutlinerWindowId));then
# sleep $delayRaiseTabOutliner
# continue
# fi
#echo "Chromium app is active."
# from chromium to tabs outliner!
if((windowId==chromiumWindowId));then
if((mouseX<screenLeftMarginOpen));then
xdotool windowactivate $tabsOutlinerWindowId
echo "activate TabOutliner (`date`)"
fi
fi
# from tabs outliner to chromium
bActivatedChromium=false
# when a tabs outliner tab is double clicked, it changes chromium window current tab!
if $bGoToChromiumWhenTablinkIsDoubleClicked; then
if((windowId==tabsOutlinerWindowId));then
currentChromeTabName=`xprop -id $chromiumWindowId |grep "^WM_NAME(STRING) = \""`
if [[ -z "$previousChromeTabName" ]]; then
previousChromeTabName="$currentChromeTabName"
fi
if [[ "$currentChromeTabName" != "$previousChromeTabName" ]]; then
xdotool windowactivate $chromiumWindowId
bActivatedChromium=true
fi
previousChromeTabName="$currentChromeTabName"
fi
fi
if $bUseScreenLeftMarginClose;then
if((windowId==tabsOutlinerWindowId));then
if((mouseX>screenLeftMarginClose));then
xdotool windowactivate $chromiumWindowId
bActivatedChromium=true
fi
fi
else
if((previousWindowId==tabsOutlinerWindowId));then
if((windowId==chromiumWindowId));then
xdotool windowactivate $chromiumWindowId
bActivatedChromium=true
fi
fi
fi
if $bActivatedChromium; then
echo "activate Chromium (`date`)"
fi
previousWindowId=$windowId
sleep $delayRaiseTabOutliner
done
done