#tauri-plugin #tauri-app #window #control #opinionated #light #macos

sys tauri-plugin-decorum

Tauri 应用程序的具有意见的窗口装饰控制

8 个版本 (1 个稳定版)

1.0.0 2024 年 8 月 3 日
0.1.6 2024 年 7 月 23 日
0.1.3 2024 年 6 月 27 日
0.1.0 2024 年 5 月 13 日

#1034GUI

Download history 176/week @ 2024-05-12 20/week @ 2024-05-19 12/week @ 2024-05-26 10/week @ 2024-06-02 7/week @ 2024-06-09 256/week @ 2024-06-16 185/week @ 2024-06-23 39/week @ 2024-06-30 9/week @ 2024-07-07 13/week @ 2024-07-14 386/week @ 2024-07-21 238/week @ 2024-07-28 83/week @ 2024-08-04 114/week @ 2024-08-11

每月 822 次下载

MIT 许可证

3MB
645

tauri-plugin-decorum

作为一名设计师,我对窗口装饰非常挑剔。这个 Tauri 插件(仅适用于 v2)对标题栏的具有意见的看法解决了我对默认标题栏的所有不满。它通过以下方式实现:

  1. 保留原生功能,如 Windows 快速排列。
  2. 通过透明度和覆盖控件更好地与您的应用程序 UI 结合。
  3. 嵌入 macOS 交通灯,它们通常与其他窗口内容对齐不当。

demo

安装和使用

要查看使用此插件的完整示例应用程序,请查看 examples/tauri-app

要安装插件

cargo add tauri-plugin-decorum

Tauri 中的使用

use tauri::Manager;

use tauri_plugin_decorum::WebviewWindowExt; // adds helper methods to WebviewWindow

fn main() {
	tauri::Builder::default()
		.plugin(tauri_plugin_decorum::init()) // initialize the decorum plugin
		.setup(|app| {
			// Create a custom titlebar for main window
			// On Windows this hides decoration and creates custom window controls
			// On macOS it needs hiddenTitle: true and titleBarStyle: overlay
			let main_window = app.get_webview_window("main").unwrap();
			main_window.create_overlay_titlebar().unwrap();

			// Some macOS-specific helpers
			#[cfg(target_os = "macos")] {
				// Set a custom inset to the traffic lights
				main_window.set_traffic_lights_inset(12.0, 16.0).unwrap();

				// Make window transparent without privateApi
				main_window.make_transparent().unwrap()

				// Set window level
				// NSWindowLevel: https://developer.apple.com/documentation/appkit/nswindowlevel
				main_window.set_window_level(25).unwrap()
			}

			Ok(())
		})
		.run(tauri::generate_context!())
		.expect("error while running tauri application");
}

您还需要在 src-tauri/capabilities/default.json 中为您的窗口设置以下权限

"core:window:allow-close",
"core:window:allow-center",
"core:window:allow-minimize",
"core:window:allow-maximize",
"core:window:allow-set-size",
"core:window:allow-set-focus",
"core:window:allow-start-dragging",
"decorum:allow-show-snap-overlay",

*可能还有处理插件权限的更好方法,但我还没有找到。如果你有,请告诉我!

使用 CSS 定制按钮

如果您想自己美化窗口控件,可以使用以下类名来做到这一点

/* all buttons */
button.decorum-tb-btn {
}
/* minimize button */
button#decorum-tb-minimize {
}
/* maximize button */
button#decorum-tb-maximize {
}
/* close button */
button#decorum-tb-close {
}
/* titlebar container */
div[data-tauri-decorum-tb] {
}

开发指南

欢迎 PR 和问题!以下是关于在此上开始开发的简要说明

  1. 请确保您已设置所有 Tauri 先决条件
  2. 克隆此仓库
  3. 使用 示例应用程序 作为测试平台,并使用 yarn tauri dev 运行

路线图

我还想添加一些功能,所有这些功能都已在 问题页面 上进行了记录。

我想要添加的所有功能都已经由我或社区中的人添加了。非常感谢您的贡献!🥳

目前我将项目主要保持在维护模式。除了架构改进和错误修复,不会有任何破坏性的API更改。Pull Request总是受欢迎的,我会尽快帮助合并它们。

但从长远来看,我希望核心团队将这些功能整合到Tauri中,并期待着使这个插件变得过时。

同时,希望您觉得它有用。祝您搭建愉快!🥂

依赖关系

~17–60MB
~881K SLoC