{"id":20498004,"url":"https://github.com/fkxxyz/ssfconv","last_synced_at":"2025-04-09T21:23:00.884Z","repository":{"id":41454246,"uuid":"266780567","full_name":"fkxxyz/ssfconv","owner":"fkxxyz","description":"Sogou input method skin file (.ssf file) converter, supports conversion to fcitx or fcitx5 format.","archived":false,"fork":false,"pushed_at":"2024-05-06T07:15:17.000Z","size":68,"stargazers_count":216,"open_issues_count":13,"forks_count":26,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T19:06:54.738Z","etag":null,"topics":["color","convert","converter","fcitx","fcitx5","skin","ssf","theme"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fkxxyz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-25T13:02:04.000Z","updated_at":"2025-03-26T15:05:56.000Z","dependencies_parsed_at":"2025-01-16T01:09:19.569Z","dependency_job_id":"59a37615-55d1-4b34-8e86-c6b2aede35c5","html_url":"https://github.com/fkxxyz/ssfconv","commit_stats":{"total_commits":11,"total_committers":2,"mean_commits":5.5,"dds":0.09090909090909094,"last_synced_commit":"4202290eda8835c36756595b7bae3c268d6804e3"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkxxyz%2Fssfconv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkxxyz%2Fssfconv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkxxyz%2Fssfconv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fkxxyz%2Fssfconv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fkxxyz","download_url":"https://codeload.github.com/fkxxyz/ssfconv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248112992,"owners_count":21049767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["color","convert","converter","fcitx","fcitx5","skin","ssf","theme"],"created_at":"2024-11-15T18:12:47.922Z","updated_at":"2025-04-09T21:23:00.860Z","avatar_url":"https://github.com/fkxxyz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 简介\nfcitx输入法框架能够自定义皮肤，然后有个很nb的作者开发了个搜狗皮肤转换成fcitx皮肤的，这是原项目地址 https://github.com/VOID001/ssf2fcitx\n\n然后我亲自试了几个我喜欢的皮肤，居然真的可以转换，跟搜狗差不多了，不过一段时间后，发现一些bug：设置了皮肤之后，输入法菜单隔空而且透明，字都看不清。部分皮肤文字位置很奇怪。于是，我看了他的源码，发现逻辑还挺简单，然后看了下fcitx的自定义皮肤的各种格式，打算亲自研究研究这是怎么回事。\n\n最终打算参考这个项目，自己用python写个。\n\n由于 fcitx5 也支持主题，最终也实现了转换成 fcitx5 主题！\n\n## 成果\n\n最终两个函数实现，取名为转换器ssfconv，放到 github 托管 https://github.com/fkxxyz/ssfconv\n\n在原作者的基础上进行了下面几方面改进：\n\n1. 部分皮肤文字位置重新计算，摆放更合理\n2. 将菜单的背景也设置成皮肤的主题色，文字大小和颜色均计算到合理\n3. 字体单位改成像素，和搜狗一致，完美还原\n4. 调整了翻页指示器的位置，自动生成指示器的图像\n5. 额外支持 fcitx5\n\n参考图像在这里看\n\nhttps://www.fkxxyz.com/d/ssfconv/\n\n## 开始使用\n\n下面直接举例吧。\n\n在 archlinux 或 manjaro 下，可以在 aur 中直接安装 ssfconv\n\n```shell\nyay -S ssfconv\n```\n\n对于其它发行版下，请按照下面方法逐步安装。\n\n### 下载此仓库\n\n```shell\ngit clone https://github.com/fkxxyz/ssfconv.git\ncd ssfconv\n```\n\n### 安装python依赖\n\n该项目使用 python3 开发，依赖于 Crypto、pillow、numpy 库，最好使用相应的发行版的包管理器安装它们，或者使用 pip\n\n### 下载皮肤\n\n先从[搜狗输入法的皮肤官网](https://pinyin.sogou.com/skins/)下载自己喜欢的皮肤，得到ssf格式的文件，例如 【雨欣】蒲公英的思念.ssf\n\n### 转换为 fcitx 皮肤\n\n转换皮肤\n\n```shell\n./ssfconv  【雨欣】蒲公英的思念.ssf  【雨欣】蒲公英的思念\n```\n\n复制到用户皮肤目录\n\n```shell\nmkdir -p ~/.config/fcitx/skin/\ncp -r 【雨欣】蒲公英的思念  ~/.config/fcitx/skin/\n```\n\n使用该皮肤\n\n右键输入法托盘图表，选中皮肤，这款皮肤是不是出现在列表里了呢，尽情享用吧。\n\n### 转换为 fcitx5 主题\n\n转换皮肤\n\n```shell\n./ssfconv  -t fcitx5  【雨欣】蒲公英的思念.ssf  【雨欣】蒲公英的思念\n```\n\n复制到用户主题目录\n\n```shell\nmkdir -p ~/.local/share/fcitx5/themes/\ncp -r 【雨欣】蒲公英的思念  ~/.local/share/fcitx5/themes/\n```\n\n使用该皮肤\n\n打开 fcitx5 的配置，附加组件标签，经典用户界面，点配置，在主题的下拉列表里，选择这款皮肤。\n\n或者你也可以直接修改配置文件 ~/.config/fcitx5/conf/classicui.conf，将 Theme 的值改成这个皮肤的名称即可。\n\n用下面这条命令可以看到该皮肤的名称：\n\n```shell\ngrep Name ~/.local/share/fcitx5/themes/【雨欣】蒲公英的思念/theme.conf\n```\n\n## 详细介绍\n\n使用方法被封装得非常简单，像个转换器，可以在下面四种格式之间任意转换：\n\n1. ssf格式（加密）\n2. ssf格式（未加密，本质是zip）\n3. 文件夹（解密或解压ssf格式得到）\n4. fcitx格式（在文件夹的基础上多了fcitx_skin.conf，可用于fcitx）\n5. fcitx5格式（在文件夹的基础上多了theme.conf，可用于fcitx5）\n\n命令行参数\n\n```shell\nssfconv \u003csrc\u003e [dest] [-t type]\n```\n\n源文件是必选参数，目标文件可选，转换的目标类型 -t 是可选参数，type值是下面四个值之一：\n\n```\nfcitx\t\t\t可直接用于fcitx的文件夹\nfcitx5\t\t\t可直接用于fcitx5的文件夹\ndir\t\t\t\t解包后的文件夹\nencrypted\t\t加密的ssf皮肤\nzip\t\t\t\t未加密的ssf皮肤（zip）\n```\n\n默认是转换为 fcitx 格式。\n\n注意，源文件的格式可以是以上任意五个格式之一，不需要指定，程序已经可以智能识别格式。\n\n## 已知缺陷\n\n### fcitx\n\n因为 fcitx 的限制，输入框里只能对文字的外边距进行设置，无法像搜狗拼音输入法一样任意调整坐标，导致部分皮肤只能在图片拉升和文件位置靠右来二选一的取舍。不过大多数皮肤都能挺不错的转换，只有少数皮肤实在是没办法了，只好用图片拉升代替（原作者是将文字调整到靠右，留了很多空白）。\n\n### fcitx5\n\n- fcitx5 能够完美地像搜狗输入法一样调整，但是主题中所设置的字体是无效的，需要手动设置字体，经过我反复的实验，将字体设置为 \"Sans 10\" 似乎是大多数皮肤的最佳体验。\n- 菜单字体颜色无法通过主题调整，只能为黑色高亮白色，所以在背景比较黑或者比较白的皮肤下，菜单可能体验不理想。\n- 部分皮肤可能转换效果不太好，需要寻找原因，欢迎提出 issues 帮助我改进，最好说明皮肤的下载链接便于排查。\n\n## 致谢\n\n该项目的思路，以及解密的过程和密钥，完全参考了 [VOID001/ssf2fcitx](VOID001/ssf2fcitx) 在此表示感谢！\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffkxxyz%2Fssfconv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffkxxyz%2Fssfconv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffkxxyz%2Fssfconv/lists"}