app name and no terminal

This commit is contained in:
2025-07-23 19:00:21 +02:00
parent d9277ba6b5
commit 49599913f6
6 changed files with 43 additions and 12 deletions

3
.cargo/config.toml Normal file
View File

@@ -0,0 +1,3 @@
[target.x86_64-pc-windows-gnu]
rustflags = ["-C", "link-args=-mwindows"]

1
Cargo.lock generated
View File

@@ -2845,6 +2845,7 @@ dependencies = [
"serde_json", "serde_json",
"smol_str 0.3.2", "smol_str 0.3.2",
"tokio", "tokio",
"winapi",
] ]
[[package]] [[package]]

View File

@@ -14,8 +14,13 @@ regex = "1.11.1"
iced_aw = {version = "0.12.2", default-features = true} iced_aw = {version = "0.12.2", default-features = true}
iced_fonts = "0.2.1" iced_fonts = "0.2.1"
smol_str = "0.3.2" smol_str = "0.3.2"
winapi = {version = "0.3", features = ["wincon", "winuser"]}
[profile.release] [profile.release]
opt-level = 3 # optimisation maximale (0 à 3) opt-level = 3
lto = true # Link Time Optimization, optimise le binaire final lto = true
codegen-units = 1 # pour meilleure optimisation (par défaut c'est plus pour vitesse de compilation) codegen-units = 1
panic = 'abort' # pour binaire plus petit et rapide, abandonne unwind panic = 'abort'

View File

@@ -22,6 +22,12 @@ fn main() {
let _ = fs::remove_dir_all(target_dir.join("fonts")); let _ = fs::remove_dir_all(target_dir.join("fonts"));
fs::create_dir_all(target_dir.join("fonts")).unwrap(); fs::create_dir_all(target_dir.join("fonts")).unwrap();
copy_dir("fonts", target_dir.join("fonts")); copy_dir("fonts", target_dir.join("fonts"));
#[cfg(windows)]
{
let mut res = winres::WindowsResource::new();
res.set("SubSystem", "Windows");
res.compile().unwrap();
}
} }
fn copy_dir(src: impl AsRef<Path>, dst: impl AsRef<Path>) { fn copy_dir(src: impl AsRef<Path>, dst: impl AsRef<Path>) {

View File

@@ -15,9 +15,9 @@ use iced_aw::widget::menu::Menu;
use std::f32::consts::PI; use std::f32::consts::PI;
use crate::MyApp; use crate::Polymusic;
pub fn music_view(app: &MyApp) -> iced::Element<Message> { pub fn music_view(app: &Polymusic) -> iced::Element<Message> {
let mut i = 0; let mut i = 0;
let entries = app.all_sounds.clone(); let entries = app.all_sounds.clone();
//Create all polygon options //Create all polygon options
@@ -203,7 +203,7 @@ pub fn music_view(app: &MyApp) -> iced::Element<Message> {
.into() .into()
} }
pub fn load_file_view(app: &MyApp) -> iced::Element<Message> { pub fn load_file_view(app: &Polymusic) -> iced::Element<Message> {
Container::new( Container::new(
column![ column![
text("Polymusic").size(42), text("Polymusic").size(42),

View File

@@ -54,17 +54,19 @@ fn main() -> iced::Result {
}, },
) )
}; };
iced::application("My App", MyApp::update, MyApp::view) #[cfg(windows)]
hide_console_window();
iced::application("Polymusic", Polymusic::update, Polymusic::view)
.theme(move |_| polytheme.clone()) .theme(move |_| polytheme.clone())
.font(iced_fonts::REQUIRED_FONT_BYTES) .font(iced_fonts::REQUIRED_FONT_BYTES)
.font(FONT_BYTES) .font(FONT_BYTES)
.default_font(FONT) .default_font(FONT)
.antialiasing(true) .antialiasing(true)
.subscription(MyApp::subscription) .subscription(Polymusic::subscription)
.run_with(MyApp::new) .run_with(Polymusic::new)
} }
struct MyApp { struct Polymusic {
music: Music, music: Music,
time_last_frame: Instant, time_last_frame: Instant,
paused: bool, paused: bool,
@@ -82,7 +84,7 @@ struct MyApp {
historic: Historic, historic: Historic,
} }
impl MyApp { impl Polymusic {
fn new() -> (Self, Task<Message>) { fn new() -> (Self, Task<Message>) {
let manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default()) let manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())
.expect("Error to load AudioManager"); .expect("Error to load AudioManager");
@@ -474,3 +476,17 @@ fn load_path_saves() -> Vec<String> {
saves.sort(); saves.sort();
saves saves
} }
#[cfg(windows)]
fn hide_console_window() {
use std::ptr;
use winapi::um::wincon::GetConsoleWindow;
use winapi::um::winuser::{SW_HIDE, ShowWindow};
let window = unsafe { GetConsoleWindow() };
// https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow
if window != ptr::null_mut() {
unsafe {
ShowWindow(window, SW_HIDE);
}
}
}