我前面寫了文章介紹如何美化Xfce4(macOS like),本文將在之前基礎(chǔ)之上更進(jìn)一步,使用compiz窗口管理器實(shí)現(xiàn)桌面窗口的特效。
注意:使用和配置compiz可能會導(dǎo)致系統(tǒng)圖形界面無法進(jìn)入,一定要有足夠的命令行經(jīng)驗以便在安裝設(shè)置失敗的情況下進(jìn)行恢復(fù)。
安裝compiz (from AUR)
這個是編譯安裝,時間可能稍微有點(diǎn)久,中間可能還會要求輸入密碼,所以要關(guān)注著點(diǎn)安裝進(jìn)程。終端執(zhí)行以下命令:
yay -S compiz
配置compiz
在應(yīng)用程序菜單搜索ccsmcompiz設(shè)置管理器并啟動。在設(shè)置里面默認(rèn)我們不需要修改任何東西,也不建議在這時修改里面的配置,等compiz正常運(yùn)行后我們再修改。
有幾個重要的插件提供基礎(chǔ)功能,見下面(一些基礎(chǔ)功能默認(rèn)都會選中,所以如果不太清楚可以完全使用默認(rèn)設(shè)置):
重要的插件:
- Window Decoration(窗口裝飾) —— 提供窗口邊框
- Move Window(窗口移動)
- Resize Window(窗口縮放)
- Place Windows(窗口放置) —— 設(shè)置關(guān)于窗口在屏幕上放置的選項
- Application Switcher(程序切換) —— 提供 Alt+Tab 開啟的程序切換器(另外也有一些插件可以實(shí)現(xiàn)這個功能,而且具有不同的效果,比如 'Shift Switcher,' 'Static Application Switcher' 等等。并不是所有的切換器都是用 Alt+Tab 快捷鍵)。
想要在不同的虛擬桌面之間切換,需要激活以下其中一個插件:
- Desktop Cube(立體桌面)和Rotate Cube(旋轉(zhuǎn)立體) —— 提供一個可以浮空的立方體,每個面都是一個視口(虛擬桌面)。
- Desktop Wall(桌面墻壁) —— 虛擬桌面全部并排陳列在一起
- Expo —— 當(dāng)鼠標(biāo)移動到屏幕左上角的時候,顯示出全部的虛擬桌面和窗口。這個插件可以單獨(dú)激活,或者是和前兩個一起用不會沖突。
替換xfwm4
Xfce4默認(rèn)使用xfwm4窗口管理器,使用compiz將其替換。配置文件:
~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml #單用戶
/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml #系統(tǒng)范圍
根據(jù)需要修改上面配置文件,找到以下內(nèi)容,將xfwm4替換成compiz即可。
<property name="Client0_Command" type="array">
<value type="string" value="xfwm4"/>
</property>
快捷命令
對于單個用戶可以使用終端命令快速設(shè)置:
xfconf-query -c xfce4-session -p /sessions/Failsafe/Client0_Command -a -s compiz
清除當(dāng)前保存會話
Xfce通常會在logout時保存當(dāng)前會話,以便下次登錄時可以恢復(fù)之前打開的應(yīng)用程序,當(dāng)我們調(diào)整窗口管理器為compiz后,需要清除之前已經(jīng)保存的會話,并在第一次注銷時不保存當(dāng)前會話。
打開設(shè)置管理器
打開Session and Startup(會話和啟動),進(jìn)入Saved Sessions(保存會話)項,點(diǎn)擊Clear Saved Sessions(清除已保存的會話)

快捷命令
rm -rf ~/.cache/sessions
重新登錄
完成以上設(shè)置后,現(xiàn)在可以注銷重新登錄了。注銷前需確保“保存會話”沒有被勾選,否則剛才的上面的設(shè)置不會生效。 再次登錄正常來說Compiz就會運(yùn)行了(這時如果出現(xiàn)問請看后面的問題和恢復(fù))。當(dāng)Compiz正常運(yùn)行之后,可以重新鉤上“保存會話”以保存之后的會話。
Compiz正常運(yùn)行后就可以使用ccsmcompiz設(shè)置管理器,配置各種特效了,但要一定要注意特效的配置很容易導(dǎo)致圖形界面崩潰,所以不清楚的一定不要亂點(diǎn)。
設(shè)置
如果按照我之前的Xfce4美化的文章設(shè)置過桌面環(huán)境,你可能會發(fā)現(xiàn)窗口按鈕樣式變得和macOS主題不一致了,并且窗口按鈕到了右邊,這是因為compiz默認(rèn)使用了gtk-window-decorator來裝飾窗口,而這個窗口裝飾器使用metacity來支持主題樣式,我之前推薦的主題是Xfce4專屬的,沒有metacity支持,所以我們需要單獨(dú)的設(shè)置。
窗口按鈕
使用下面命令設(shè)置窗口顯示哪些按鈕,并且移動按鈕到左邊。
gsettings set org.gnome.desktop.wm.preferences button-layout "'close,minimize,maximize:menu'"
窗口主題
下載腳本compiz-gtk-decorator-theme-selector,這是一個為窗口選擇主題的腳本。運(yùn)行后會打開一個主題選擇界面,這里會顯示所有支持metacity裝飾的主題,如果你的系統(tǒng)安裝了支持metacity的macOS樣式的主題,選中點(diǎn)應(yīng)用即可。
資源下載
鏈接: https://pan.baidu.com/s/1tbGqW4WwVuyNUa7X8bTqMA 提取碼: 7rau
compiz-gtk-decorator-theme-selector窗口裝飾metacity主題選擇腳本,下載后chmod +x給上可執(zhí)行權(quán)限,直接運(yùn)行即可。
macOS-WM我自己制作的metacity主題,解壓到/usr/share/themes目錄。
我最愛的設(shè)置
設(shè)置虛擬桌面
compiz安裝完成后,虛擬桌面默認(rèn)是一行四個,我不太喜歡,改成兩行兩個桌面(你可以隨便設(shè)置八個、九個,四個對于我足夠用了)。
General->General Options->Desktop Size

啟用Expo插件
Expo插件提供一個桌面預(yù)覽效果,默認(rèn)Super+e快捷鍵或者鼠標(biāo)左上角熱點(diǎn)觸發(fā),我不喜歡左上角,因為我的左上角有應(yīng)用程序菜單,容易誤觸,改成左下角。
Desktop->Expo->Bindings->Expo Corner/Edge


啟用Wobbly Windows(震顫窗口)
Effects->Wobbly Windows
啟用該插件后,在窗口移動時會有動態(tài)效果。

啟用Shift Switcher
Window Management -> Shift Switcher,Static Applicatoin Switcher的增強(qiáng)版并且何其不沖突,可以兩個都打開。此插件提供立體切換效果,默認(rèn)快捷鍵Super+Tab。

最小化效果
Effects->Animations->Minimize(最小化)/Unminimize(恢復(fù))設(shè)置動畫效果為Magic Lamp,一個類似macOS的動畫。

注意
再次強(qiáng)調(diào)一下,ccsm是一個高級compiz設(shè)置工具,里面一些設(shè)置如果不明白是什么不要隨便點(diǎn),容易把圖形界面弄沒。還有一些插件提供相同或者類似的功能是不能同時啟用的。本文只介紹了我自己喜歡使用的幾個插件,其他插件感興趣的人可以自己摸索。像什么桌面立方體、火焰效果,水波紋效果,都可以嘗試,但這些感覺不太實(shí)用,所以我也沒提。
雜項
安裝breeze主題,這是一個kde風(fēng)格的主題,我主要喜歡它的光標(biāo)主題樣式,安裝完成后可以在設(shè)置管理器->鼠標(biāo)和觸摸板設(shè)置界面更改光標(biāo)主題。
sudo pacman -S breeze breeze-gtk
問題和恢復(fù)
如果想恢復(fù)之前的
xfwm4窗口管理器,恢復(fù)前面替換xfwm4里面提到的配置文件即可。
如果重新登錄后窗口管理器失效,可以用命令恢復(fù)使用原來的窗口管理器,Ctrl+Alt+T打開終端,輸入以下命令。然后可以再恢復(fù)之前修改的配置文件。
xfwm4 --replace
如果終端也無法使用,這就悲催了,你需要進(jìn)入tty模式Ctrl+Alt+F2,強(qiáng)大的vim又派上用場了,編譯以下文件,將compiz再改回xfwm4,然后reboot重啟。
vim ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml
修改了太多compiz配置想恢復(fù)默認(rèn)?
rm ~/.config/compiz-1/compizconfig/Default.ini
