Labwc 便捷配置

最近使用 labwc 工作,逐步發現一些小問題,這裏記錄下,方便後來人。

目前中國大陸使用的微信、釘釘、騰訊會議等都是無法在純粹的 wayland 下工作的,包括 chrome 在純 wayland 下,Fcitx5 的候選框會跑偏,所以編譯 labwc 的時候一定要開啓 xwayland 支持。

下面針對一些常見問題給出個人解決方案:

1. 任務欄

taskbar 放在什麼位置?雙屏的話,在哪個屏幕顯示?顯示圖標還是名稱,以及點擊後執行什麼動作?

  • 放在什麼位置

    1"modules-center": [
    2    "wlr/taskbar"
    3    //"river/tags"
    4],
    

    wlr/taskbar 放到 "modules-center" 中,就是放到狀態欄中間

  • 單屏還是雙屏輸出

    1// swaymsg -t get_outputs (sway)
    2// wlr-randr (others)
    3"output": "eDP-1",
    

    output 的值可 sway 可從 swaymsg -t get_outputs 獲得,其它的安裝 wlr-randr 後運行 wlr-randr 命令後獲得,多個逗號分隔(typeof: string|array),星號所有,默認就是所有。

    我選擇輸出到副屏,主屏一般不放狀態欄,只顯示核心窗口,副屏放到一遍,需要看 taskbar 等輔助信息的時候,眼睛斜瞄一眼即可。

  • taskbar 配置

    1"wlr/taskbar": {
    2  "all-outputs": true,
    3    "format": "{icon}",
    4    "on-click": "minimize-raise",
    5},
    

    all-outputs 表示所有顯示器窗口的軟件都收集展示,不然只顯示本顯示器的窗口,多少有點不方便,看喜好設置。

    format {icon}就是顯示軟件圖標,也可設置爲顯示軟件名等,可以查看對應文檔設置。

    on-click minimize-raise 點一下展示,再點一下縮回去。

完整配置文件(https://github.com/kmephistoh/dotfiles/tree/main/.config/waybar/config):

  1{
  2  "layer": "top",
  3  "position": "bottom",
  4  // swaymsg -t get_outputs (sway)
  5  // wlr-randr (others)
  6  "output": "eDP-1",
  7  "modules-left": [
  8    //"wlr/taskbar",
  9    "custom/launcher",
 10    "cpu",
 11    "memory",
 12    "custom/media",
 13    "tray"
 14  ],
 15  "modules-center": [
 16    "wlr/taskbar"
 17    //"river/tags"
 18  ],
 19  "modules-right": [
 20    "custom/updates",
 21    "custom/wallpaper",
 22    "backlight",
 23    "pulseaudio",
 24    "clock",
 25    "battery",
 26    "custom/power"
 27  ],
 28  "pulseaudio": {
 29    "tooltip": false,
 30    "scroll-step": 5,
 31    "format": "{icon} {volume}%",
 32    "format-muted": "{icon} {volume}%",
 33    "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
 34    "format-icons": {
 35      "default": ["", "", ""]
 36    }
 37  },
 38  "river/tags": {
 39    "num-tags": 6
 40  },
 41  "network": {
 42    "tooltip": false,
 43    "format-wifi": "  {essid}",
 44    "format-ethernet": ""
 45  },
 46  "backlight": {
 47    "tooltip": false,
 48    "format": " {}%",
 49    "interval": 1,
 50    "on-scroll-up": "light -A 5",
 51    "on-scroll-down": "light -U 5"
 52  },
 53  "battery": {
 54    "states": {
 55      "good": 95,
 56      "warning": 30,
 57      "critical": 20
 58    },
 59    "format": "{icon}  {capacity}%",
 60    "format-charging": " {capacity}%",
 61    "format-plugged": " {capacity}%",
 62    "format-alt": "{time} {icon}",
 63    "format-icons": ["", "", "", "", ""]
 64  },
 65  "tray": {
 66    "icon-size": 18,
 67    "spacing": 10
 68  },
 69  "clock": {
 70    "format": "{: %H:%M  %d/%m/%Y}"
 71  },
 72  "cpu": {
 73    "interval": 15,
 74    "format": " {}%",
 75    "max-length": 10
 76  },
 77  "memory": {
 78    "interval": 30,
 79    "format": " {}%",
 80    "max-length": 10
 81  },
 82  "custom/media": {
 83    "interval": 30,
 84    "format": "{icon} {}",
 85    "return-type": "json",
 86    "max-length": 60,
 87    "format-icons": {
 88      "spotify": " ",
 89      "default": " "
 90    },
 91    "escape": true,
 92    "exec": "$HOME/.config/system_scripts/mediaplayer.py 2> /dev/null",
 93    "on-click": "playerctl play-pause"
 94  },
 95  "custom/launcher": {
 96    "format": " ",
 97    "on-click": "wofi -show drun",
 98    "on-click-right": "killall wofi"
 99  },
100  "custom/power": {
101    "format": " ",
102    "on-click": "bash ~/.config/rofi/leave/leave.sh"
103  },
104  "custom/updates": {
105    "format": "{} Update(s)",
106    "exec": "checkupdates | wc -l",
107    "exec-if": "[[ $(checkupdates | wc -l) != 0 ]]",
108    "interval": 15,
109    "on-click": "alacritty -e paru -Syu && notify-send 'The system has been updated' "
110  },
111  "custom/wallpaper": {
112    "format": " ",
113    "on-click": "bash ~/.config/system_scripts/pkill_bc"
114  },
115  "wlr/taskbar": {
116    "all-outputs": true,
117    "format": "{icon}",
118    "on-click": "minimize-raise"
119  }
120}

2. 截屏

flameshot 在 labwc 下截屏有點問題,畫選範圍的時候反應異常延遲,不過從狀態欄點擊啓動的時候沒有問題,很詭異,狀態不穩定,必須找個替換組合。

1    <keybind key="F9">
2      <action>
3        <name>Execute</name>
4        <command>sh -c 'grim -g "`slurp`" - | swappy -f -'</command>
5      </action>
6    </keybind>

推薦組合爲 grim + slurp + swappy ,安裝好後按照上述配置快捷鍵,按 F9 即可選擇範圍截屏。請注意上面 action 的寫法,直接 <action name="Execute" command='grim -g "$(slurp)" - | wl-copy' /> 是無法工作的,我幫讀者踩過坑了。緣由參考官方tips 部分

grim 截屏,slurp 選擇範圍,swappy 事後編輯。

swappy

注意,swappy 編輯文字的時候,邏輯是先選擇範圍,再打字,最後 Enter 確認,且無法輸入中文(攤手錶情!),也沒有 flameshot 的步驟指示功能。所以我兩個截屏軟件都保留,看情況選擇。

3. 工作空間設置

labwc-workspace

很久以前我用過一個發行版,它的終端的軟件是可以按 F12 呼出和隱藏的,非常貼心,因爲終端在 Linux 環境下是超高頻軟件,用的時候隨時按 F12 呼出,此功能很多桌面環境不是那麼容易設置。大部分的邏輯是快捷鍵直接啓動多個實例了,這明顯不符合使用需求,大部分人只需要開啓一個終端,然後多 tab 切換即可。

在 labwc 下,我通過 workspace 切換的的功能勉強實現類似功能:

  • 先添加 workspace
 1  <desktops>
 2    <!--
 3      popupTime defaults to 1000 so could be left out.
 4      Set to 0 to completely disable the workspace OSD.
 5    -->
 6    <popupTime>1000</popupTime>
 7    <names>
 8      <name>work</name>
 9    </names>
10    <names>
11      <name>term</name>
12    </names>
13  </desktops>

我這裏只設置了 2 個工作空間,一個 work,日常工作環境;一個 term,單獨的只有終端的環境。接下來的設置快捷鍵,在兩者間靈活切換。

  • 設置快捷鍵
 1    <keybind key="W-1">
 2      <action name="GoToDesktop" to="term" wrap="yes" />
 3    </keybind>
 4    <keybind key="C-W-1">
 5      <action name="SendToDesktop" to="term" follow="yes" wrap="yes" />
 6    </keybind>
 7    <keybind key="W-2">
 8      <action name="GoToDesktop" to="work" wrap="yes" />
 9    </keybind>
10    <keybind key="C-W-2">
11      <action name="SendToDesktop" to="work" follow="yes" wrap="yes" />
12    </keybind>

上述配置解釋:win+1 切換到 term,win+2 切換到 work;ctl+win+1 把當前活動窗口放置到 term,ctl+win+2 把當前活動窗口放置到 work,這樣即可實現類似老闆鍵切換的功能,讀者可以自行決定設置多少個 workspace,綁定好自己喜歡的快捷鍵,用起來很方便的。

所謂老闆鍵,就是摸魚時,一鍵切換到老闆喜歡的工作界面,我想你應該懂的!畢竟大陸生活苦,菩薩也要體諒下。

最後修改於: Friday, February 23, 2024

相關文章:

翻譯: