add: desktop entry, metadata, app name, icons
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=SNES Patcher
|
||||
GenericName=ROM Patcher
|
||||
Comment=Apply IPS and BPS patches to Super Nintendo ROMs
|
||||
Exec=snespatcher
|
||||
Icon=com.wyattjmiller.snespatcher
|
||||
Terminal=false
|
||||
Categories=Utility;
|
||||
Keywords=SNES;ROM;IPS;BPS;Patch;
|
||||
StartupNotify=true
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop-application">
|
||||
<id>com.wyattjmiller.snespatcher</id>
|
||||
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>MPL-2.0</project_license>
|
||||
|
||||
<name>SNES Patcher</name>
|
||||
<summary>Apply IPS and BPS patches to Super Nintendo ROMs</summary>
|
||||
|
||||
<description>
|
||||
<p>
|
||||
SNES Patcher creates patched copies of Super Nintendo ROMs
|
||||
while preserving the original file.
|
||||
</p>
|
||||
</description>
|
||||
|
||||
<launchable type="desktop-id">
|
||||
com.wyattjmiller.snespatcher.desktop
|
||||
</launchable>
|
||||
|
||||
<url type="homepage">
|
||||
https://scm.wyattjmiller.com/wymiller/snespatcher
|
||||
</url>
|
||||
|
||||
<content_rating type="oars-1.1"/>
|
||||
</component>
|
||||
@@ -0,0 +1,102 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256">
|
||||
<defs>
|
||||
<linearGradient id="body" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#565b66"/>
|
||||
<stop offset="1" stop-color="#353944"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="panel" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#4b505b"/>
|
||||
<stop offset="1" stop-color="#373b45"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="gold" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#ffd36a"/>
|
||||
<stop offset="1" stop-color="#e9a834"/>
|
||||
</linearGradient>
|
||||
<filter id="shadow" x="-20%" y="-20%" width="140%" height="150%">
|
||||
<feDropShadow dx="0" dy="5" stdDeviation="5" flood-color="#000" flood-opacity=".28"/>
|
||||
</filter>
|
||||
<filter id="arrowShadow" x="-30%" y="-30%" width="160%" height="160%">
|
||||
<feDropShadow dx="0" dy="2" stdDeviation="2" flood-color="#000" flood-opacity=".35"/>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- Cartridge -->
|
||||
<g filter="url(#shadow)">
|
||||
<!-- main shell -->
|
||||
<path d="
|
||||
M55 26
|
||||
Q44 26 39 33
|
||||
Q35 39 35 49
|
||||
L35 72
|
||||
Q35 79 29 84
|
||||
L24 88
|
||||
L24 100
|
||||
L30 104
|
||||
Q35 108 35 116
|
||||
L35 190
|
||||
Q35 203 44 212
|
||||
Q51 220 63 220
|
||||
L193 220
|
||||
Q205 220 212 212
|
||||
Q221 203 221 190
|
||||
L221 116
|
||||
Q221 108 226 104
|
||||
L232 100
|
||||
L232 88
|
||||
L227 84
|
||||
Q221 79 221 72
|
||||
L221 49
|
||||
Q221 39 216 33
|
||||
Q211 26 200 26
|
||||
Z"
|
||||
fill="url(#body)" stroke="#2b2e36" stroke-width="5" stroke-linejoin="round"/>
|
||||
|
||||
<!-- top grooves -->
|
||||
<rect x="61" y="49" width="134" height="7" rx="3.5" fill="#292d35"/>
|
||||
<rect x="61" y="63" width="134" height="7" rx="3.5" fill="#292d35"/>
|
||||
|
||||
<!-- center inset -->
|
||||
<rect x="64" y="88" width="128" height="101" rx="15"
|
||||
fill="#30343d" stroke="#252932" stroke-width="5"/>
|
||||
<rect x="70" y="94" width="116" height="89" rx="11"
|
||||
fill="url(#panel)" stroke="#626874" stroke-width="2"/>
|
||||
|
||||
<!-- tiny triangle notch -->
|
||||
<path d="M118 194 L138 194 L128 205 Z" fill="#252932"/>
|
||||
|
||||
<!-- gold contacts -->
|
||||
<rect x="61" y="207" width="134" height="23" rx="4"
|
||||
fill="url(#gold)" stroke="#7e581c" stroke-width="3"/>
|
||||
<g stroke="#b77920" stroke-width="3">
|
||||
<line x1="78" y1="208" x2="78" y2="229"/>
|
||||
<line x1="95" y1="208" x2="95" y2="229"/>
|
||||
<line x1="112" y1="208" x2="112" y2="229"/>
|
||||
<line x1="129" y1="208" x2="129" y2="229"/>
|
||||
<line x1="146" y1="208" x2="146" y2="229"/>
|
||||
<line x1="163" y1="208" x2="163" y2="229"/>
|
||||
<line x1="180" y1="208" x2="180" y2="229"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
<!-- down arrow -->
|
||||
<path d="
|
||||
M119 112
|
||||
Q119 106 125 106
|
||||
L131 106
|
||||
Q137 106 137 112
|
||||
L137 144
|
||||
L151 130
|
||||
Q155 126 159 130
|
||||
L164 135
|
||||
Q168 139 164 143
|
||||
L132 175
|
||||
Q128 179 124 175
|
||||
L92 143
|
||||
Q88 139 92 135
|
||||
L97 130
|
||||
Q101 126 105 130
|
||||
L119 144
|
||||
Z"
|
||||
fill="#f2f2f2" stroke="#d7d7d7" stroke-width="2" stroke-linejoin="round"
|
||||
filter="url(#arrowShadow)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -3,7 +3,8 @@
|
||||
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
outputs =
|
||||
{ self, nixpkgs }:
|
||||
let
|
||||
supportedSystems = [
|
||||
"x86_64-linux"
|
||||
@@ -12,7 +13,16 @@
|
||||
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
|
||||
in
|
||||
{
|
||||
packages = forAllSystems (system:
|
||||
formatter = forAllSystems (
|
||||
system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
pkgs.nixfmt-rfc-style
|
||||
);
|
||||
|
||||
packages = forAllSystems (
|
||||
system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
@@ -23,7 +33,8 @@
|
||||
|
||||
src = pkgs.lib.cleanSourceWith {
|
||||
src = ./.;
|
||||
filter = path: type:
|
||||
filter =
|
||||
path: type:
|
||||
let
|
||||
name = baseNameOf path;
|
||||
in
|
||||
@@ -47,6 +58,20 @@
|
||||
gtk4
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
install -Dm444 \
|
||||
data/com.wyattjmiller.snespatcher.desktop \
|
||||
$out/share/applications/com.wyattjmiller.snespatcher.desktop
|
||||
|
||||
install -Dm444 \
|
||||
data/com.wyattjmiller.snespatcher.metainfo.xml \
|
||||
$out/share/metainfo/com.wyattjmiller.snespatcher.metainfo.xml
|
||||
|
||||
install -Dm444 \
|
||||
data/icons/hicolor/scalable/apps/com.wyattjmiller.snespatcher.svg \
|
||||
$out/share/icons/hicolor/scalable/apps/com.wyattjmiller.snespatcher.svg
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "GTK 4 application for applying IPS patches to SNES ROMs";
|
||||
homepage = "https://scm.wyattjmiller.com/wymiller/snespatcher";
|
||||
@@ -57,9 +82,11 @@
|
||||
};
|
||||
|
||||
default = snespatcher;
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
devShells = forAllSystems (system:
|
||||
devShells = forAllSystems (
|
||||
system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
@@ -72,8 +99,11 @@
|
||||
clippy
|
||||
rustc
|
||||
rustfmt
|
||||
desktop-file-utils
|
||||
appstream
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ use gtk4::{
|
||||
};
|
||||
|
||||
const APP_ID: &str = "com.wyattjmiller.snespatcher";
|
||||
const APP_NAME: &str = "SNES Patcher";
|
||||
|
||||
#[derive(Clone)]
|
||||
struct SelectionState {
|
||||
@@ -31,6 +32,7 @@ struct SelectionRow {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
glib::set_application_name(APP_NAME);
|
||||
let app = Application::new(Some(APP_ID), Default::default());
|
||||
app.connect_activate(build_ui);
|
||||
app.run();
|
||||
@@ -194,6 +196,8 @@ fn build_header_bar(
|
||||
about.connect_activate(glib::clone!(@weak window => move |_, _| {
|
||||
let dialog = AboutDialog::builder()
|
||||
.transient_for(&window)
|
||||
.program_name(APP_NAME)
|
||||
.logo_icon_name(APP_ID)
|
||||
.modal(true)
|
||||
.program_name("SNES Patcher")
|
||||
.version(env!("CARGO_PKG_VERSION"))
|
||||
|
||||
Reference in New Issue
Block a user