Arch-Linux

i3中的工作區滑動動畫

  • October 27, 2019

如何在 ArchLinux 上的 i3 中製作工作區滑動動畫?

我不想使用完整的 DE,我現在使用 compton 作為合成器,但它僅在切換工作區時提供淡入/淡出,我無法讓它執行滑動動畫,例如 KDE 中的動畫或侏儒。

我不介意安裝另一個合成器,但如果可能的話,我希望能夠使用 compton 和 i3 來完成。(我不介意不必使用更底層的 api 並自己編寫動畫,但我不知道從哪裡開始)


第二步是像在 MacO 上(或者現在也在 Windows 10 上)那樣進行工作區切換,您可以在觸控板上拖動手指,它會在工作區之間順利切換:如果您停止拖動,工作區將彈回原位。(我說的是這個)在 Linux 系統上設置真的很酷。我正在使用 Libinput(和 libinput 手勢),但我不知道是否有這樣的功能。


如何在 ArchLinux 上使用 i3 獲得最接近 MacOs/Windows10 工作區切換體驗?

這是我很久以前所做的,但可能不應該這樣做,它非常笨拙且效率低下!:P

它基本上是對目前螢幕進行截圖,然後一次將其滑動到一邊一個像素。(我猜速度取決於電腦。)

我有一個 bash 腳本goto_to_workspace.sh,每次我用裡面的程式碼更改工作區時都會觸發它:(腳本將參數編號作為工作區編號,例如goto_to_workspace.sh 4:)

WORKSPACE=$1
WKSP=`xprop -root -notype  _NET_CURRENT_DESKTOP | sed 's#.* =##'`
CURRENT_WORKSPACE=`expr 1 + $WKSP`
if [ $CURRENT_WORKSPACE -ne $WORKSPACE ]; then
   scrot -q 50 PRTSRC.jpeg
   feh PRTSRC.jpeg&
   FEH_WINDOW=$!
   #WAIT (give i3 time to switch workspace in the background)
   sleep .2
fi
slide_FEH_LEFT(){
   LONG_LINE="move left 1px"
   for i in {1..11}; do
       LONG_LINE=$LONG_LINE","$LONG_LINE
   done
   i3-msg "[class=feh] $LONG_LINE"
}
slide_FEH_RIGHT(){
   LONG_LINE="move right 1px"
   for i in {1..11}; do
       LONG_LINE=$LONG_LINE","$LONG_LINE
   done
   i3-msg "[class=feh] $LONG_LINE"
}
if [ $CURRENT_WORKSPACE -gt $WORKSPACE ]; then
   slide_FEH_RIGHT
else
   slide_FEH_LEFT
fi
#SIMPLE KILL AFTER 500ms
{ sleep .5 && kill $FEH_WINDOW; } &

編輯:更深入地研究問題。改用 wmctrl 會更聰明。

所以下降的功能可以是例如:(對於我的 1920x1080 螢幕)

slide_FEH_DOWN_wmctrl(){
   FEH_ID=`wmctrl -l|grep "PRTSRC.jpeg$"|awk '{print $1}'`
   for (( c=0; c!=1100; c=c+10 )) do
       wmctrl -i -r $FEH_ID -e 1,0,$c,1920,1080
   done
}

我還嘗試使用 xlib(c 或 python)快速做一些事情,但它不如 wmctrl 流暢。因此,如果有人可以做得更好,請告訴我們。

EDIT2:當然,您需要 feh 保持粘性,例如在您的 i3 配置中:

for_window [class="feh"] floating enable, sticky enable, border pixel 0, move absolute position 0 px 0 px

引用自:https://unix.stackexchange.com/questions/370622