news 2026/9/11 14:08:45

calibre 深度定制指南:环境变量、Tweaks、资源覆盖与插件体系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
calibre 深度定制指南:环境变量、Tweaks、资源覆盖与插件体系

calibre 深度定制指南:环境变量、Tweaks、资源覆盖与插件体系

【免费下载链接】calibreThe official source code repository for the calibre ebook manager项目地址: https://gitcode.com/GitHub_Trending/ca/calibre

本篇指南以 calibre 官方手册的 Customizing calibre 章节(manual/customize.rst)为核心骨架,系统讲解 calibre 高度模块化设计下的四大定制途径:通过环境变量改变配置目录、缓存位置、语言与界面行为;通过Tweaks(微调项)精细控制书籍管理、排序、界面显示等上百种行为;通过覆盖静态资源自定义图标、模板与 JavaScript;以及通过插件(Plugins)体系扩展转换、新闻抓取、设备连接等核心功能。读完本文,你将掌握从"换一个图标"到"编写并分发自定义插件"的完整定制技术栈,并能结合仓库源码理解每一层定制在 calibre 内部的真实生效机制。

一、定制概览:calibre 的分层可定制架构

calibre 在设计上刻意保持了高度的模块化(src/calibre/customize/__init__.py中定义了整套插件基类体系)。官方文档将定制能力划分为四个层次,从轻到重依次为:

  1. 环境变量:进程启动前注入,影响配置目录、缓存、数据库路径、语言、Qt 平台等全局行为;
  2. Tweaks(微调项):通过图形界面Preferences->Advanced->Tweaks修改,控制各类具体行为;所有默认值集中定义在 resources/default_tweaks.py;
  3. 静态资源覆盖:在 calibre 配置文件夹内建立resources子目录,以同名文件覆盖内置图标、模板、脚本;
  4. 插件体系:通过 src/calibre/customize/init.py 中定义的插件基类,向转换管线、设备连接、元数据处理、用户界面等各个环节注入自定义逻辑。

这四个层次优先级从低到高,后文依次展开。需要注意的是:图标主题与插件虽然可以通过 calibre 内置更新器下载,但它们并不属于 calibre 本体,其官方支持与源码位置在 Mobileread 论坛对应的支持帖中。

二、用环境变量定制 calibre

环境变量是 calibre 定制的最底层机制,在进程启动时即被读取。官方文档给出了完整的变量清单,下表逐一说明,并标注了仓库源码中的实际读取位置作为佐证。

环境变量作用源码依据
CALIBRE_CONFIG_DIRECTORY设置配置文件的存放/读取目录src/calibre/constants.py
CALIBRE_TEMP_DIR设置 calibre 使用的临时文件夹src/calibre/ptempfile.py
CALIBRE_CACHE_DIRECTORY设置跨会话持久数据的缓存文件夹src/calibre/constants.py
CALIBRE_OVERRIDE_DATABASE_PATH指定metadata.db的完整路径,可将其从书库文件夹移出(适用于不支持文件锁的网络驱动器)src/calibre/library/database2.py
CALIBRE_ALLOW_PYTHON_TEMPLATES设为1之外的值即禁用 Python 模板src/calibre/utils/formatter.py
CALIBRE_DEVELOP_FROM从 calibre 开发环境运行(详见 manual/develop.rst)src/calibre/utils/resources.py、src/calibre/gui2/init.py
CALIBRE_OVERRIDE_LANG强制界面语言(ISO 639 语言代码)src/calibre/utils/localization.py
CALIBRE_TEST_TRANSLATION测试翻译.po文件(值为该文件路径)src/calibre/utils/localization.py
CALIBRE_NO_NATIVE_FILEDIALOGS禁止使用系统原生文件选择对话框src/calibre/gui2/qt_file_dialogs.py
CALIBRE_NO_NATIVE_MENUBAR在 Ubuntu Unity 等桌面环境禁用全局菜单,改为窗口内传统菜单
CALIBRE_USE_SYSTEM_THEME在 Linux 上改用系统 Qt 主题(默认使用内置样式以避免崩溃与挂起,代价是不跟随系统外观)src/calibre/gui2/palette.py
CALIBRE_SHOW_DEPRECATION_WARNINGS向 stdout 打印弃用警告,供开发者使用src/calibre/init.py
CALIBRE_NO_DEFAULT_PROGRAMS阻止 calibre 在 Windows 上自动注册可处理的文件类型src/calibre/utils/winreg/default_programs.py
CALIBRE_USE_SYSTEM_CERTIFICATES在 Windows/macOS 上改用系统证书库进行 SSL 校验src/calibre/constants.py
CALIBRE_NO_ICONS_IN_MENUS禁用菜单中的图标src/calibre/gui2/init.py
QT_QPA_PLATFORM在 Linux 上设为wayland强制 Wayland、xcb强制 X11
SYSFS_PATH当 sysfs 挂载在/sys之外的位置时使用
http_proxy/https_proxy在 Linux 上指定 HTTP(S) 代理

2.1 环境变量的生效细节(源码视角)

从 src/calibre/constants.py 可以看到配置目录的解析逻辑:当CALIBRE_CONFIG_DIRECTORY存在时直接采用(config_dir = os.path.abspath(cconfd));否则按平台回退——Windows 为%APPDATA%\calibre,macOS 为~/Library/Preferences/calibre,Linux 为$XDG_CONFIG_HOME/calibre(默认~/.config/calibre)。若目录不可写,则会临时创建配置目录并在退出时清理。缓存目录(_get_cache_dir)的解析也遵循同样模式:优先CALIBRE_CACHE_DIRECTORY,否则在 Windows 使用%LOCALAPPDATA%\calibre-cache,macOS 使用~/Library/Caches/calibre,Linux 使用$XDG_CACHE_HOME/calibre。这一源码逻辑印证了文档中"环境变量优先级高于平台默认路径"的说明。

2.2 在各平台设置环境变量

  • Windows:通过系统"环境变量"对话框设置(官方文档指向 computerhope 的教程链接);也可用set CALIBRE_CONFIG_DIRECTORY=C:\path\to\config形式的命令行方式临时设置。
  • macOS:官方文档给出了专门的机制——创建~/Library/Preferences/calibre/macos-env.txt文件,每行一个环境变量,例如:
CALIBRE_DEVELOP_FROM=$HOME/calibre-src/src CALIBRE_NO_NATIVE_FILEDIALOGS=1 CALIBRE_CONFIG_DIRECTORY=~/.config/calibre
  • Linux:在 shell 启动文件中导出,或按env VAR=value calibre的方式单次注入。

2.3 典型应用场景

  • 多实例隔离:为不同的 calibre 实例设置不同的CALIBRE_CONFIG_DIRECTORYCALIBRE_CACHE_DIRECTORY
  • 网络驱动器书库:书库文件夹位于不支持文件锁的网络盘时,用CALIBRE_OVERRIDE_DATABASE_PATHmetadata.db放到本地磁盘;
  • 界面兼容性:Linux 下遇到 Qt 版本冲突导致的崩溃/挂起时,保持默认(不要设置CALIBRE_USE_SYSTEM_THEME);需要 Wayland 时设置QT_QPA_PLATFORM=wayland
  • 语言与翻译CALIBRE_OVERRIDE_LANG=de强制德语界面;翻译工作者用CALIBRE_TEST_TRANSLATION=/path/to/file.po直接加载待测翻译文件。

三、Tweaks:精细行为微调

Tweaks 是 calibre 提供的一组"小开关",用于控制具体行为细节。修改入口为Preferences->Advanced->Tweaks,修改后通常需要重启 calibre 生效。所有 Tweaks 的默认值与完整注释集中在 resources/default_tweaks.py,calibre 首次启动时若该文件不存在会按默认值重建。

以下按功能域分类整理核心 Tweaks(默认值均取自当前仓库文件,可作为配置参考)。

3.1 系列编号与作者名处理

  • series_index_auto_increment(默认'next'):为新加入现有系列的书分配系列号的算法。可选值:

    • next:大于现有最大编号的第一个可用整数;
    • first_free:大于 0 的第一个可用整数;
    • next_free:大于现有最小编号的第一个可用整数;
    • last_free:小于现有最大编号的第一个可用整数,找不到则返回"最大+1";
    • const:始终分配 1;
    • no_change:不改变系列号;
    • 直接给一个数字(不加引号,如16.50.0):始终分配该数字。
  • use_series_auto_increment_tweak_when_importing(默认False):导入/添加书籍时是否使用上述算法。False时,导入未显式给出系列号的书会被设为 1;True时按series_index_auto_increment分配。注意:若导入正则表达式或元数据插件已经产出了 series_index 值,则始终使用该值,不受此开关影响。

  • authors_completer_append_separator(默认False):作者补全时是否在补全文本后自动追加分隔符以开启新一轮补全。

  • author_sort_copy_method(默认'comma'):从 author 生成 author_sort 的算法。

    • invert"fn ln""ln, fn"
    • copy:原样复制;
    • comma:姓名含,时用copy,否则用invert
    • nocomma"fn ln""ln fn"(无逗号)。

    修改后需在左侧标签面板右键作者 ->Manage authors->Recalculate all author sort values重算存量数据。

  • 作者名前后缀词表author_name_suffixes(默认('Jr', 'Sr', 'Inc', 'Ph.D', 'Phd', 'MD', 'M.D', 'I', 'II', 'III', 'IV', 'Junior', 'Senior'),忽略大小写与末尾句点)、author_name_prefixes(默认('Mr', 'Mrs', 'Ms', 'Dr', 'Prof'))、author_name_copywords(如'Agency''Corporation''Company''Inc.'等,出现时 sort 串与姓名一致,即"Acme Inc."不再排成"Inc., Acme"`)。

  • author_use_surname_prefixes(默认False)与author_surname_prefixes(默认('da', 'de', 'di', 'la', 'le', 'van', 'von')):启用后,姓氏前的这些词被视为姓氏前缀,例如"John von Neumann"排序为"von Neumann, John"

  • authors_split_regex(默认r'(?i),?\s+(and|with)\s+'):拆分多位作者的匹配规则,除&外,凡匹配该正则的字符串也作为分隔符。

3.2 标签浏览器与书列表

  • categories_use_field_for_author_name/categories_use_field_for_series_name(默认'author'/'series'):标签浏览器(左侧作者/系列/出版社列表)中显示的字段,可改为'author_sort'/'series_sort'。注意 sort 值不保证唯一,可能出现重复项(不影响功能)。
  • 标签浏览器分区模板:分区(partition)后子类别标签由模板控制——categories_collapsed_name_template(默认r'{first.sort:shorten(4,,0)} - {last.sort:shorten(4,,0)}')、categories_collapsed_rating_template(默认r'{first.avg_rating:4.2f:ifempty(0)} - {last.avg_rating:4.2f:ifempty(0)}')、categories_collapsed_popularity_template(默认r'{first.count:d} - {last.count:d}')。模板变量first/last为对象,可访问namecountavg_ratingsortcategory等子值。
  • sort_columns_at_startup(默认None):启动时书列表的排序列。None表示沿用保存的排序历史;否则为[('列查找名', 顺序)]列表,顺序0升序、1降序。例如[('authors',0),('title',0)]表示"作者内按书名排序"。
  • title_series_sorting(默认'library_order'):库视图中的标题/系列排序方式。'library_order'忽略TheA等冠词(如The Client归入 C 列);'strictly_alphabetic'完全按原字符排序(归入 T 列)。该设置仅影响库显示,不影响设备端;存量书的排序需编辑标题或使用批量编辑对话框的Update title sort刷新。
  • save_template_title_series_sorting(默认'library_order'):保存到磁盘/发送到设备时标题与系列名的格式。处理标题时,'library_order'会用 title_sort 替换标题;处理系列时会把The/An移到末尾(The Lord of the RingsLord of the Rings, The)。模板函数raw_field始终返回原始值,不受此开关影响。
  • per_language_title_sort_articles:按语言配置的"冠词"正则表,默认内置英语、世界语、西班牙语、法语、波兰语、意大利语、葡萄牙语、罗马尼亚语、德语、荷兰语、瑞典语、土耳其语、南非荷兰语、希腊语、匈牙利语等语言的规则。default_language_for_title_sort(默认None)可强制使用某语言(如'deu'),None表示跟随界面语言。title_sort_articles仅为历史遗留项,已不再生效。

3.3 日期与排序行为

  • 日期显示格式gui_pubdate_display_format(默认'MMM yyyy')、gui_timestamp_display_format(默认'dd MMM yyyy')、gui_last_modified_display_format(默认'dd MMM yyyy')。格式串支持d/dd/ddd/dddd(日)、M/MM/MMM/MMMM(月)、yy/yyyy(年)、h/hh/m/mm/s/ss(时分秒)、ap/AP/aP/Ap(12 小时制)、iso(带时区的完整时间,须独占)。例如dd MMM yyyy渲染09 Jan 2010MM/yyyy渲染01/2010
  • locale_for_sorting(默认'',即跟随界面语言):强制排序使用指定语言的 collating 顺序(ISO 639-1 小写代码),例如'fr'用法语规则、'nb'用挪威语规则。
  • sort_dates_using_visible_fields(默认False):排序日期时是否仅使用当前显示的字段(日期值实际同时含日期与时间)。
  • maximum_resort_levels(默认5):搜索、插入设备等操作后重排序的最大层级数。每多一层都带来性能开销,书库很大(数千本)且感到卡顿时可调低。
  • value_for_undefined_numbers_when_sorting(默认0):数字字段无值时的排序占位值,可设负数、'minimum''maximum'等。

3.4 界面交互与行为

  • doubleclick_on_library_view(默认'open_viewer')与enter_key_behavior(默认'do_nothing'):双击与回车在书列表上的行为,可选open_viewerdo_nothingshow_book_detailsshow_locked_book_detailsedit_celledit_metadata。注意除open_viewer/show_book_details/show_locked_book_details外的选项会禁用单击编辑字段。
  • horizontal_scrolling_per_column/vertical_scrolling_per_row(默认均False):书列表是否按列/按行滚动(默认按项滚动)。
  • preselect_first_completion(默认False):编辑作者/标签/系列时是否预选第一个补全项。为False时需按 Tab 接受补全;配合tab_accepts_uncompleted_text(默认False)可让 Tab 接受当前输入而非补全(此时用方向键选择补全;该开关在preselect_first_completion=True时被忽略)。
  • completion_mode(默认'prefix'):补全匹配模式。'prefix'匹配输入前缀;'contains'匹配包含关系(输入asi同时命中 Asimov 与 Quasimodo);'word-prefix'仅匹配词首(asi命中 Asimov 与 "Isaac Asimov" 但不命中 Quasimodo),可用extra_word_break_chars(默认'')追加断词字符(如'-'使fic同时匹配 "Science Fiction" 与 "Science-Fiction")。
  • many_libraries(默认10):复制到书库/快速切换菜单中超过该数量时改为按字母序排列。
  • auto_connect_to_folder(默认''):启动时自动连接的文件夹完整路径;不存在则忽略。示例:Windows'C:/Users/someone/Desktop/testlib',其他系统'/home/dropbox/My Dropbox/someone/library'
  • calendar_start_day_of_week(默认'Default'):日历弹窗一周起始日,可填SundayMonday等英文全名。
  • openers_by_scheme(默认{}):按 URL 类型指定打开程序,如{ "http*": "firefox %u" }使 calibre 用 Firefox 打开网页链接,%u会被替换为 URL;scheme 支持 glob 匹配。
  • macOS 工具栏unified_title_toolbar_on_osx(默认False)启用后工具栏与标题栏合并,但存在最小宽度翻倍等已知缺陷,自行承担风险。
  • 字体与显示change_book_details_font_size_by(默认0)与change_ai_chat_font_size_by(默认0)调整书籍详情面板/AI 对话字体大小(正负值表示增减);template_editor_tab_stop_width(默认4)设置模板编辑器 Tab 宽度(以平均字符计);gui_view_history_size(默认15)控制"查看"按钮右键菜单中最近查看书籍的数量。
  • hide_ai_features(默认False):隐藏界面中所有提及 AI 的菜单项(AI 功能本身是可选启用,未配置后端时相关代码根本不会加载)。

3.5 转换、封面与文件行为

  • restrict_output_formats(默认None):限制转换对话框中的可用输出格式,如['EPUB', 'AZW3']None表示全部可选。
  • save_original_format/save_original_format_when_polishing(默认均True):同格式转换(EPUB→EPUB)或润色时是否保存原始文件,便于设置不满意时重跑。
  • default_tweak_format(默认None):"Unpack book(拆书)"功能的默认格式。None用首选输出格式;可固定'EPUB'/'AZW3''remember'记住上次选择。
  • cover_trim_fuzz_value(默认10):封面裁剪的模糊距离(绝对强度单位),该距离内的颜色视为相同。
  • maximum_cover_size(默认(1650, 2200)):书库内所有封面按比例缩放至该尺寸以内,防止超大封面拖慢性能。
  • cover_drop_exclude(默认()):拖放到"书籍详情"面板时,按扩展名集合排除某些图片格式不当作封面而存为电子书,例如{'tiff', 'webp'}
  • exclude_fields_on_paste(默认[]):Edit metadata->Copy/Paste metadata时跳过粘贴的字段列表,如['cover', 'timestamp', '#mycolumn']
  • send_news_to_device_location(默认'main'):自动发送下载新闻到设备的位置,可选'main''carda''cardb';所选位置空间不足时自动改发到剩余空间最大的位置。
  • skip_network_check(默认False):下载新闻前跳过联网检查(适用于系统联网检测不可靠的场景,如 Linux 的 NetworkManager)。

3.6 网络、内容服务器与杂项

  • public_smtp_relay_delay(默认301秒)与public_smtp_relay_host_suffixes(默认['gmail.com', 'live.com', 'gmx.com', 'outlook.com']):使用公共邮件服务器(GMX/Hotmail/Gmail 等)发送邮件前的等待秒数,改小易触发对方 SPAM 防护导致发送失败;后缀列表用于判定哪些中继主机属于公共邮件服务器。改动需重启生效。
  • content_server_thumbnail_compression_quality(默认75,范围 50–99):内容服务器缩略图压缩质量,值越大画质越好、文件越大。
  • allow_template_database_functions_in_composites(默认False):是否允许在复合列中使用book_values()book_count()等模板数据库函数(开启后在复合列中使用可能非常慢)。
  • east_asian_base_language(默认''):东亚语言音译为英语时的"基准"语言,可设'ja'(日语)、'kr'(韩语)、'vn'(越南语)、'zh'(中文);其他值回退到界面语言,列表外的基准语言按中文处理。
  • qt_webengine_uses_gpu(默认False):Qt WebEngine(阅读器/编辑器渲染引擎)是否启用 GPU。默认关闭以避免老硬件上的崩溃/黑屏,常规使用下性能差异可忽略。
  • sort_columns_at_startup之外的另一组排序相关项sony_collection_renaming_rules(默认{})、sony_collection_name_template(默认'{value}{category:| (|)}')、sony_collection_sorting_rules(默认[])——这三个用于配置 Sony 设备"自动元数据管理"模式下集合(Collections)的命名与排序规则(详见 resources/default_tweaks.py 内注释,含将多个字段合并进同一集合的完整示例)。

3.7 Tweaks 修改的正确姿势

修改 Tweaks 时应直接编辑Preferences->Advanced->Tweaks对话框中的 Python 字典/值,保存后重启 calibre。由于 resources/default_tweaks.py 是"默认值模板",直接改它会在下次更新时被覆盖;正确做法是通过图形界面修改,calibre 会把自定义值持久化到配置文件中。文件头部的注释也明确警告:"Only edit this file if you know what you are doing. If you delete this file, it will be recreated from defaults."

四、覆盖静态资源:图标、模板与脚本

4.1 机制与目录约定

calibre 的所有静态资源(图标、JavaScript、元数据封套模板、目录模板等)存放在安装目录的resources子文件夹中。常见位置:

  • Windows:C:\Program Files\Calibre2\app\resources
  • macOS:/Applications/calibre.app/Contents/Resources/resources/
  • Linux(官方二进制安装):/opt/calibre/resources

关键原则:不要直接修改安装目录中的资源文件——任何更新都会将其覆盖。正确做法是:

  1. 进入Preferences->Advanced->Miscellaneous,点击Open calibre configuration folder打开配置文件夹;
  2. 在其中创建名为resources的子文件夹;
  3. 把要覆盖的文件按相同相对结构放入(图片放resources/images,其他资源同理);
  4. 重启 calibre,它会自动优先使用你的自定义文件而非内置文件。

仓库源码证实了这一点:calibre 在启动时解析资源路径时,会优先检查配置目录下的覆盖资源(src/calibre/utils/resources.py 中的CALIBRE_DEVELOP_FROM分支及配置目录资源查找逻辑),即"配置目录覆盖 > 内置资源"。

4.2 实战示例:更换"移除书籍"图标

官方文档给出了一个完整示例:想更换"Remove books(移除书籍)"动作的图标——

  1. 在内置资源目录中确认相关文件为resources/images/remove_books.png
  2. 准备一张替代 PNG,命名为my_remove_books.png
  3. 将其保存到配置文件夹下的resources/images/remove_books.png保持与内置文件相同的相对路径与文件名);
  4. 重启 calibre 生效。

所有界面图标都位于resources/images及其子目录。放在这里的覆盖文件优先级高于任何自定义图标主题——这是覆盖个体图标时最直接的手段。

4.3 亮色/暗色主题双版本图标(calibre 6+)

从 calibre 6 开始,可为亮色与暗色模式分别提供图标:只需制作两个版本,文件名带-for-dark-theme-for-light-theme后缀即可,例如modified-for-dark-theme.pngmodified-for-light-theme.png。calibre 会根据当前主题自动选用对应版本。当前仓库中可以看到大量此类成对文件,如 imgsrc/modified-for-dark-theme.svg 与 imgsrc/modified-for-light-theme.svg(源 SVG 会被构建流程渲染为 PNG 图标)。此外,在测试自定义图标时,记得清空resources/images中的对应图片,否则覆盖文件会盖过主题图标。

4.4 优先使用图标主题

calibre 对图标主题有原生支持:Preferences->Interface->Look & Feel->Change icon theme可切换社区制作的多种图标主题。官方建议优先使用图标主题而不是逐个覆盖图标,因为主题更易于维护与共享。

五、创建并分发自己的图标主题

如果你想把自己制作的一组图标打包分享给其他 calibre 用户(通过 calibre 内置的图标主题系统),操作步骤如下:

  1. 进入Preferences->Miscellaneous->Create icon theme
  2. 选择存放图标的文件夹;
  3. 填写主题元数据(名称、作者等),点击 OK;
  4. calibre 会生成一个包含主题图标的 ZIP 文件;
  5. 将该 ZIP 上传到 Mobileread 论坛(对应主题板块),作者会将其加入 calibre 内置图标主题系统,供全球用户下载。

默认情况下,刚创建的主题也会被安装为当前主题,便于即时测试。当前仓库的 imgsrc 目录与 icons/make_ico_files.py、imgsrc/generate.py 展示了 calibre 自身如何从 SVG 源生成多尺寸图标资源——这也是社区图标主题作者可以借鉴的构建流程。

六、插件体系:扩展 calibre 功能

6.1 插件在 calibre 中的角色

calibre 的几乎所有功能都以插件形式存在:格式转换、新闻下载(此时称 recipes)、用户界面组件、设备连接、添加书籍时的文件处理等。在Preferences->Advanced->Plugins可以查看完整的内置插件列表。插件架构非常简单,官方教程见 manual/creating_plugins.rst(其中包含完整的插件编写示例与分发说明)。

6.2 插件基类体系(源码视角)

从 src/calibre/customize/init.py 可以看到,所有插件都继承自统一的Plugin基类,并按照职责划分为多种专业基类:

  • FileTypePlugin(src/calibre/customize/init.py):在添加/导入文件时处理文件内容;
  • MetadataReaderPlugin(L481)与MetadataWriterPlugin(L516):读取/写入各格式的元数据;
  • CatalogPlugin(L552):生成目录(Catalog);
  • InterfaceActionBase(L697):在用户界面中添加菜单/工具栏动作;
  • 转换与设备相关的基类定义在 src/calibre/customize/conversion.py(如输入/输出格式插件、转换器)与builtins.pyui.py中。

每个插件通过namedescriptionversionauthor等类属性声明自身信息,并可通过is_customizable()(L303)提供配置对话框。插件分发采用 ZIP 打包(见 src/calibre/customize/zipplugin.py),安装后由 calibre 加载器动态导入。

6.3 插件的获取与发布

  • 获取Preferences->Advanced->Plugins中可浏览、启用/禁用、更新所有内置与已安装插件;社区插件通过 calibre 内置的插件更新器下载。
  • 发布:编写完成插件后,将其上传到 Mobileread 的 calibre 插件论坛(对应板块),经维护者审核后会通过内置更新器向所有用户推送。

6.4 与 Recipes 的关系

"添加在线内容源"(新闻抓取)也属于插件机制的范畴,但这类插件被专门称为recipes。如何为 manual/news.rst(新闻下载)与 manual/news_recipe.rst(recipe 编写)编写新 recipe,请参见对应手册章节;本仓库 recipes 目录中收录了上千个现成 recipe 可作为参考范本。

七、定制优先级与最佳实践总结

综合全文,calibre 各定制层次的生效优先级从高到低为:

  1. 配置目录中的资源覆盖resources/...同名文件)——高于图标主题;
  2. 图标主题(通过Change icon theme切换);
  3. TweaksPreferences->Advanced->Tweaks持久化到配置);
  4. 环境变量(进程级,影响全局路径与平台行为);
  5. 内置默认值(resources/default_tweaks.py 等)。

实践建议:

  • 需要快速改行为(排序、日期格式、补全方式)→ 用Tweaks
  • 需要整体换肤或换图标 → 优先图标主题,单个图标例外才用资源覆盖
  • 需要跨平台/多实例的路径与语言控制 → 用环境变量
  • 需要全新的功能(新格式、新设备、新界面动作)→ 编写插件
  • 任何自定义内容都应放到配置文件夹下,而非安装目录,以免升级时丢失。

如需进一步深入,可继续阅读仓库中的相关文档:manual/plugins.rst(插件 API 参考)、manual/creating_plugins.rst(插件编写教程)、manual/news_recipe.rst(recipe 编写)、manual/develop.rst(开发环境,配合CALIBRE_DEVELOP_FROM使用)。

【免费下载链接】calibreThe official source code repository for the calibre ebook manager项目地址: https://gitcode.com/GitHub_Trending/ca/calibre

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 14:06:08

Dokku 进程管理完全指南:ps 插件详解与源码级原理剖析

Dokku 进程管理完全指南:ps 插件详解与源码级原理剖析 【免费下载链接】dokku A docker-powered PaaS that helps you build and manage the lifecycle of applications 项目地址: https://gitcode.com/GitHub_Trending/do/dokku 导读 本文是 Dokku&#xf…

作者头像 李华
网站建设 2026/9/11 14:06:04

MongoDB 与 Antithesis:网络模糊测试拓扑构建与测试编排实践指南

MongoDB 与 Antithesis:网络模糊测试拓扑构建与测试编排实践指南 【免费下载链接】mongo The MongoDB Database 项目地址: https://gitcode.com/GitHub_Trending/mo/mongo 导读 本文基于 MongoDB 官方仓库中的 docs/antithesis/README.md 编写,系…

作者头像 李华
网站建设 2026/9/11 14:04:28

软考中级考试科目全解析与备考指南

1. 软考中级考试概述计算机技术与软件专业技术资格(水平)考试(简称软考)是我国IT行业最具权威性的专业技术资格认证之一。作为行业内的"硬通货",软考证书不仅是专业能力的证明,更是职称评定、积分…

作者头像 李华
网站建设 2026/9/11 14:03:26

SPI通信协议详解:从基础原理到实战优化

1. SPI通信的本质:同步串行的主从对话 SPI(Serial Peripheral Interface)本质上是一种全双工、同步串行通信协议。我第一次接触SPI是在调试一个温湿度传感器时,当时被它简洁的四线制结构所吸引。与UART需要精确匹配波特率不同&…

作者头像 李华