請問如何取消視窗置頂功能 [論壇 - 新手村]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



請問如何取消視窗置頂功能
版主
註冊日期:
2008/7/14 0:03
來自 螢幕的另一端
所屬群組:
網站管理員
已註冊使用者
討論區管理群
等級: 32
HP : 0 / 798
MP : 497 / 26271
EXP: 95
離線
各位好:

請教一個問題,在 x-windows 底下,所有的視窗對著標題列按滑鼠的右鍵,有一個"永遠在最上層" 可將視窗置頂,使其它的視窗都不會蓋住它.

我的問題來了,我在使用底下的這個功能"滑鼠替代點擊"
執行底下指令之後
mousetweaks --dwell
就會有一個視窗跳出來,它預設是置頂的,每次我都要手動的去點擊它,把那個"永遠在最上層"的功能取消,每次執行都要去點它,很是困擾,不知有沒有什麼方法可以取消它這個自動置頂的預設值?

我在看它的參數時,有一個 gtk 的視窗控制選項,但我不熟,無從用起
mousetweaks --help-gtk
是否可用這個 gtk 的參數來取消視窗置頂的功能?

謝謝

2016/4/28 11:06
應用擴展 工具箱
回覆: 請問如何取消視窗置頂功能
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 34
HP : 169 / 847
MP : 574 / 18513
EXP: 89
離線
夢見草 寫到:
各位好:

請教一個問題,在 x-windows 底下,所有的視窗對著標題列按滑鼠的右鍵,有一個"永遠在最上層" 可將視窗置頂,使其它的視窗都不會蓋住它.

我的問題來了,我在使用底下的這個功能"滑鼠替代點擊"
執行底下指令之後
mousetweaks --dwell
就會有一個視窗跳出來,它預設是置頂的,每次我都要手動的去點擊它,把那個"永遠在最上層"的功能取消,每次執行都要去點它,很是困擾,不知有沒有什麼方法可以取消它這個自動置頂的預設值?

我在看它的參數時,有一個 gtk 的視窗控制選項,但我不熟,無從用起
mousetweaks --help-gtk
是否可用這個 gtk 的參數來取消視窗置頂的功能?

謝謝


## 研究報告


## 參考網址

* GtkWindow / gtk_window_set_keep_above


## 測試環境

* UbuntuMate 16.04 64位元

## 編輯source.list

把「/etc/apt/source.list」的「deb-src」開頭的哪幾行,反註解,
這樣才能執行「apt source」來下載「Source Package」

## 安裝「dpkg-dev」

執行下面指令安裝「dpkg-dev


$ apt install dpkg-dev



## 下載 Source Package


執行下面指令,會下載「mousetweaks」的原始碼套件「mousetweaks」。


$ apt source mousetweaks



會有一個解開的資料夾「mousetweaks-3.12.0」

用「set_keep_above」當關鍵字來查詢,


$ grep set_keep_above mousetweaks-3.12.0/* -R



顯示


mousetweaks-3.12.0/src/mt-ctw.c: gtk_window_set_keep_above (GTK_WINDOW (ctw), TRUE);
mousetweaks-3.12.0/src/mt-common.c: gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE);



看起來是直接寫死在程式裡,沒有參數的機制可以設定。


## 重新編參考步驟

安裝「build-essential


$ sudo apt install build-essential



利用「apt build-dep」來安裝「編譯mousetweaks」相依的套件


$ sudo apt build-dep mousetweaks



切換到「mousetweaks-3.12.0」


$ cd mousetweaks-3.12.0/



編輯「src/mt-ctw.c」




gtk_window_set_keep_above (GTK_WINDOW (ctw), TRUE);



改成


gtk_window_set_keep_above (GTK_WINDOW (ctw), FALSE);



編輯「src/mt-common.c」





gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE);



改成



gtk_window_set_keep_above (GTK_WINDOW (dialog), FALSE);



沒深究程式碼,只是測試,所以兩個地方都改。

執行


$ ./configure




執行


$ make



切換到「src」這個資料夾


$ cd src/



執行


$ ./mousetweaks --dwell



你就可以看到「Always on top(永遠在最上層)」那個預設沒有打勾了。

注意:
要成功執行上面的指令,是因為我一開始就有安裝「mousetweaks」這個套件,
所以系統已經有安裝相關的「schemas」,

* /usr/share/glib-2.0/schemas/org.gnome.mousetweaks.gschema.xml
* /usr/share/glib-2.0/schemas/org.gnome.mousetweaks.enums.xml
* /usr/share/GConf/gsettings/mousetweaks.convert <---這一個我不確定有沒有關聯

若沒有的話,會出現下面這個錯誤訊息。


(mousetweaks:7410): GLib-GIO-ERROR **: Settings schema 'org.gnome.mousetweaks' is not installed

Trace/breakpoint trap (core dumped)




未來要重新打包成「deb檔」,然後執行「sudo dpkg -i mousetweaks.deb」,
就請自行研究了,可參考「這裡」列的一些參考文章。
或是也可以執行「sudo make install」吧,就請自己斟酌要用什麼方式安裝到系統上了。

以上測試

報告完畢




## 題外話

探索「gsettings」有哪些參數可以使用

執行


$ gsettings list-recursively | grep mousetweaks



顯示


org.gnome.mousetweaks click-type-window-style 'both'
org.gnome.mousetweaks click-type-window-geometry '124x238+873+298'
org.gnome.mousetweaks click-type-window-orientation 'vertical'



相關檔案

* /usr/share/glib-2.0/schemas/org.gnome.mousetweaks.gschema.xml
* /usr/share/glib-2.0/schemas/org.gnome.mousetweaks.enums.xml


gsettings 的一些討論案例,紀錄「在這


## 衍生想法

突然有一個想法,除了上面的方法,在mousetweaks程式沒有埋設定機制的狀況下,
不知道能不能從外部,透過某個程式或是window-manager,去動態設定某個視窗的「Always on top」這個屬性。
因為看起來在GUI可以按右鍵設定,也許有這樣的機制也說不定,待研究,
或是對這方面有深究的人,可以補充說明,感恩先。


2016/4/28 15:08
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.