mirror of
https://github.com/LCE-Hub/LCE-Emerald-Launcher.git
synced 2026-09-23 08:32:51 +00:00
revert to 40324828
This commit is contained in:
@@ -1,7 +0,0 @@
|
||||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
/target/
|
||||
|
||||
# Generated by Tauri
|
||||
# will have schema files for capabilities auto-completion
|
||||
/gen/schemas
|
||||
+6
-11
@@ -1,28 +1,23 @@
|
||||
[package]
|
||||
name = "emerald-legacy-launcher"
|
||||
version = "1.0.0"
|
||||
description = "A FOSS, cross-platform launcher for Minecraft Legacy Edition"
|
||||
authors = ["Emerald Team"]
|
||||
version = "0.1.0"
|
||||
description = "A Tauri App"
|
||||
authors = ["you"]
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
name = "emerald_lib"
|
||||
name = "emerald_legacy_launcher_lib"
|
||||
crate-type = ["staticlib", "cdylib", "rlib"]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2", features = [] }
|
||||
|
||||
[dependencies]
|
||||
tauri = { version = "2", features = ["tray-icon", "image-png"] }
|
||||
tauri = { version = "2", features = [] }
|
||||
tauri-plugin-opener = "2"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
tauri-plugin-gamepad = "0.0.5"
|
||||
tauri-plugin-drpc = "*"
|
||||
reqwest = { version = "0.11", features = ["stream"] }
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
futures-util = "0.3"
|
||||
futures-util = "0.3" #
|
||||
tokio-util = { version = "0.7.18", features = ["rt"] }
|
||||
base64 = "0.21"
|
||||
rfd = "0.15"
|
||||
libc = "0.2"
|
||||
|
||||
+3
-3
@@ -1,3 +1,3 @@
|
||||
fn main() {
|
||||
tauri_build::build();
|
||||
}
|
||||
fn main() {
|
||||
tauri_build::build()
|
||||
}
|
||||
|
||||
@@ -1,26 +1,18 @@
|
||||
{
|
||||
"identifier": "default",
|
||||
"description": "Default permissions",
|
||||
"windows": [
|
||||
"main"
|
||||
],
|
||||
"permissions": [
|
||||
"core:default",
|
||||
"core:window:allow-minimize",
|
||||
"core:window:allow-maximize",
|
||||
"core:window:allow-toggle-maximize",
|
||||
"core:window:allow-close",
|
||||
"core:window:allow-set-title",
|
||||
"core:window:allow-start-dragging",
|
||||
"core:window:allow-show",
|
||||
"core:window:allow-hide",
|
||||
"core:window:allow-unminimize",
|
||||
"core:window:allow-set-focus",
|
||||
"opener:default",
|
||||
"gamepad:default",
|
||||
"drpc:allow-is-running",
|
||||
"drpc:default",
|
||||
"core:event:allow-listen",
|
||||
"core:app:default"
|
||||
]
|
||||
{
|
||||
"$schema": "../gen/schemas/desktop-schema.json",
|
||||
"identifier": "default",
|
||||
"description": "Capability for the main window",
|
||||
"windows": ["main"],
|
||||
"permissions": [
|
||||
"core:default",
|
||||
"opener:default",
|
||||
{
|
||||
"identifier": "opener:allow-open-url",
|
||||
"allow": [
|
||||
{ "url": "https://github.com/KayJannOnGit/*" },
|
||||
{ "url": "https://discord.gg/*" },
|
||||
{ "url": "https://reddit.com/*" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"default":{"identifier":"default","description":"Default permissions","local":true,"windows":["main"],"permissions":["core:default","core:window:allow-minimize","core:window:allow-maximize","core:window:allow-toggle-maximize","core:window:allow-close","core:window:allow-set-title","core:window:allow-start-dragging","core:window:allow-show","core:window:allow-hide","core:window:allow-unminimize","core:window:allow-set-focus","opener:default","gamepad:default","drpc:allow-is-running","drpc:default","core:event:allow-listen","core:app:default"]}}
|
||||
{"default":{"identifier":"default","description":"Capability for the main window","local":true,"windows":["main"],"permissions":["core:default","opener:default",{"identifier":"opener:allow-open-url","allow":[{"url":"https://github.com/KayJannOnGit/*"},{"url":"https://discord.gg/*"},{"url":"https://reddit.com/*"}]}]}}
|
||||
@@ -2312,90 +2312,6 @@
|
||||
"const": "core:window:deny-unminimize",
|
||||
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Default permissions for the plugin\n#### This default permission set includes:\n\n- `allow-spawn-thread`\n- `allow-destroy-thread`\n- `allow-set-activity`\n- `allow-is-running`",
|
||||
"type": "string",
|
||||
"const": "drpc:default",
|
||||
"markdownDescription": "Default permissions for the plugin\n#### This default permission set includes:\n\n- `allow-spawn-thread`\n- `allow-destroy-thread`\n- `allow-set-activity`\n- `allow-is-running`"
|
||||
},
|
||||
{
|
||||
"description": "Enables the clear_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-clear-activity",
|
||||
"markdownDescription": "Enables the clear_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the destroy_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-destroy-thread",
|
||||
"markdownDescription": "Enables the destroy_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the is_running command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-is-running",
|
||||
"markdownDescription": "Enables the is_running command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the set_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-set-activity",
|
||||
"markdownDescription": "Enables the set_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the spawn_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-spawn-thread",
|
||||
"markdownDescription": "Enables the spawn_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the clear_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-clear-activity",
|
||||
"markdownDescription": "Denies the clear_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the destroy_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-destroy-thread",
|
||||
"markdownDescription": "Denies the destroy_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the is_running command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-is-running",
|
||||
"markdownDescription": "Denies the is_running command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the set_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-set-activity",
|
||||
"markdownDescription": "Denies the set_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the spawn_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-spawn-thread",
|
||||
"markdownDescription": "Denies the spawn_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "This permission set configures which\ngampead features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all gamepads.\n\n\n#### This default permission set includes:\n\n- `allow-execute`",
|
||||
"type": "string",
|
||||
"const": "gamepad:default",
|
||||
"markdownDescription": "This permission set configures which\ngampead features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all gamepads.\n\n\n#### This default permission set includes:\n\n- `allow-execute`"
|
||||
},
|
||||
{
|
||||
"description": "Enables the execute command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "gamepad:allow-execute",
|
||||
"markdownDescription": "Enables the execute command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the execute command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "gamepad:deny-execute",
|
||||
"markdownDescription": "Denies the execute command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`",
|
||||
"type": "string",
|
||||
|
||||
@@ -2312,90 +2312,6 @@
|
||||
"const": "core:window:deny-unminimize",
|
||||
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Default permissions for the plugin\n#### This default permission set includes:\n\n- `allow-spawn-thread`\n- `allow-destroy-thread`\n- `allow-set-activity`\n- `allow-is-running`",
|
||||
"type": "string",
|
||||
"const": "drpc:default",
|
||||
"markdownDescription": "Default permissions for the plugin\n#### This default permission set includes:\n\n- `allow-spawn-thread`\n- `allow-destroy-thread`\n- `allow-set-activity`\n- `allow-is-running`"
|
||||
},
|
||||
{
|
||||
"description": "Enables the clear_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-clear-activity",
|
||||
"markdownDescription": "Enables the clear_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the destroy_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-destroy-thread",
|
||||
"markdownDescription": "Enables the destroy_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the is_running command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-is-running",
|
||||
"markdownDescription": "Enables the is_running command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the set_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-set-activity",
|
||||
"markdownDescription": "Enables the set_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the spawn_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-spawn-thread",
|
||||
"markdownDescription": "Enables the spawn_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the clear_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-clear-activity",
|
||||
"markdownDescription": "Denies the clear_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the destroy_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-destroy-thread",
|
||||
"markdownDescription": "Denies the destroy_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the is_running command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-is-running",
|
||||
"markdownDescription": "Denies the is_running command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the set_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-set-activity",
|
||||
"markdownDescription": "Denies the set_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the spawn_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-spawn-thread",
|
||||
"markdownDescription": "Denies the spawn_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "This permission set configures which\ngampead features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all gamepads.\n\n\n#### This default permission set includes:\n\n- `allow-execute`",
|
||||
"type": "string",
|
||||
"const": "gamepad:default",
|
||||
"markdownDescription": "This permission set configures which\ngampead features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all gamepads.\n\n\n#### This default permission set includes:\n\n- `allow-execute`"
|
||||
},
|
||||
{
|
||||
"description": "Enables the execute command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "gamepad:allow-execute",
|
||||
"markdownDescription": "Enables the execute command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the execute command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "gamepad:deny-execute",
|
||||
"markdownDescription": "Denies the execute command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`",
|
||||
"type": "string",
|
||||
|
||||
@@ -2312,90 +2312,6 @@
|
||||
"const": "core:window:deny-unminimize",
|
||||
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Default permissions for the plugin\n#### This default permission set includes:\n\n- `allow-spawn-thread`\n- `allow-destroy-thread`\n- `allow-set-activity`\n- `allow-is-running`",
|
||||
"type": "string",
|
||||
"const": "drpc:default",
|
||||
"markdownDescription": "Default permissions for the plugin\n#### This default permission set includes:\n\n- `allow-spawn-thread`\n- `allow-destroy-thread`\n- `allow-set-activity`\n- `allow-is-running`"
|
||||
},
|
||||
{
|
||||
"description": "Enables the clear_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-clear-activity",
|
||||
"markdownDescription": "Enables the clear_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the destroy_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-destroy-thread",
|
||||
"markdownDescription": "Enables the destroy_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the is_running command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-is-running",
|
||||
"markdownDescription": "Enables the is_running command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the set_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-set-activity",
|
||||
"markdownDescription": "Enables the set_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Enables the spawn_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:allow-spawn-thread",
|
||||
"markdownDescription": "Enables the spawn_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the clear_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-clear-activity",
|
||||
"markdownDescription": "Denies the clear_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the destroy_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-destroy-thread",
|
||||
"markdownDescription": "Denies the destroy_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the is_running command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-is-running",
|
||||
"markdownDescription": "Denies the is_running command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the set_activity command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-set-activity",
|
||||
"markdownDescription": "Denies the set_activity command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the spawn_thread command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "drpc:deny-spawn-thread",
|
||||
"markdownDescription": "Denies the spawn_thread command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "This permission set configures which\ngampead features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all gamepads.\n\n\n#### This default permission set includes:\n\n- `allow-execute`",
|
||||
"type": "string",
|
||||
"const": "gamepad:default",
|
||||
"markdownDescription": "This permission set configures which\ngampead features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all gamepads.\n\n\n#### This default permission set includes:\n\n- `allow-execute`"
|
||||
},
|
||||
{
|
||||
"description": "Enables the execute command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "gamepad:allow-execute",
|
||||
"markdownDescription": "Enables the execute command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "Denies the execute command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"const": "gamepad:deny-execute",
|
||||
"markdownDescription": "Denies the execute command without any pre-configured scope."
|
||||
},
|
||||
{
|
||||
"description": "This permission set allows opening `mailto:`, `tel:`, `https://` and `http://` urls using their default application\nas well as reveal file in directories using default file explorer\n#### This default permission set includes:\n\n- `allow-open-url`\n- `allow-reveal-item-in-dir`\n- `allow-default-urls`",
|
||||
"type": "string",
|
||||
Binary file not shown.
@@ -1,45 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Post-build script for macOS to fix quarantine issues (thank u apple...)
|
||||
# This script runs automatically after Tauri build on macOS
|
||||
|
||||
set -e
|
||||
|
||||
APP_NAME="Emerald Legacy Launcher"
|
||||
BUNDLE_ID="com.emerald.legacy"
|
||||
BASE_DIR="src-tauri/target"
|
||||
|
||||
echo "Running macOS post-build fixes"
|
||||
|
||||
# Find the correct target directory (handles both native and cross-compilation)
|
||||
TARGET_DIR=$(find "$BASE_DIR" -path "*/release/bundle/macos" -type d | head -n 1)
|
||||
|
||||
if [ -z "$TARGET_DIR" ]; then
|
||||
echo "❌ No macOS bundle directory found in $BASE_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Using target directory: $TARGET_DIR"
|
||||
|
||||
APP_PATH=$(find "$TARGET_DIR" -name "*.app" -type d | head -n 1)
|
||||
|
||||
if [ -z "$APP_PATH" ]; then
|
||||
echo "❌ No .app bundle found in $TARGET_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Found app: $APP_PATH"
|
||||
|
||||
echo "Removing quarantine attributes..."
|
||||
xattr -cr "$APP_PATH"
|
||||
|
||||
echo "Applying ad-hoc signature..."
|
||||
codesign --force --deep --sign - "$APP_PATH" 2>/dev/null || {
|
||||
echo "⚠️ Code signing failed, but quarantine removal should work"
|
||||
}
|
||||
|
||||
echo "Verifying app signature..."
|
||||
codesign -v "$APP_PATH" 2>/dev/null && echo "✅ App signature verified" || echo "⚠️ App signature verification failed"
|
||||
|
||||
echo "✅ macOS post-build fixes completed!"
|
||||
echo "The app should now launch without 'damaged' error on macOS ARM"
|
||||
+72
-1069
File diff suppressed because it is too large
Load Diff
+9
-90
@@ -1,90 +1,9 @@
|
||||
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
fn main() {
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
use std::env;
|
||||
use std::process::{Command, Stdio, exit};
|
||||
use std::io::{BufReader, BufRead};
|
||||
use std::thread;
|
||||
|
||||
let stage = env::var("EMERALD_LAUNCH_STAGE").unwrap_or_else(|_| "0".to_string());
|
||||
|
||||
if stage == "0" {
|
||||
let mut child = Command::new(env::current_exe().unwrap())
|
||||
.env("EMERALD_LAUNCH_STAGE", "1")
|
||||
.stdout(Stdio::piped())
|
||||
.stderr(Stdio::piped())
|
||||
.spawn()
|
||||
.expect("failed to spawn child process");
|
||||
|
||||
let stdout = child.stdout.take().expect("failed to take stdout");
|
||||
let stderr = child.stderr.take().expect("failed to take stderr");
|
||||
let child_id = child.id();
|
||||
|
||||
fn check_line(l: &str) -> bool {
|
||||
let low = l.to_lowercase();
|
||||
(low.contains("gbm") && low.contains("buffer")) ||
|
||||
(low.contains("dmabuf") && low.contains("renderer")) ||
|
||||
(low.contains("invalid argument") && low.contains("buffer")) ||
|
||||
(low.contains("wayland") && low.contains("protocol error"))
|
||||
}
|
||||
|
||||
let h1 = thread::spawn(move || {
|
||||
let reader = BufReader::new(stdout);
|
||||
for line in reader.lines() {
|
||||
if let Ok(l) = line {
|
||||
println!("{}", l);
|
||||
if check_line(&l) {
|
||||
eprintln!("!!! Emerald: Graphics error detected in stdout: {}", l);
|
||||
#[cfg(unix)]
|
||||
let _ = Command::new("kill").arg("-9").arg(child_id.to_string()).status();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
false
|
||||
});
|
||||
|
||||
let h2 = thread::spawn(move || {
|
||||
let reader = BufReader::new(stderr);
|
||||
for line in reader.lines() {
|
||||
if let Ok(l) = line {
|
||||
eprintln!("{}", l);
|
||||
if check_line(&l) {
|
||||
eprintln!("!!! Emerald: Graphics error detected in stderr: {}", l);
|
||||
#[cfg(unix)]
|
||||
let _ = Command::new("kill").arg("-9").arg(child_id.to_string()).status();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
false
|
||||
});
|
||||
|
||||
let status = child.wait().expect("failed to wait on child process");
|
||||
|
||||
let found_error = h1.join().unwrap_or(false) || h2.join().unwrap_or(false);
|
||||
|
||||
if found_error || !status.success() {
|
||||
if found_error {
|
||||
println!("Emerald: Automatic recovery triggered for graphics crash/invisible launch.");
|
||||
}
|
||||
|
||||
let mut retry_child = Command::new(env::current_exe().unwrap())
|
||||
.env("EMERALD_LAUNCH_STAGE", "2")
|
||||
.env("WEBKIT_DISABLE_DMABUF_RENDERER", "1")
|
||||
.env("WEBKIT_DISABLE_COMPOSITING_MODE", "1")
|
||||
.spawn()
|
||||
.expect("failed to spawn fallback child process");
|
||||
|
||||
let retry_status = retry_child.wait().expect("failed to wait on fallback child process");
|
||||
exit(retry_status.code().unwrap_or(1));
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
emerald_lib::run()
|
||||
}
|
||||
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
fn main() {
|
||||
#[cfg(target_os = "linux")]
|
||||
std::env::set_var("WEBKIT_DISABLE_COMPOSITING_MODE", "1");
|
||||
|
||||
emerald_legacy_launcher_lib::run()
|
||||
}
|
||||
|
||||
+44
-53
@@ -1,53 +1,44 @@
|
||||
{
|
||||
"$schema": "https://schema.tauri.app/config/2",
|
||||
"productName": "Emerald Legacy Launcher",
|
||||
"version": "1.0.0",
|
||||
"identifier": "com.emerald.legacy",
|
||||
"build": {
|
||||
"beforeDevCommand": "npm run dev",
|
||||
"devUrl": "http://localhost:1420",
|
||||
"beforeBuildCommand": "npm run build",
|
||||
"frontendDist": "../dist"
|
||||
},
|
||||
"app": {
|
||||
"windows": [
|
||||
{
|
||||
"label": "main",
|
||||
"title": "Emerald Legacy Launcher",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"minWidth": 1280,
|
||||
"minHeight": 720,
|
||||
"decorations": false,
|
||||
"transparent": true,
|
||||
"resizable": true,
|
||||
"center": true,
|
||||
"visible": false
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": "all",
|
||||
"resources": [
|
||||
"resources/DLC"
|
||||
],
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/[email protected]",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
],
|
||||
"macOS": {
|
||||
"entitlements": null,
|
||||
"exceptionDomain": "",
|
||||
"frameworks": [],
|
||||
"signingIdentity": null,
|
||||
"providerShortName": "Emerald"
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schema.tauri.app/config/2",
|
||||
"productName": "Emerald Legacy Launcher",
|
||||
"version": "0.2.0",
|
||||
"identifier": "com.emerald.legacy",
|
||||
"build": {
|
||||
"beforeDevCommand": "npm run dev",
|
||||
"devUrl": "http://localhost:1420",
|
||||
"beforeBuildCommand": "npm run build",
|
||||
"frontendDist": "../dist"
|
||||
},
|
||||
"app": {
|
||||
"windows": [
|
||||
{
|
||||
"title": "Emerald Legacy",
|
||||
"width": 1000,
|
||||
"height": 650,
|
||||
"decorations": true,
|
||||
"transparent": false,
|
||||
"titleBarStyle": "Visible",
|
||||
"devtools": true
|
||||
}
|
||||
],
|
||||
"security": {
|
||||
"csp": null
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": "all",
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/[email protected]",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
]
|
||||
},
|
||||
"plugins": {
|
||||
"shell": {
|
||||
"open": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user