跳转至

I3wm

i3wm

archlinux的Wiki:

https://wiki.archlinux.org/index.php/I3#Launching_programs_on_specific_workspaces

i3命令

命令参考:https://i3wm.org/docs/userguide.html#list_of_commandsexec

exec

# startup-id功能会确保GUI显示在工作区,执行无界面程序时最好禁用它
exec --no-startup-id xxx

写i3wm配置

如何确定窗口的class名:命令xprop,点击窗口可获得信息

i3-cinnamon

cinnamon环境里的i3,可以使用cinnamon的设置、锁屏等

dmenu-manjaro

manjaro的dmenu菜单,支持鼠标。

i3status

状态栏

bar {
        status_command i3status
}

i3exit

i3exit是个脚本集,需要在配置里做一个菜单来调用:

set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift>
mode "$mode_system" {
    bindsym l exec --no-startup-id i3exit lock, mode "default"
    bindsym e exec --no-startup-id i3exit logout, mode "default"
    bindsym s exec --no-startup-id i3exit suspend, mode "default"
    bindsym h exec --no-startup-id i3exit hibernate, mode "default"
    bindsym r exec --no-startup-id i3exit reboot, mode "default"
    bindsym Shift+s exec --no-startup-id $i3_path/i3exit shutdown, mode "default"
    # back to normal: Enter or Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}
bindsym $mod+x mode "$mode_system"

锁屏

i3lock

bindsym $mod+o exec i3lock -c 000000

-c指定背景颜色。

i3exit的锁屏

背景不想纯色时,可以改用毛玻璃效果的i3exit lock

使用cinnamon的锁屏

# 锁屏并黑屏
bindsym $mod+o exec "cinnamon-screensaver-command -l; xset dpms force off;"

# 单纯锁屏
bindsym $mod+o exec "cinnamon-screensaver-command -l"

compton(推荐使用**picom**)

效果器,提供淡入淡出、阴影、透明等效果支持。

GUI配置界面compton-conf

正在测试

suckless-tools

像其他环境中Alt+Tab循环切换焦点到下一个窗口

流畅度不行,习惯i3的操作方式之后,这真没什么用。。。

via: https://gist.github.com/Nervengift/0ab9e6127ac17b8317ac

额外依赖:jq/awk

#!/bin/bash
# ================================================================================== #
# Focus the next window on the current workspace in i3, e.g. for binding to Alt+Tab  #
# Depends: jq, awk, i3wm (obviously)                                                 #
# Author: Nervengift <[email protected]>                                               #
# License: Don't think this deserves a license, Public Domain                        #
# Known bugs: doesn't work with non-window container focused                         #
# ================================================================================== #

ws=$(i3-msg -t get_workspaces|jq "map(select(.focused))[]|.name")
windows=$(i3-msg -t get_tree|jq ".nodes|map(.nodes[])|map(.nodes[])|map(select(.type==\"workspace\" and .name==$ws))[0].nodes|map(recurse(.nodes[]))|map(.window)|.[]|values")
current=$(i3-msg -t get_tree|jq "recurse(.nodes[])|select(.focused)|.window")
if [ "x$current" != "xnull" ]; then
    next=$(echo $windows | awk "BEGIN {RS=\" \";FS=\"   \"};NR == 1 {w=\$1};{if (f == 1){w=\$1;f=0}else if (\$1 == \"$current\") f=1};END {print w}")
    i3-msg [id=$next] focus > /dev/null
fi

i3加入配置:

bindsym $alt+Tab exec --no-startup-id ~/.config/i3/i3-focus-next

特定工作区启动指定应用程序

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'