# cat_python_ui **Repository Path**: emtx/cat_python_ui ## Basic Information - **Project Name**: cat_python_ui - **Description**: No description available - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-30 - **Last Updated**: 2025-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Cat Photo UI (HDMI 全屏最小版) ### 运行 ```bash python3 -m pip install -r requirements.txt python3 main.py --windowed # 调试窗口模式 python3 main.py # 全屏,自动投放到 HDMI/副屏 ``` ### 屏幕选择参数 - `--screen-name `: 按名称模糊匹配目标屏,如包含 "HDMI"。 - `--screen-index `: 按索引选择屏幕(0 起)。 - `--no-prefer-hdmi`: 关闭 HDMI 名称优先策略。 - `--windowed`: 窗口模式(非全屏)。 - `--exclusive-hdmi`: 独占HDMI,临时解绑fbcon并降低内核日志级别(需root)。 - `--config`: 指定TOML配置文件路径(若不指定,会在 `/etc/cat_photo_ui/config.toml`、`~/.config/cat_photo_ui/config.toml`、项目根目录 `config.toml` 依次查找)。 优先级:`--screen-name` > `--screen-index` > `HDMI 名称优先` > 非主屏 > 主屏。 ### 目录结构 ``` . ├── main.py ├── requirements.txt ├── src/ │ └── cat_photo_ui/ │ ├── __init__.py │ ├── app.py │ └── hdmi_ui.py └── README.md ``` ### 配置文件 示例:`config.example.toml` ```toml [slideshow] photo_dir = "/mnt/tfcard/nextcloud_share/手机相册" interval = 8 shuffle = true people_priority = false people_weight = 2.0 [display] screen_name = "HDMI" screen_index = 1 prefer_hdmi = true exclusive_hdmi = true ``` ### 后续计划 - 加入相册浏览(图片目录扫描、缩略图栅格、轮播)。 - 遥控/按键事件支持与无鼠标操作。 - 开机自启动与看门狗稳定性。 ### 独占HDMI启动(建议) ```bash sudo bash scripts/run_exclusive_hdmi.sh --screen-name HDMI ``` 说明: - 启动前:将 `/proc/sys/kernel/printk` 设置为较低级别,并通过 `/sys/class/vtconsole/vtcon*/bind` 解绑帧缓冲控制台。 - 退出后:恢复之前的日志级别与绑定。 - 若未以root运行,上述步骤会被忽略,不会报错。 ### 开机自启(systemd) ```bash sudo bash scripts/install_systemd_service.sh ``` 服务会以 root 在开机后启动,默认参数为独占HDMI + linuxfb + `/dev/tty0`,并屏蔽标准输出/错误输出,避免系统信息刷屏。 常用命令: ```bash sudo systemctl status cat-photo-ui.service | cat sudo journalctl -u cat-photo-ui.service -n 100 --no-pager sudo systemctl restart cat-photo-ui.service sudo systemctl disable --now cat-photo-ui.service ```