在您控制的组中管理i3wm工作区
i3-workspace-groups的Python项目详细描述
i3工作区组
一个python库和一组用于管理分组i3wm工作区的命令行工具 你定义的。 我发现这个工具对于管理i3中的许多工作区非常有用。
目录
背景
我经常发现自己同时处理许多i3工作区(7-8+),通常 与多个项目/环境(个人/工作等)相关。这让我 一些问题,例如:
- 使用给定项目/上下文的一组工作区,而不是 被不相关的工作空间分心。
- 在多个项目/上下文中重用相同的工作区编号。例如,
我有两封不同的私人和工作邮件,我想要
super+1
总是切换到与我当前的 上下文。 - 找到新窗口的免费工作区(也可以通过我的 键绑定)
这使我创建了https://github.com/infokiller/i3工作区组 project,它使您能够定义和管理工作空间组,每个工作空间组 它们自己的"名称空间",并在它们之间切换。
概述
cli工具i3工作区组
支持的主要操作是:
- 将焦点工作区分配给具有给定名称的组(并创建 组(如果不存在)。
- 切换当前的活动组。请注意 小组不一定与重点小组相同
- 在一个组内导航和移动,而忽略其他组。见 以下示例。
提供的工具使用i3工作区名称来存储和读取每个工作区的组 工作区。例如,如果用户将工作区"mail"分配给组 "工作",将重命名为"工作:邮件"。
示例漫游
注意:本演练假定您配置了 示例i3配置
假设我们从以下工作区名称开始:
- "1"来自YouTube的猫视频。
- 带新闻阅读器的"2"。
- 带照片编辑器的"3"。
- "4"和一个工作邮件客户端。
这里需要理解的一件重要事情是,每个i3工作区总是 分配给单个组。因为我们还没有给 然而,所有的工作区都隐式地在 默认组,用字符串"<;default>;"标记。
闲暇几个小时后,你决定做一些工作,这需要
在几个工作区打开几个窗口。为了创建一个新组,首先
切换到工作区"4",然后按super+shift+g
,将
提示你新的换新的组。你决定把它命名为"工作",然后按
进入。然后,您会注意到工作区名称将在i3bar中更改为
"工作:4"。
然后,按super+g
以切换活动
组将向您显示现有组的列表,其中
现在是"工作"和"默认值"。
现在您应该看到i3bar中的工作区按以下顺序排列:
"工作:4","1","2","3"。
这里发生了什么事?
当你转到"工作"组时,工具做的第一件事就是
将工作组中的所有工作区(仅"work:mail")移动到
工作区列表的开头。然后,它在默认情况下重命名了工作空间
组以包含组名,以便
与"工作"组中同名的其他工作区不同。
然后,您决定要在新的工作区中打开一个新的终端窗口。
因此,您按super+2
,这将把您移到一个名为"work:2"的新工作区。
注意,虽然已经有一个默认名称为"2"的工作区
分组(现在在工作区列表中显示为"2"),使用super+2
实际执行
您将进入"工作"组中的新空工作区。
工作一段时间后,你变得懒惰,你想回到猫的视频,
但你答应过自己几个小时后回去工作,你不想
失去你敞开的心扉。因此,按super+g
可将当前工作切换回
默认值。现在您应该看到i3bar中的工作区按
如下:"1"、"2"、"3"、"工作:4"。重点也将转移到第一个
默认组中的工作区(本例中为"1")。
现在回到默认组,按super+2
将再次引导
您将进入默认组中的工作区"2"。
i3配置
为了有效地使用这些工具,需要将命令绑定到 键绑定。例如,我的i3配置包含以下练习:
set $mod Mod4
strip_workspace_numbers yes
set $exec_i3_groups exec --no-startup-id i3-workspace-groups
# Switch active workspace group
bindcode $mod+g exec --no-startup-id i3-switch-active-workspace-group
# Move workspace to another group
bindcode $mod+Shift+g exec --no-startup-id i3-assign-workspace-to-group
bindsym $mod+1 $exec_i3_groups workspace-number 1
bindsym $mod+2 $exec_i3_groups workspace-number 2
bindsym $mod+3 $exec_i3_groups workspace-number 3
bindsym $mod+4 $exec_i3_groups workspace-number 4
bindsym $mod+5 $exec_i3_groups workspace-number 5
bindsym $mod+6 $exec_i3_groups workspace-number 6
bindsym $mod+7 $exec_i3_groups workspace-number 7
bindsym $mod+8 $exec_i3_groups workspace-number 8
bindsym $mod+9 $exec_i3_groups workspace-number 9
bindsym $mod+0 $exec_i3_groups workspace-number 10
bindsym $mod+Shift+1 $exec_i3_groups move-to-number 1
bindsym $mod+Shift+2 $exec_i3_groups move-to-number 2
bindsym $mod+Shift+3 $exec_i3_groups move-to-number 3
bindsym $mod+Shift+4 $exec_i3_groups move-to-number 4
bindsym $mod+Shift+5 $exec_i3_groups move-to-number 5
bindsym $mod+Shift+6 $exec_i3_groups move-to-number 6
bindsym $mod+Shift+7 $exec_i3_groups move-to-number 7
bindsym $mod+Shift+8 $exec_i3_groups move-to-number 8
bindsym $mod+Shift+9 $exec_i3_groups move-to-number 9
bindsym $mod+Shift+0 $exec_i3_groups move-to-number 10
# Switch to previous workspace in group.
bindcode $mod+p $exec_i3_groups workspace-prev
# Switch to next workspace in group.
bindcode $mod+n $exec_i3_groups workspace-next
# Move to previous workspace in group.
bindcode $mod+Shift+p $exec_i3_groups move-to-prev
# Move to next workspace in group.
bindcode $mod+Shift+n $exec_i3_groups move-to-next
我还建议为i3内置的工作区导航保留keybindings 命令,例如:
bindsym $mod+Control+1 workspace number 1
bindsym $mod+Control+2 workspace number 2
bindsym $mod+Control+3 workspace number 3
bindsym $mod+Control+4 workspace number 4
bindsym $mod+Control+5 workspace number 5
bindsym $mod+Control+6 workspace number 6
bindsym $mod+Control+7 workspace number 7
bindsym $mod+Control+8 workspace number 8
bindsym $mod+Control+9 workspace number 9
bindsym $mod+Control+0 workspace number 10
限制
- 工作区名称用于存储组,因此如果另一个工具更改了 不保留此项目使用的格式的工作区名称,工具 可能会弄错小组作业。
- 默认情况下,每个组最多可以有100个工作区。
概念
活动工作区
活动工作区是i3中数量最少的工作区。通常情况下, 在使用提供的脚本来管理工作区之前,这将是 首先出现在i3bar的工作区列表中的一个(默认情况下,最左边的 一)
注意:在多监视器设置中,每个监视器都有一个活动工作区。 注意:主工作区不受是否聚焦的影响。
活跃组
活动组是活动工作区的组。 此组通常包含与您正在执行的任务相关的工作区 它激活的时间。当您想处理另一个任务时,可以切换 活动组。 不在活动组中的工作区仍然可以与交互,但是 提供的一些命令旨在使与 活动组的工作区。
注意:在多监视器设置中,每个监视器有一个活动组(它可以 相同,具体取决于监视器中活动工作区的组。
重点小组
集中工作区的组。
默认组
用户未分配给组的工作区组。这个 组通常显示为"<;default>;"。
安装
可以使用pip安装脚本:
pip install i3-workspace-groups
那么您应该能够运行命令行工具
i3工作区组
。
还有一些实用程序脚本如果需要
rofi这对
以交互方式管理组,使用rofi作为ui。它们包括:
摇摆兼容性注释
这个项目依赖于 与i3的交互,所以在sway上也应该同样有效。也就是说,我没有 现在测试一下,i3是我的主窗口管理器。