歡迎您光臨本站 註冊首頁

快速在 Tiling & Float WM 間切換

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

在兩個 tiling 和 float WM之間自由切換,無須重啟 WM,不丟失窗口。感謝李存金來稿!

tiling 和 float 兩種管理方式都有各自適合的場景,平常我基本上在用 tiling(musca),但是偶爾會要用到 GIMP 這樣的程序, 這時候 tiling 的方式就不方便了。一直在尋找一個WM 能夠在 tiling, float 兩種方式之間自由切換,並且兩種兩種方式用起來都比較舒服。例如 musca 雖然能切換到 float 的方式,但是基本上處於半殘狀態,不具備可用性。

曾經還嘗試用 fvwm 模擬 tiling 的管理方式,但不理想,畢竟不是原生的。偶然看到 ratpoision 支持臨時調用其它的 WM,然後突發其想是否可用 ratpoision 作為 WM 的切換器,在 ratpoision WM 下自由切換不同的 WM。

想法有了,方案我也初步實現了,我選用的 tiling 是 musca,musca 我一直在用,float 選 pekwm 是由於他對 EWMH/NetWM 支持比較全面,在 musca pekwm 之間切換時不會丟失窗口。

各位有什麼好的其它方案可以提供參考嗎?

ratpoision啟動文件~/.ratpoisionrc

=====================================  exec xdotool key 'Escape'  # ratpoision啟動時會彈出一個welcome窗口, 按Escape將其關閉  exec ~/bin/three-wm    # 自定義的腳本,負責在musca pekwm之間切換    =========================================  command="musca"  #默認啟動musca  startxpid=$(ps -eo pid,cmd | grep "startx *-- *$(echo "$DISPLAY" | sed 's/\.0$//')" | awk '{print $1}')  #startxpid用於判斷在musca pekwm ratpoision是否在同一個DISPLAY下    if [[ "X$startxpid" == "X" ]];then  #ratpoision第一次啟動,還沒有startx進程     ratpoison -c 'tmpwm /usr/bin/musca'&     exit 0  else     pstree -Apa $startxpid | grep -v "grep" | grep -q "ratpoison" || exit 1;  #如果不處於ratpoison環境,就退出程序  fi    if  wmctrl -m | grep -q 'Name: musca';then     command="pekwm"  fi  if ps aux | grep -v 'grep' | grep -q 'ratpoison -c';then     ps aux | grep -v 'grep' | grep 'ratpoison -c' | awk '{print $2}' | xargs -I{} sudo kill -9 '{}'  fi  #殺死僵死的ratpoison -c  case "$command" in     musca)         #殺死pekwm,在ratpoison下啟動musca         if pstree -Apa $startxpid | grep -v "grep" | grep -q "pekwm";then             pstree -Apa $startxpid | grep -v "grep" | grep "pekwm" | cut -d',' -f2 | awk '{print $1}' | xargs -I{} sudo kill -9 '{}'             ps aux | grep -v 'grep' | grep 'xfce4-panel' |  awk '{print $2}' | xargs -I{} sudo kill -9 '{}'             notify-send -t 3000 'kill pekwm relative thing'         else             notify-send -t 3000 'no pekwm runing, run musca direct'         fi         ratpoison -c 'tmpwm /usr/bin/musca'&         sleep 2s         musca -c "pad 0 0 10 0"         musca -c "hook on ^(add|use) pad 0 0 10 0"         ;;     pekwm)         #殺死musca,在ratpoison下啟動pekwm         if ps aux | grep -v "grep" | grep -q "/usr/bin/musca";then             pstree -Apa $startxpid | grep -v "grep" | grep "musca" | cut -d',' -f2 | awk '{print $1}' | xargs -I{} sudo kill -9 '{}'             ps aux | grep -v 'grep' | grep 'dzen2' |  awk '{print $2}' | xargs -I{} sudo kill -9 '{}'             notify-send -t 3000 'kill musca relative thing'         else             notify-send -t 3000 'no musca runing, run pekwm direct'         fi         ratpoison -c 'tmpwm /usr/bin/pekwm'&         ;;     *)         ;;  esac


[火星人 ] 快速在 Tiling & Float WM 間切換已經有410次圍觀

http://coctec.com/docs/linux/show-post-65402.html