在您控制的组中管理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. "1"来自YouTube的猫视频。
  2. 带新闻阅读器的"2"。
  3. 带照片编辑器的"3"。
  4. "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是我的主窗口管理器。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java 2D数组,查找包含元素   包含EBCDIC值的java打印字节数组未给出预期值   java应用程序重新启动,由于AndroidRuntime异常而无法运行   java在spring中对拦截器的使用   java ActiveMQ,代理接收要发送的消息的时间戳   JAVA:如何从需要启用Cookie的站点下载HTML文件?   邮件发送期间发生java证书错误   Java错误:类事务中的构造函数事务无法应用于给定类型   方法的Java对象空检查   Java如何在多个源文件夹之间使用全局变量?   二进制字符串到整数转换器中的java错误   java在关闭页面后保存数据   c#使用java客户端使用WCF restful Web服务?   java在从vimeo api获取后更改iframe src   API低于17的java Android AlertDialog setOnDismissListener   java如何将文本从对象的ArrayList设置为TextView?   java OpenCV Android imwrite给我一个蓝色图像   java能够在RecyclerView中同时单击两个项目   java将字节数组写入文件的快速方法