#flatpak #desktop #manifest #applications #generate #cargo #package

app cargo-pak

为flatpak生成清单和桌面文件

3个版本

0.1.3 2024年6月25日
0.1.2 2024年4月3日
0.1.1 2024年4月2日

#105 in Cargo插件

Download history 115/week @ 2024-06-21 18/week @ 2024-06-28 1/week @ 2024-07-05

每月263次下载

GPL-3.0-only

19KB
312

Cargo-pak

打包flatpak文件的最简单方法

教程

依赖关系

你需要

  • Rust稳定版(以及cargo和其他工具)
  • cargo-pak
  • flatpak-builder
  • mold
rustup update
cargo install cargo-pak
apt-get install flatpak-builder mold

创建一个Rust应用程序

cargo new hello
cd hello
fn main() {
    println!("hello world!");
}

创建应用配置文件

文件必须命名为 pak.toml!!

此配置包含flatpak清单和.Desktop文件的详细信息。以下示例是一个基于X11的图形应用程序。

app_id="xyz.toastxc.Hello"
app_name= "hello"
# defined in Cargo.toml (release is performant)
profile="release"

# cargo-pack will default to package name in Cargo.toml
# bin="hello-world"

# definitions: https://docs.flatpak.org/en/latest/sandbox-permissions.html
permissions = [
    "--share=network",
    "--socket=x11",
    "--device=dri"
]

# definitions: https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
[desktopfile]
terminal= false

如果你想要使用CLI,它会更简单一些。应用程序名称和版本等信息将从Cargo.toml中提取

app_id="xyz.toastxc.Hello"

[desktopfile]
terminal= true

图标

为了让.Desktop文件中的图标正常工作,你必须在目录的根目录下留下一个.png文件,与bin名称相同。(例如hello-world.png)例如

[package]
name = "hello"
version = "0.1.0"
edition = "2021"
hello.png

即使文件不是png格式,也要重命名它。此程序可以转换文件类型和大小。

命令

这些命令的工作方式类似于docker-compose;它们依赖于目录。你必须位于你的rust项目文件的根目录中才能使此命令生效

生成

此命令根据pak.toml生成桌面文件和flatpak清单文件

cargo-pak generate

构建

基于桌面和清单文件构建flatpak应用程序

cargo-pak build

安装

(以root身份)安装flatpak

cargo-pak install

移除

从你的系统中移除flatpak

cargo-pak remove

常见问题解答

为什么我的图标不工作?

cargo-pak会自动转换和调整图标大小,只要图标符合以下条件,它应该就能正常工作

  • 正方形(正好1:1比例)
  • 在根目录中(./)支持大多数文件类型和大小

构建不正常!

如果你已修改文件,可能需要再次运行cargo-pak generate

依赖关系

~2.1–3MB
~63K SLoC