Skip to content

[移植] Linux 原生支持:用 Avalonia 重写 WinUI 前端,无需 Wine #69

Description

@Loong0x00

这不是 bug,是个功能性分享——给需要在 Linux 上用 JASM 的人留个记录。

JASM 前端是 WinUI 3(Windows App SDK),锁死 Windows、Wine 也跑不了。我把表现层用 Avalonia 重写了,GIMI-ModManager.Core 逻辑库原样复用,在 Linux(X11/Wayland)原生运行、不需要 Wine

不打算提 PR(独立跨平台前端、跟主线分歧较大),只在此留个记录方便 Linux 用户搜到。

分支:https://github.com/Loong0x00/JASM/tree/linux-avalonia-port

已实现(对齐原版)

  • 5 游戏(GIMI/SRMI/ZZMI/WWMI/EFMI)+ 游戏内切换
  • 角色网格:分类标签 / 元素·武器筛选 / 排序 / 置顶 / 隐藏角色 / mod 数徽章 / 搜索
  • 角色详情两栏(mod 列表 + ModPane):启用禁用 · 多选批量启用禁用删除移动 · 页内搜索
  • ModPane:封面图查看+设置 · 名字/作者/链接/描述编辑 · keyswap(.ini)编辑器 · 复制路径
  • Mod 安装器(文件夹 + .zip/.rar/.7z 压缩包 + 目标角色选择)
  • 预设(建自当前/应用/重命名/复制/删/只读)· 模组总览 · 导出全部模组 · 主题 · 中/英语言

为在 Linux 跑通给 Core 打的补丁

  • Mod.Delete:Windows 回收站 API 在 Linux 崩 → 改用 freedesktop XDG 回收站
  • Mod.MoveTo:跨挂载点移动 catch IOException 回退 copy+delete
  • ArchiveService.ExtractArchive:原来按目标文件夹扩展名选解压器 → SharpCompress 分支在 Linux 静默解压不出东西(Windows 靠捆绑 7z.exe 掩盖)
  • CharacterModList 的 FileSystemWatcher:inotify 实例上限耗尽时优雅降级,不再启动崩溃

栈:Avalonia 11.3 + FluentAvaloniaUI + CommunityToolkit.Mvvm,需 .NET 10 SDK,带 xUnit 集成测试(Linux 全绿)。
cd src/GIMI-ModManager.Avalonia && dotnet run -c Release

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions