You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tauri中禁用顶部菜单栏的恢复、最小化等功能与右键关闭选项

Tauri 禁用窗口控制功能及右键关闭的解决方案

一、禁用窗口控制按钮与调整/移动功能

1. 通过配置文件禁用最小化、最大化按钮及调整大小

修改项目根目录下的 tauri.conf.json,在窗口配置中添加以下属性:

{
  "tauri": {
    "windows": [
      {
        "title": "你的应用名称",
        "width": 800,
        "height": 600,
        // 禁用最小化按钮
        "minimizable": false,
        // 禁用最大化按钮
        "maximizable": false,
        // 禁用窗口调整大小
        "resizable": false,
        // 保留系统标题栏(不需要的话可设为false)
        "decorations": true
      }
    ]
  }
}

2. 禁用窗口移动功能

窗口移动无法通过配置文件直接禁用,需通过代码调用Tauri API实现:

方式1:Rust后端实现

在 src-tauri/src/main.rs 中添加setup逻辑:

use tauri::Manager;

fn main() {
  tauri::Builder::default()
    .setup(|app| {
      // 获取主窗口(名称需与tauri.conf.json中一致)
      let main_window = app.get_window("main").expect("主窗口未找到");
      // 禁用窗口移动
      main_window.set_movable(false).expect("无法禁用窗口移动");
      Ok(())
    })
    .run(tauri::generate_context!())
    .expect("运行Tauri应用失败");
}

方式2:前端JS/TS实现

在前端代码(如src/main.js或src/App.vue)中调用:

import { getCurrentWindow } from '@tauri-apps/api/window';

async function disableWindowMove() {
  const window = getCurrentWindow();
  await window.setMovable(false);
}

// 页面加载时执行
disableWindowMove();

二、禁用顶部栏右键关闭选项

系统标题栏的右键菜单属于系统级菜单,需通过自定义Tauri菜单来移除关闭选项:

1. 完全移除右键菜单

如果不需要任何右键菜单,直接设置空菜单即可:

use tauri::Menu;

fn main() {
  // 创建空菜单
  let empty_menu = Menu::new();

  tauri::Builder::default()
    .menu(empty_menu)
    .setup(|app| {
      let main_window = app.get_window("main").expect("主窗口未找到");
      main_window.set_movable(false).expect("无法禁用窗口移动");
      Ok(())
    })
    .run(tauri::generate_context!())
    .expect("运行Tauri应用失败");
}

2. 保留部分菜单,仅移除关闭选项

如果需要保留其他菜单选项(如关于、设置等),可修改默认菜单:

use tauri::{Menu, MenuItem};

fn main() {
  // 获取默认系统菜单
  let mut default_menu = Menu::default();
  // 移除默认的关闭/退出菜单项(不同平台ID可能不同,以下为通用写法)
  default_menu.remove_item("quit");
  // Windows平台需额外移除"close"项的话,添加:
  // default_menu.remove_item("close");

  tauri::Builder::default()
    .menu(default_menu)
    .setup(|app| {
      let main_window = app.get_window("main").expect("主窗口未找到");
      main_window.set_movable(false).expect("无法禁用窗口移动");
      Ok(())
    })
    .run(tauri::generate_context!())
    .expect("运行Tauri应用失败");
}

额外提示:自定义标题栏方案

如果系统标题栏的限制无法满足需求,推荐使用自定义标题栏:

  1. 在tauri.conf.json中设置"decorations": false,隐藏系统标题栏
  2. 前端自定义标题栏组件,完全控制所有交互逻辑,彻底避免系统右键菜单和控制按钮的问题

内容的提问来源于stack exchange,提问作者Dolev Dublon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:16:05