| adm | Find | login register |
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
為了方便以後追蹤,獨立出一篇來討論。 先前的討論在 這裡 說明:Swing Windows Script for Linux 是為貝兹訓練法的「怡動」(movement) 原則所寫,可讓指定的視窗維持運動,避免眼睛呆視,希望對電腦使用者的眼睛健康有所幫助。 需求:bash awk wmctrl bc x11-utils Changelog for Ver 0.3:
效率的問題無解,我只會一點 shellscript Orz 看看有無善心人士可以寫程式直接用 X window 的 lib 控制 | |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
Changelog for 0.4:
| |||||||||
guest |
以下算是對於該script小小的建議,不過因為小弟程式也不太行,所以也只能提供意見,看看有沒有那位能人志士可以幫忙改進。再加上之前有用過Windows版的移動視窗,所以有點比較的基礎:
| |||||||||
tinmean joined: 2009-09-17 posted: 553 promoted: 27 bookmarked: 7 |
雖然我沒有實際測試過Linux上的這個script, 這位訪客的意見也是忠實反應了個人的意見, 但我有一點點不同的意見僅供參考: 可能不能只有依照swing window 軟體的特色去思考這個Script. 而是要思考一下為什麼要Swing window? 主要是眼睛不要呆視/凝視即可, 所以我覺得不要完全依照既有的軟體去思考比較好.
其實視窗最大化, 有可能表示還是會有散視的習慣, 另外, 視窗最大化在Win的swing windows也會不動啊? (我的是Vista). 如果要完全跟Swing window一樣, 那就有點累了 :p 由於一直保持眨眼/匯視的習慣, 有時候忘記開swing window也還好 :-) (我看browser/電腦螢幕, 每天大概是12小時左右.) 不是吐嘈訪客你喔, 不要生氣, 請見諒 :p | |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
第一點,square-cw 不應該有你說的狀況,請問你測試是在那一套桌面環境? 第二點不難,只不過若想寫到目前的 script 中,會比較複雜一點,有此需求的話,也許下次另外寫一個 script。 第三點,選擇多個,沒想過這個問題, 再想想。 第四點,不曉得有什麼工具可以控制滑鼠的?目前應該做不到。而且目前的 script 效率不好,如果再加上滑鼠也要動,可能效能會更差 …… 第五點,DELAY_HORI 與 DELAY_VERT 還有 DELAY_SLASH 都可以自訂,小數點也 OK。DISTANCE_HORI、DISTANCE_VERT 與 DISTANCE_SLASH 也有關係。 第六點,在我的 Window Manager,即使最大化也不會卡住,視窗還是可以往右、往下移動。唯一有問題的是,如果視窗有部分在螢幕外,超出某個範圍後,會卡住,記得我上次測試時,覺得這應該是 wmctrl 的 bug,我的 script 無能為力。 edited: 1
| |||||||||
caleb joined: 2007-09-22 posted: 630 promoted: 134 bookmarked: 90 |
xdotool 可以。另外也有一些零碎小工具可以,或是自己寫。
不同 WM 對 EWMH 支援度/bug 都不同,所以行為不同是正常的。 | |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
謝謝,看起來 xdotool 還不錯。 知道 script 那裡出問題了,決定位置時,不論 wmctrl 或 xwininfo 都會以窗框內的左上角決定 (X, Y),但使用 wmctrl 移動視窗時,會依窗框外左上角決定位置,所以位置 X 差了窗框厚度, Y 差了標題列的高度。我使用上沒有遇到問題,是因為我用的 Window Manager 有點特別 - awesome window manager,沒有標題列,窗框也很薄。還有,決定螢幕解析度的欄位,不同 Window Manager 輸出不同,原本我是抓 wmctrl -d 的 DG (desktop geometry) 欄位,icewm 不會輸出此欄位,只會輸出 WM (work area)。 所以目前我釋出的 script,可能只適用於 awesome window manager 這類視窗管理員。 要通吃好像有點難。
| |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
Ver 0.45 Changelog:
重要說明: 從 0.45 版開始,第一次執行時,必需算出視窗標題列高度、視窗邊框寬度。 ./swing-windows.sh init 得到 BD_W 與 TB_H 兩個值,將兩個值取代 swing-windows.sh 開頭預設的 -1。 以後即可正常使用。如果更換佈景主題或 Window Manager,最好重新執行一次。
| |||||||||
guest |
現在回好像太晚了點,因為好像又有新版出來了。不過還是提一下好了,我用的是肥大的gnome。 剛又微調了一下數值,移動是有比較順,但仍有向下跳動的情況發生。 | |||||||||
guest |
試了一下0.45版,在gnome下還是有一直向下移動的情形發生。除了 BD_W 以及 TB_H 參數外,其餘皆是default的參數。
| |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
無法重現,在我的 gnome 還蠻正常的。可以告訴我你的 BD_W 與 TB_H 的值是多少嗎? 忘了強調一點,在做 swing-windows.sh init 時,要選有「正常」視窗外觀的視窗,不要選到桌面(root window)或 gcb 這種特殊視窗。 最好選你常用來閱讀的程式,如瀏覽器、terminal emulator、或 pdf reader 來算。 如果還是有問題,請附上 sh -x ./swing-windows.sh square-cw 的一段執行結果,我看看能不能找出問題在哪。
| |||||||||
guest |
剛試了一下,設定值為BD_W=4, TB_H=24,結果順利無誤;之前的設定是BD_W=4, TB_H=0。不過有趣的一點是,當設定值為BD_W=4, TB_H=24時,我用滑鼠游標點桌面時,桌面居然慢慢的往上跑了 我居然眼睜睜的看著我桌面上的icon沒入頂端確無能為力 以下是sh -x 後的結果: + which wmctrl | |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
目前應該沒有使用到這個 function,應該沒關係。 桌面會動的問題 可能以後加入黑名單或白名單的功能 | |||||||||
coolcd joined: 2008-01-21 posted: 2601 promoted: 348 bookmarked: 95 |
0.47 changelog
特別提醒: 在作 ./swing-windows.sh init 時,請選擇你希望它會搖動的視窗來偵測,譬如:瀏覽器、PDF Reader,不要選擇桌面、面版等一些特殊視窗。 還有,選擇的視窗,請不要放太大、儘量與螢幕邊界(或面版、taskbar)保持至少 100 pixels 的距離,這是因為在偵測 TB_H 與 BD_W 時,會稍微移動視窗,如果碰到邊界,有些 Window Manager 會讓視窗維持在螢幕內,導致偵測不準確。
PS. 能不能幫我看看第 17、69、70 行的寫法?69、70 這種寫法好像有點土法鍊鋼。 Orz |
| adm | Find | login register |