注:解決方案爲Ubuntu(14.04)所提供的作品+崇高文字2/3
我已經結束了一個非常棘手的伎倆,但我對此非常高興。在兩種情況下(如果設置中啓用)IntelliJ IDEA的更新資源:
- 當IDE窗口失去焦點
- 當運行部分按下按鈕或使用快捷鍵爲它按Ctrl + F10
所以我已經開始與第一種情況下尋找適合我的操作系統(Ubuntu的14.04)的工具,它可以集中的IntelliJ IDEA窗口不重點,使其更新資源。我偶然發現了xdotool,它允許通過它的標題獲得窗口的ID,並通過它的ID來關注窗口。我創建了一個簡單的.SH腳本:
current_id="$(xdotool getactivewindow)" # get id of current window
idea_id="$(xdotool search --name 'IntelliJ IDEA')"
xdotool windowfocus "${idea_id}" # switch to idea
xdotool windowfocus "${current_id}" # switch to current window
windowfocus
只是聚焦窗口,這意味着如果窗口的背景或另一個工作區,你不會切換到它,你」我會留在你身邊,但窗口只是獲得焦點。但它沒有與IntelliJ Idea,資源沒有更新,似乎它要全力關注。
所以我試圖用windowactivate
代替windowfocus
--它在切換到窗口時(即使它在另一個工作區),因此它變得聚焦,活動和可見。但與切換回原始過程相結合,它產生了像兩個窗口之間的可見切換(例如,當您在窗口之間使用Alt + Tab時),這非常明顯,但它確實是它的工作 - 資源得到更新。
還有第二個選項 - 使用快捷方式。xdotool有一個選項可以發送擊鍵到窗口通過它的id以及:
xdotool key --window "{$idea_id}" --clearmodifiers CTRL+F10
,但它沒有工作,即使在結合聚焦窗口,也留下了壓的後效應Ctrl鍵。在xdotool文檔中有一段Sendevent Notes文檔,告訴xdotool生成的按鍵事件會設置一個特殊標誌,因此接收該事件的應用程序可能會分析它是否存在標誌並忽略該事件,可能是IntelliJ Idea的情況。
經過一番研究,我發現另一個關鍵發送工具 - xvkdb - 和它的工作就像一個魅力,因爲我猜它採用發送/生成的關鍵事件的另一種方式:
xvkbd -window "*IntelliJ IDEA*" -text "\C\[F10]"
運行時單獨這個命令將焦點集中在一個Intellij Idea窗口中,我用xdotool將焦點帶回當前進程。下面是該腳本的最終版本:
current_id="$(xdotool getactivewindow)"
xvkbd -window "*IntelliJ IDEA*" -text "\C\[F10]"
xdotool windowfocus "${current_id}"
將其與崇高的文本3,這是我作爲代碼編輯器中使用整合,我已經安裝了一個插件SublimeOnSaveBuild,它可以運行一個自定義生成(終端命令或當一個人將文件保存在崇高文本中時。下面是一個簡單的構建設置:
{
"shell_cmd": "/path/to/script/idea_update_resources.sh"
}
所以現在我有一個IntelliJ IDEA的另一個工作區中打開,當我保存在崇高的文本文件,資源得到通過發送快捷方式的IntelliJ IDEA更新窗口。我可以說,使用這種實現來聚焦窗口的時間並不明顯。因此,它是遠遠來得更快,然後咕嚕或咕嘟咕嘟任務,我要說的瞬間,因爲IntelliJ IDEA的確實本身的更新,而且它是安全的,如果的IntelliJ IDEA做一些,以防使用更新資源時的額外操作。 感謝@BenJamin的問題,希望它能幫助別人。
更新:
使用此設置了一段時間就無法按預期工作後:如果IntelliJ IDEA的是另一個工作區,或者它的界面完全覆蓋另一個窗口,與xvkdb解決方案將不幸失敗,不會執行資源更新。我轉回到使用windowactivate
。
獨立運行服務器。 – Stefan 2014-10-04 18:21:56
這將如何幫助? – BenJamin 2014-11-03 20:06:00
@BenJamin,你有沒有找到它的解決方案? – 2015-09-17 11:36:07