# picom **Repository Path**: script-beimen/picom ## Basic Information - **Project Name**: picom - **Description**: pijulius picom仓库镜像 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-28 - **Last Updated**: 2024-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Picom 这个项目是从原始的 Compton 分支而来,因为 Compton 似乎已经不再维护。 目前这个分支的主要目标是对代码进行重构,使其更易于维护,从而减少潜在贡献者在查看代码时产生的畏惧感。 我们还致力于修复各种 bug。 你可以在 [README_orig.md](README_orig.md) 找到原始的 README 文件。 ## 寻求测试者 ### `--experimental-backends` 这个标志启用了重构或部分重写的渲染后端。 当前,新后端在使用 xrender 后端时具有更好的垂直同步(vsync),并且在使用 glx 后端时(非 NVIDIA 用户)可以改善输入延迟。性能应该与旧后端相当。 未来,新的后端功能将只会在新后端上实现,旧后端在新后端稳定后会逐渐被淘汰。 要测试新后端,请在运行 picom 时添加 `--experimental-backends` 标志。这个标志不能通过配置文件启用。 如果你在使用新后端时发现问题,请在报告中明确说明你使用的是新后端。 ## 重命名 ### 原因 自从这个分支诞生以来,同时存在两个 compton 仓库引起了不少混淆。主要表现为:用户将这个分支的问题报告到原始 compton 仓库,或将原始 compton 的问题报告到这个仓库中。后来,当各大发行版开始打包这个分支时,有些发行版希望将新版本的 compton 与旧版本区分开来。因此,他们不得不为这个分支发明一个新名称。然而,这样做可能会进一步加剧用户的混淆。 因此,我们决定为这个分支更换一个新名字。我认为这个决定是合理的,因为自从从原始项目分叉以来,这个版本的 compton 已经发生了显著的变化。 ### 新名称 为此,我们为新名称设置了以下标准: 0. 简短,便于记忆。 1. 可发音,这样有助于记忆。 2. 易于搜索,当人们搜索这个名称时,他们可以轻松找到这个仓库。 当然,选择一个好名字从来都不容易,也没有一个客观的方法来评价名字的好坏。然而,我们必须尽快解决前面提到的问题。 最终,我们选择了 `picom`(由 `pico` 和 `composite` 两个词合成)作为新名称。这个名字可能不完美,但我们会继续沿用,除非有令人信服的理由更换它。 ### 迁移 根据 [废弃流程](https://github.com/yshui/picom/issues/114),迁移到新名称将分三个步骤进行: 1. 在代码库中所有提到 `compton` 的地方将被替换为 `picom`。`compton` 仍然会被安装,但仅作为 `picom` 的符号链接。当通过符号链接启动 `picom` 时,会打印出一个警告信息,提醒用户迁移。同样,旧的配置文件名和 dbus 接口名仍然会被接受,但会显示警告信息。 2. 在步骤 1 之后的 3 个主要版本发布中,警告信息将被提升为错误信息,并且当通过符号链接启动时 `picom` 将不会启动。 3. 在步骤 2 之后的 3 个主要版本发布中,将移除符号链接。 dbus 接口和服务名不变,因此不需要迁移。 ## 变更日志 请参阅 [Releases](https://github.com/yshui/picom/releases) ## 构建 ### 依赖项 假设你已经安装了所有常用的编译工具(如 gcc、python、meson、ninja 等),你还需要以下依赖项: - libx11 - libx11-xcb - libXext - xproto - xcb - xcb-damage - xcb-xfixes - xcb-shape - xcb-renderutil - xcb-render - xcb-randr - xcb-composite - xcb-image - xcb-present - xcb-xinerama - xcb-glx - pixman - libdbus(可选,使用 `-Ddbus=false` meson 配置标志禁用) - libconfig(可选,使用 `-Dconfig_file=false` meson 配置标志禁用) - libGL(可选,使用 `-Dopengl=false` meson 配置标志禁用) - libpcre(可选,使用 `-Dregex=false` meson 配置标志禁用) - libev - uthash 在基于 Debian 的发行版(如 Ubuntu)中,所需的包列表为: ``` libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libxcb-glx0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev ``` 若要构建文档,你还需要 `asciidoc`。 ### 构建步骤 ```bash $ git submodule update --init --recursive $ meson --buildtype=release . build $ ninja -C build ``` 编译后的二进制文件可以在 `build/src` 中找到。 如果你在非默认路径(如 `/usr/local/`)安装了库或头文件,可能需要告诉 meson 这些路径,因为 meson 默认不会在这些位置查找依赖项。 你可以通过在运行 `meson` 时设置 `CPPFLAGS` 和 `LDFLAGS` 环境变量来完成这一操作。例如: ```bash $ LDFLAGS="-L/path/to/libraries" CPPFLAGS="-I/path/to/headers" meson --buildtype=release . build ``` 举例来说,在 FreeBSD 上,你可能需要这样运行 meson: ```bash $ LDFLAGS="-L/usr/local/include" CPPFLAGS="-I/usr/local/include" meson --buildtype=release . build $ ninja -C build ``` ### 安装 ```bash $ ninja -C build install ``` 默认的安装路径是 `/usr/local`,你可以使用以下命令修改安装前缀: ```bash $ meson configure -Dprefix=<路径> build ``` ## 如何贡献 ### 代码 你可以查看 [Projects](https://github.com/yshui/picom/projects) 页面,看看是否有你感兴趣的内容。或者你可以浏览 [Issues](https://github.com/yshui/picom/issues) 来寻找可以解决的问题。 ### 非代码贡献 即使你不想贡献代码,你仍然可以通过编译和运行这个分支,并报告你发现的任何问题来作出贡献。 我们也欢迎你对文档和 wiki 做出贡献。 ## 贡献者 参见 [CONTRIBUTORS](CONTRIBUTORS) --- ——由chatgpt翻译