Updated README zh (markdown)

Shen Jian
2022-02-12 09:04:22 +08:00
parent e867ecd352
commit 1e88b54f18

@@ -4,38 +4,47 @@
*This guide is not a word by word translation of [original README](https://github.com/LGUG2Z/komorebi/blob/master/README.md). Adaptations are made to make it more readable for Chinese user, and omit some section like contribution. (I assume one who has ability to contribute can read original English README)*
# komorebi
Windows上的平铺式窗口管理器。
![screenshot](https://i.ibb.co/BTqNS45/komorebi.png)
# 关于
_komorebi_ 是一个平铺式窗口管理器作为对Windows 10及以上系统的默认[窗口管理器](https://docs.microsoft.com/en-us/windows/win32/dwm/dwm-overview) 的扩展。_komorebi_ 相关的讨论、帮助及常见问题处理参见[Discord server](https://discord.gg/mGkn66PHkx)。您可以通过issue提交功能需求或错误报告。关于_komorebi_的文章博客示例和视频请补充到下面的列表
- [Moving to Windows from Linux Pt 1](https://kvwu.io/posts/moving-to-windows/)
- [Windows 下的现代化平铺窗口管理器 komorebi](https://zhuanlan.zhihu.com/p/455064481)
# 描述
`komorebi` 是又一个 Windows 平铺式窗口管理器, 受 [bspwm](https://github.com/baskerville/bspwm) 所启发.
## 架构
`komorebi` 和 Linux 上的 [bspwm](https://github.com/baskerville/bspwm) 以及
macOS 中的 [yabai](https://github.com/koekeishiya/yabai) 一样, 遵循如此架构设计
`komorebi` 和 Linux 上的 [_bspwm_](https://github.com/baskerville/bspwm) 以及
macOS 中的 [_yabai_](https://github.com/koekeishiya/yabai) 一样, 按照如下架构实现
```txt
PROCESS SOCKET
ahk --------> komorebic <------> komorebi
```
- `komorebi` 只会回应 [WinEvents](https://docs.microsoft.com/en-us/windows/win32/winauto/event-constants) 和专用 socket 中的消息.
- `komorebic` 是一个 `komorebi` 的专用 socket 中写入消息的命令行程序
- `komorebi` `komorebic` 都不会直接处理用户的键鼠输入. 需要一个第三方程序来将用户的输入转换为 `komorebic` 的命令. 在此以 AutoHotKey 为例, 但是用其他程序 (如[Python 的 keyboard 库](https://github.com/boppreh/keyboard)) 来调用 `komorebic` 也是完全有可能的.
- `komorebi` 仅响应 [WinEvents](https://docs.microsoft.com/en-us/windows/win32/winauto/event-constants) 和专用 socket 中的消息
- `komorebic` 是一个 `komorebi` 的专用 socket 中发送消息的命令行程序
- `komorebi` 本身不支持任何键盘和鼠标操作需要通过第三方程序如AutoHotKey将键盘和鼠标操作转换为 `komorebic` 的命令。另也可直接向专用socket发送消息(如使用[Python 的 keyboard 库](https://github.com/boppreh/keyboard))
## 设计
`komorebi` 是 [yatta](https://github.com/LGUG2Z/yatta) 的继任者. `komorebi`最初的设计目标
便是支持其他平台上已经成为平铺式窗口管理器的标准的复杂特性.
`komorebi` 是 [yatta](https://github.com/LGUG2Z/yatta) 的继任者,基于其优秀经验打造。
- `komorebi` 管理着一串物理监视器 (monitor) 列表.
- 监视器 (monitor) 在此便就是个包含着一个或多个虚拟工作空间 (workspace) 的长方形玩意儿
- 工作空间 (workspace) 包含着一串窗口容器 (containers) 列表
- 窗口容器 (container) 在此就是一个长方形玩意儿, 一个或多个应用程序可以在此显示其窗口界面.
当初做 _yatta_ 主要是学习如何使用Rust以及如何在Rust中调用Windows API同时实现一个简单的平铺窗口管理器以满足自己的日常使用(主要是单显示器、单工作区)。 _komorebi_ 则从头开始,全新设计,以支持更复杂的,在其它平台上早已是标准的特性(指平铺式窗口管理器)。
`komorebi` 管理着所有物理监视器 (monitor) ;监视器 (monitor) 可以看做包含一个或多个虚拟工作空间 (workspace) 的区域;工作空间 (workspace) 又包含多个窗口容器 (containers) ;应用程序则显示在这些窗口容器 (container) 中。
也就是说
- 每个物理显示器都可以有它自己的一套工作空间
- 工作空间仅可以感知其下的窗口容器, 而非窗口容器下的独立的应用程序窗口
- 每个物理显示器都可以有它自己的一套虚拟工作空间
- 工作空间仅可以感知其下的窗口容器, 而非窗口容器下的应用程序窗口
- 每个应用程序窗口都必然属于一个窗口容器, 即使该容器仅包含一个应用程序窗口
- 多个属于同一窗口容器的应用程序窗口会被堆叠 (stacked) 并且可以循环切换
- 属于同一窗口容器的多个应用程序窗口,可以堆叠 (stacked)和循环
## 如何使用