From fcbbff26a7a89ebd82fdfa8f283b1766a2a30d86 Mon Sep 17 00:00:00 2001 From: Ludovic Marie <136255825+ludovic111@users.noreply.github.com> Date: Wed, 14 Oct 2026 19:59:44 +0200 Subject: [PATCH] Give Horizon a mark, and its icon everywhere MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The mark is an H whose crossbar is the horizon: a violet line edge to edge, the stems above it and their reflection below at a third, on whole units of a 16-unit grid so it stays sharp at 16 px. docs/media/brand holds the SVG masters (square icon, macOS tile, avatars, the mark for light and dark backgrounds), the two alternatives that were shown with it, the GitHub social preview and the Discord banner, and a README of what goes where and how to upload what only Ludovic's accounts can. `cargo run -p xtask -- icons` renders the masters (rsvg-convert) and packs, in plain Rust: packaging/icons/horizon.ico and horizon.icns, Linux's hicolor icons 16–512 and the scalable SVG, the game's run-time window icon, the avatars and the website's favicons. packaging/linux has .desktop entries for the launcher and the game. On Windows, build.rs embeds the .ico as icon resource 1 in horizon-client (and its tools) and horizon-launcher (winresource, a Windows-only build dependency); gpui loads that resource as the launcher's window icon. The game window sets the icon itself (X11, Windows) and names itself `horizon` on Wayland so the desktop entry matches. Co-Authored-By: Claude Opus 5.5 --- Cargo.lock | 44 ++++++ crates/horizon-client/Cargo.toml | 4 + crates/horizon-client/build.rs | 15 ++ crates/horizon-client/src/game.rs | 11 +- crates/horizon-client/src/window.rs | 20 +++ crates/horizon-theme/icons/horizon-64.png | Bin 0 -> 797 bytes crates/horizon-theme/src/lib.rs | 4 + docs/media/brand/README.md | 54 +++++++ docs/media/brand/avatar-kira.svg | 8 + docs/media/brand/avatar.svg | 8 + docs/media/brand/candidates/a-sun-slices.svg | 1 + docs/media/brand/candidates/b-horizon-h.svg | 10 ++ docs/media/brand/candidates/c-sunrise.svg | 1 + docs/media/brand/icon-1024.png | Bin 0 -> 17182 bytes docs/media/brand/icon-macos-1024.png | Bin 0 -> 15118 bytes docs/media/brand/icon-macos.svg | 12 ++ docs/media/brand/icon.svg | 10 ++ docs/media/brand/mark-dark.svg | 6 + docs/media/brand/mark.svg | 6 + docs/media/brand/social/banner.html | 19 +++ docs/media/brand/social/card.html | 19 +++ .../brand/social/discord-banner-960x540.png | Bin 0 -> 38387 bytes docs/media/brand/social/discord-icon-512.png | Bin 0 -> 2102 bytes docs/media/brand/social/github-avatar-500.png | Bin 0 -> 2076 bytes .../brand/social/github-social-1280x640.png | Bin 0 -> 46277 bytes docs/media/brand/social/kira-avatar-512.png | Bin 0 -> 2108 bytes launcher/Cargo.lock | 11 ++ launcher/Cargo.toml | 4 + launcher/build.rs | 15 ++ .../icons/hicolor/128x128/apps/horizon.png | Bin 0 -> 1651 bytes .../icons/hicolor/16x16/apps/horizon.png | Bin 0 -> 280 bytes .../icons/hicolor/24x24/apps/horizon.png | Bin 0 -> 390 bytes .../icons/hicolor/256x256/apps/horizon.png | Bin 0 -> 3428 bytes .../icons/hicolor/32x32/apps/horizon.png | Bin 0 -> 424 bytes .../icons/hicolor/48x48/apps/horizon.png | Bin 0 -> 616 bytes .../icons/hicolor/512x512/apps/horizon.png | Bin 0 -> 7618 bytes .../icons/hicolor/64x64/apps/horizon.png | Bin 0 -> 797 bytes .../icons/hicolor/scalable/apps/horizon.svg | 10 ++ packaging/icons/horizon.icns | Bin 0 -> 40332 bytes packaging/icons/horizon.ico | Bin 0 -> 7704 bytes packaging/linux/horizon-launcher.desktop | 10 ++ packaging/linux/horizon.desktop | 10 ++ website/public/apple-touch-icon.png | Bin 13159 -> 733 bytes website/public/favicon-32.png | Bin 1249 -> 424 bytes website/public/favicon.svg | 64 +------- xtask/src/main.rs | 146 +++++++++++++++++- 46 files changed, 461 insertions(+), 61 deletions(-) create mode 100644 crates/horizon-client/build.rs create mode 100644 crates/horizon-theme/icons/horizon-64.png create mode 100644 docs/media/brand/README.md create mode 100644 docs/media/brand/avatar-kira.svg create mode 100644 docs/media/brand/avatar.svg create mode 100644 docs/media/brand/candidates/a-sun-slices.svg create mode 100644 docs/media/brand/candidates/b-horizon-h.svg create mode 100644 docs/media/brand/candidates/c-sunrise.svg create mode 100644 docs/media/brand/icon-1024.png create mode 100644 docs/media/brand/icon-macos-1024.png create mode 100644 docs/media/brand/icon-macos.svg create mode 100644 docs/media/brand/icon.svg create mode 100644 docs/media/brand/mark-dark.svg create mode 100644 docs/media/brand/mark.svg create mode 100644 docs/media/brand/social/banner.html create mode 100644 docs/media/brand/social/card.html create mode 100644 docs/media/brand/social/discord-banner-960x540.png create mode 100644 docs/media/brand/social/discord-icon-512.png create mode 100644 docs/media/brand/social/github-avatar-500.png create mode 100644 docs/media/brand/social/github-social-1280x640.png create mode 100644 docs/media/brand/social/kira-avatar-512.png create mode 100644 launcher/build.rs create mode 100644 packaging/icons/hicolor/128x128/apps/horizon.png create mode 100644 packaging/icons/hicolor/16x16/apps/horizon.png create mode 100644 packaging/icons/hicolor/24x24/apps/horizon.png create mode 100644 packaging/icons/hicolor/256x256/apps/horizon.png create mode 100644 packaging/icons/hicolor/32x32/apps/horizon.png create mode 100644 packaging/icons/hicolor/48x48/apps/horizon.png create mode 100644 packaging/icons/hicolor/512x512/apps/horizon.png create mode 100644 packaging/icons/hicolor/64x64/apps/horizon.png create mode 100644 packaging/icons/hicolor/scalable/apps/horizon.svg create mode 100644 packaging/icons/horizon.icns create mode 100644 packaging/icons/horizon.ico create mode 100644 packaging/linux/horizon-launcher.desktop create mode 100644 packaging/linux/horizon.desktop diff --git a/Cargo.lock b/Cargo.lock index 7836e5b29..0753fc7d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -923,6 +923,7 @@ dependencies = [ "ureq", "wgpu", "winit", + "winresource", "zip", ] @@ -2347,6 +2348,15 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_spanned" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c" +dependencies = [ + "serde_core", +] + [[package]] name = "sha1" version = "0.10.7" @@ -2664,6 +2674,21 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "toml" +version = "1.1.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "1.1.1+spec-1.1.0" @@ -2694,6 +2719,12 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_writer" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770" + [[package]] name = "tracing" version = "0.1.44" @@ -3559,6 +3590,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "winresource" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bc6d36480b829272a5bdabf08e6dca8004761c1da7e35efef800540c66221b" +dependencies = [ + "toml", + "version_check", +] + [[package]] name = "wit-bindgen" version = "0.57.1" @@ -3649,6 +3690,9 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xtask" version = "0.1.0" +dependencies = [ + "horizon-theme", +] [[package]] name = "xxhash-rust" diff --git a/crates/horizon-client/Cargo.toml b/crates/horizon-client/Cargo.toml index e0b3d3189..12aeaae4a 100644 --- a/crates/horizon-client/Cargo.toml +++ b/crates/horizon-client/Cargo.toml @@ -34,6 +34,10 @@ gilrs = "0.11" # HTTPS to the Minecraft services (online-mode session join). ureq = { version = "2", default-features = false, features = ["tls"] } +[target.'cfg(windows)'.build-dependencies] +# The icon resource in the .exe (build.rs). +winresource = "0.1" + [features] # Records the call sites of mob random draws (`mob_ai_probe` traces). rng-trace = ["horizon-core/rng-trace"] diff --git a/crates/horizon-client/build.rs b/crates/horizon-client/build.rs new file mode 100644 index 000000000..d99b304f3 --- /dev/null +++ b/crates/horizon-client/build.rs @@ -0,0 +1,15 @@ +//! Embeds Horizon's icon (`packaging/icons/horizon.ico`) in the Windows executables, as icon +//! resource 1: Explorer and the task bar show it, and the window takes it as its icon. +fn main() { + let dir = std::env::var("CARGO_MANIFEST_DIR").unwrap_or_default(); + let ico = format!("{dir}/../../packaging/icons/horizon.ico"); + println!("cargo:rerun-if-changed={ico}"); + #[cfg(windows)] + if std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows") { + let mut resource = winresource::WindowsResource::new(); + resource.set_icon(&ico); + if let Err(e) = resource.compile() { + panic!("embedding {ico}: {e}"); + } + } +} diff --git a/crates/horizon-client/src/game.rs b/crates/horizon-client/src/game.rs index e3793580a..0d9c394e4 100644 --- a/crates/horizon-client/src/game.rs +++ b/crates/horizon-client/src/game.rs @@ -8199,9 +8199,16 @@ impl ApplicationHandler for Game<'_> { // The Window constructor: created fullscreen when options.txt says so. let fullscreen = self.settings.fullscreen; self.fullscreen = horizon_client::window::FullscreenState::new(fullscreen); + let attributes = Window::default_attributes() + .with_title("Horizon") + .with_window_icon(horizon_client::window::icon()); + // Wayland names the window by its app id, which the horizon.desktop entry matches. + #[cfg(target_os = "linux")] + let attributes = winit::platform::wayland::WindowAttributesExtWayland::with_name( + attributes, "horizon", "horizon", + ); let window = match event_loop.create_window( - Window::default_attributes() - .with_title("Horizon") + attributes .with_inner_size(winit::dpi::LogicalSize::new(1280.0, 720.0)) .with_fullscreen(fullscreen.then_some(winit::window::Fullscreen::Borderless(None))), ) { diff --git a/crates/horizon-client/src/window.rs b/crates/horizon-client/src/window.rs index 3dbb74a21..7c77d85c6 100644 --- a/crates/horizon-client/src/window.rs +++ b/crates/horizon-client/src/window.rs @@ -307,10 +307,30 @@ impl FullscreenState { } } +/// Horizon's icon for the window's title bar and the task bar (X11 and Windows; Wayland takes +/// it from the `horizon.desktop` entry, macOS from the app bundle). `None` if it can't be read. +pub fn icon() -> Option { + let mut decoder = png::Decoder::new(std::io::Cursor::new(horizon_theme::ICON_PNG)); + decoder.set_transformations(png::Transformations::EXPAND | png::Transformations::STRIP_16); + let mut reader = decoder.read_info().ok()?; + let mut bytes = vec![0; reader.output_buffer_size()?]; + let info = reader.next_frame(&mut bytes).ok()?; + if info.color_type != png::ColorType::Rgba { + return None; + } + bytes.truncate(info.buffer_size()); + winit::window::Icon::from_rgba(bytes, info.width, info.height).ok() +} + #[cfg(test)] mod tests { use super::*; + #[test] + fn the_window_icon_decodes() { + assert!(icon().is_some()); + } + #[test] fn fullscreen_follows_the_option_only_when_it_changes() { let mut f = FullscreenState::new(false); diff --git a/crates/horizon-theme/icons/horizon-64.png b/crates/horizon-theme/icons/horizon-64.png new file mode 100644 index 0000000000000000000000000000000000000000..1add8b2d610b44bd2b16ec3816882154c7d000e2 GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lNlJ8E_u2* zhE&XXJ9~F_aH2%}{O{d7Ksy!e^^5i}ubC$=-L}?78HAY5%(CkLSFf^MR{(;>?FV8w8Wn;UUj7rb^2f4^Dl4yx`eQ&e(Q{csm zSq9d8FZ`IxcoZhSu`QP8a`u4qL^}F@gzip^n z?yS0Zy688{xqKO$w;3!sYbsZ~p_6HY*akJO15pQNX)t6nW-nq`!@33`D7CXZy!_AU z6`>hFWd&FhbQ5}2f@a#@WoBb%fBnth$LCGz&t>cHf3jAEvPNx`xEE%~dkgl{Kb2=CUKKYdB2dXrx* zzG6z+a@UvaaTUSYW~a6||7u$Bqa-{0?xUA3R>mr)W*nNS_R5sERZ`GRyZfknz0~H_ zQ8O#tpY3Ux#C(>k/apps/horizon.png` (16–512) and `scalable/apps/horizon.svg` | Linux: copy the tree into `~/.local/share/icons/hicolor` (or `/usr/share/icons/hicolor`) | +| `packaging/linux/horizon-launcher.desktop`, `horizon.desktop` (hand-written) | Linux: `~/.local/share/applications`; Wayland matches the windows' app ids `horizon-launcher` and `horizon` | +| `packaging/icons/horizon.ico` | Windows: embedded in `horizon-client.exe`, its tools and `horizon-launcher.exe` as icon resource 1 (`build.rs` of each, Windows builds only) | +| `packaging/icons/horizon.icns` | macOS: an app bundle's `Contents/Resources/horizon.icns` (`CFBundleIconFile`) | +| `crates/horizon-theme/icons/horizon-64.png` | the game window's icon at run time (X11 and Windows title bars, `window::icon`) | +| `website/public/favicon.svg`, `favicon-32.png`, `apple-touch-icon.png` | the website | +| `icon-1024.png`, `icon-macos-1024.png` | previews, store listings | +| `social/github-avatar-500.png` | GitHub: the organisation or account avatar | +| `social/discord-icon-512.png` | Discord: the server icon | +| `social/kira-avatar-512.png` | Discord: Kira's avatar | + +The two pages in `social/` are screenshots, at their exact size, with Playwright from the +website's dev dependencies: + +```sh +cd website && npm install +node -e 'const {chromium}=require("playwright");(async()=>{const b=await chromium.launch();for(const[f,w,h,o]of[["card",1280,640,"github-social-1280x640"],["banner",960,540,"discord-banner-960x540"]]){const p=await b.newPage({viewport:{width:w,height:h}});await p.goto("file://"+require("path").resolve("../docs/media/brand/social/"+f+".html"));await p.waitForTimeout(300);await p.screenshot({path:"../docs/media/brand/social/"+o+".png"})}await b.close()})()' +``` + +## Uploading (the accounts are Ludovic's) + +- **GitHub avatar**: github.com/settings/profile (or the organisation's settings), *Edit* the + picture, upload `social/github-avatar-500.png`. +- **GitHub social preview**: the repository's *Settings › General › Social preview › Edit*, + upload `social/github-social-1280x640.png`. +- **Discord server icon and banner**: *Server Settings › Server Profile*: icon + `social/discord-icon-512.png`; banner `social/discord-banner-960x540.png` (the banner needs + boost level 2). +- **Kira's avatar**: discord.com/developers/applications › Kira › *Bot* › icon, upload + `social/kira-avatar-512.png` (or *General Information › App Icon* for the application too). diff --git a/docs/media/brand/avatar-kira.svg b/docs/media/brand/avatar-kira.svg new file mode 100644 index 000000000..cf0d34697 --- /dev/null +++ b/docs/media/brand/avatar-kira.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/media/brand/avatar.svg b/docs/media/brand/avatar.svg new file mode 100644 index 000000000..5645fb98f --- /dev/null +++ b/docs/media/brand/avatar.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/media/brand/candidates/a-sun-slices.svg b/docs/media/brand/candidates/a-sun-slices.svg new file mode 100644 index 000000000..b21591ff7 --- /dev/null +++ b/docs/media/brand/candidates/a-sun-slices.svg @@ -0,0 +1 @@ + diff --git a/docs/media/brand/candidates/b-horizon-h.svg b/docs/media/brand/candidates/b-horizon-h.svg new file mode 100644 index 000000000..94fb593fc --- /dev/null +++ b/docs/media/brand/candidates/b-horizon-h.svg @@ -0,0 +1,10 @@ + + Horizon + + + + + + + + diff --git a/docs/media/brand/candidates/c-sunrise.svg b/docs/media/brand/candidates/c-sunrise.svg new file mode 100644 index 000000000..3e53422f5 --- /dev/null +++ b/docs/media/brand/candidates/c-sunrise.svg @@ -0,0 +1 @@ + diff --git a/docs/media/brand/icon-1024.png b/docs/media/brand/icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..913c934393ab28ee331b6f11a0f95ce01d939cc4 GIT binary patch literal 17182 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 literal 0 HcmV?d00001 diff --git a/docs/media/brand/icon-macos-1024.png b/docs/media/brand/icon-macos-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..439572b963b00b7f495ab1d49c92f5aaf8e350e7 GIT binary patch literal 15118 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 oh_-Fy6`+4V|5GG@`+b!KUJitRbl? + Horizon + + + + + + + + + + diff --git a/docs/media/brand/icon.svg b/docs/media/brand/icon.svg new file mode 100644 index 000000000..94fb593fc --- /dev/null +++ b/docs/media/brand/icon.svg @@ -0,0 +1,10 @@ + + Horizon + + + + + + + + diff --git a/docs/media/brand/mark-dark.svg b/docs/media/brand/mark-dark.svg new file mode 100644 index 000000000..318b2ba06 --- /dev/null +++ b/docs/media/brand/mark-dark.svg @@ -0,0 +1,6 @@ + + Horizon + + + + diff --git a/docs/media/brand/mark.svg b/docs/media/brand/mark.svg new file mode 100644 index 000000000..3fe9e2226 --- /dev/null +++ b/docs/media/brand/mark.svg @@ -0,0 +1,6 @@ + + Horizon + + + + diff --git a/docs/media/brand/social/banner.html b/docs/media/brand/social/banner.html new file mode 100644 index 000000000..0082a6bb8 --- /dev/null +++ b/docs/media/brand/social/banner.html @@ -0,0 +1,19 @@ +
+
horizon
+
HorizonMINECRAFT: JAVA EDITION 26.3 · RUST
+

The game you know, rebuilt in Rust.

+

An unofficial client and game logic, checked against vanilla by differential harnesses.

+
diff --git a/docs/media/brand/social/card.html b/docs/media/brand/social/card.html new file mode 100644 index 000000000..2b34542b8 --- /dev/null +++ b/docs/media/brand/social/card.html @@ -0,0 +1,19 @@ +
+
horizon
+
HorizonMINECRAFT: JAVA EDITION 26.3 · RUST
+

The game you know, rebuilt in Rust.

+

An unofficial client and game logic, checked against vanilla by differential harnesses.

+
diff --git a/docs/media/brand/social/discord-banner-960x540.png b/docs/media/brand/social/discord-banner-960x540.png new file mode 100644 index 0000000000000000000000000000000000000000..8e55ab873f4dc669137b73689741406d193c983d GIT binary patch literal 38387 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
6J?i0^TW&icvyaxV<^9wym8l`cFL`JYo)>4! z*l?$ur~qXjEHv8jV~l4c5?!(~cnj7}ob=1uk_>R}^rk+%o;398U%yD++6l}Rf(HBhLMS8Ar`GDC> zg27cdGYG#<&PN{eXX1*-w=ui8 zJ>Y&9l2nGY7&VN%Q`#MbNaRV41j3OGM~Kc)$AhT5l&_x>ph+FWZ8_`0)62P6?99u% zH`KHb&dm0ijA$2TbYm^rB?$IS+@sF9x`ddXTIib*T=-xv(F+!`NzlI+u9Ix!<)Pc zkVtg6snr@;U#e_Q&($V(`d-U%wP5n{r=N)&e9(wJcpa2LgBW-aM>?6xaR8cymOU#J z3L+aWJsYZxCYE?T9~`-)j}(V4@H)6C1To|)lpx*?5l3GKJk#)oL zEJtgSUQM3G^YV)hXqQj|4bI7RQ;&Ezv|9pg&zzn+FtVp-JLI%X%Iz@2mZW0 zV&diJ(8iQXl~O5hdS>fr>2o!4SF(L!;l!vx000F%Nkl=)G1d9G_L-^>!1W0M3Lo~>fO!Qp%o5j3%b1&eQQ)@?A){O?yTA(}K!aFvJU?VUUVB@HR>)JVZp29lcodA%Po*Yus;i~>xrTT+nI3%fWe}i6 zF+awMV;6WK1ZWUTrU0i)u$4c-X>8pM*V1lp_4L-b57M}Rgr!GZG-a5vf2YI)PMkxS22-t>He z9EG5C{dif1mZ?k~CD7ol5THRU8sKCp$njP9c+q}H)3YpZA}|@z1P9Q4K*gnJ8NV+^ z6RWSOBHl%&LQpTOe&(w{2{eEN2+$xFJ$cLaIF9$6hh!>H$7Ae3e2Cg#-j{XL-ArFy zO}q}C-*Ac^-sL!UaktL!1R;1S1Za>zrpIv@FS-*d)5U-hPY||yYPG!SnMNIbH7$Gg z!gpTC^cEO%fcBF6LNe9g@X)tc0*HYC4HC$79`f~?f*e|kBTqxBMz)SXJErDd)-B_8 zrpZ)aQ(aY0ytA;-Tns8tA+)#LJyR%^L2QP*I4HD3!p*+=~X}PVu?}KO^O2$u? z3eYIUX~)bj>+UFPZ2>w7gTBhU8|#(nWr}`E74dxL`Wv$BU>^MrO900Zpg|g$3ZWUL z#|LPdLKt~Uac~l9x6J9e10#2OuBrC=HeQTIS?=NZDippx9)B8T47#MA0LlCcFA{}z5luRAM*0VFj+9FM4bL6u{}k4 z?@{yFd(Ia(#T!lDGc)py{2Dces<>V`h655z3<9bQ41uH6NC|@K#q0*#^W*o&#KiQ( z8OFxdRs8vCQFYYMqN=*2^lR~#u9v@l{kr^Ie{r~hwmw6H1|vg<&?rTG5Jc^%|6cfo zEv>Ys=ucWHFl0-Li?`p*aa(_b^YqhCfBuvJL-_mUUl0E!e&I^n`s3r@`!9GIcph+b zD0ne2EMj4xl*-yzzd>qmW8~a9GV*eL_Frz_-hKAj`xm0ti92g*%gU^(j&6ywzkA=l zC+^^yJyfxgI_@4Srex)RVR-iK&!6-!Et#{Hz5SN@r6qRb-F<7W`!5cEbLwbwf92a}+uHQp zHMnQ8SK_b0?z`^}I@>U}uaDa&x0kWO{TX$__VUS>H(&7D?ELxX(W4~0vcrG>{!QB~ zxjS*k;>C+suU@@TI&AgRqMcH^8*M*4C+vmMh=!&0_QmWQ_+NibGmGxKyWwu$alRk& zIooev&HCWH=KAc7%s2X9KKYXKg^fXO=4Kv;2|JisI;}^k(I6l$6mFVdQ&MBb@0JMC-O8@`> literal 0 HcmV?d00001 diff --git a/docs/media/brand/social/github-social-1280x640.png b/docs/media/brand/social/github-social-1280x640.png new file mode 100644 index 0000000000000000000000000000000000000000..e3748b052a98b5f0f1296acf1b7ae811229305c6 GIT binary patch literal 46277 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

FE}XV^(;*Q_6O~-7H=rk8X}Rt-j%8 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 TMf*X_F93BF9pxHDn@|4_=R(Y2 literal 0 HcmV?d00001 diff --git a/docs/media/brand/social/kira-avatar-512.png b/docs/media/brand/social/kira-avatar-512.png new file mode 100644 index 0000000000000000000000000000000000000000..dff6f0df1a8443145309659b85d11f958b85ec53 GIT binary patch literal 2108 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&t&wwUqN(AjOvC?e4^Z-=iT~ZheRGVX=jf<2R6SeF&S22Sz~I8k;4o#B8X-Y&<=qR$ zoLiTlUzfMDliHh9_3_P@FQ4aM)ZTXJZoXaZAJeL%CEx%3`}lS*D2)F-JZDxj@n_8^^A$7KUVnX2 znnB`#umF{^-<6!gO)`5Mdv{enf3;OQ+->~~yFL4N{P>ywrE6_L!H(kh2M@jwz5Mg$ ztJ9ypzYxutB0ZY#NiO={_Q@Ss_V>rP@-Ho!vzDE{TJ@zRw{U0F{P}C$*58=cd{FJI pnEGkzM(YSEm`1&cRt#LJPbjmL*yW|Y2-qB8@O1TaS?83{1ORme&G7&L literal 0 HcmV?d00001 diff --git a/launcher/Cargo.lock b/launcher/Cargo.lock index 39972745d..28735933f 100644 --- a/launcher/Cargo.lock +++ b/launcher/Cargo.lock @@ -2584,6 +2584,7 @@ dependencies = [ "serde_json", "tar", "ureq", + "winresource", "zip", ] @@ -6937,6 +6938,16 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "winresource" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bc6d36480b829272a5bdabf08e6dca8004761c1da7e35efef800540c66221b" +dependencies = [ + "toml 1.1.8+spec-1.1.0", + "version_check", +] + [[package]] name = "winsafe" version = "0.0.19" diff --git a/launcher/Cargo.toml b/launcher/Cargo.toml index 1d2e259df..9a37d254c 100644 --- a/launcher/Cargo.toml +++ b/launcher/Cargo.toml @@ -35,5 +35,9 @@ keyring = { version = "3", features = ["apple-native"] } [target.'cfg(target_os = "windows")'.dependencies] keyring = { version = "3", features = ["windows-native"] } +[target.'cfg(windows)'.build-dependencies] +# The icon resource in the .exe (build.rs). +winresource = "0.1" + [profile.release] strip = true diff --git a/launcher/build.rs b/launcher/build.rs new file mode 100644 index 000000000..bc2ea1f12 --- /dev/null +++ b/launcher/build.rs @@ -0,0 +1,15 @@ +//! Embeds Horizon's icon (`packaging/icons/horizon.ico`) in the Windows executables, as icon +//! resource 1: Explorer and the task bar show it, and the window takes it as its icon. +fn main() { + let dir = std::env::var("CARGO_MANIFEST_DIR").unwrap_or_default(); + let ico = format!("{dir}/../packaging/icons/horizon.ico"); + println!("cargo:rerun-if-changed={ico}"); + #[cfg(windows)] + if std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows") { + let mut resource = winresource::WindowsResource::new(); + resource.set_icon(&ico); + if let Err(e) = resource.compile() { + panic!("embedding {ico}: {e}"); + } + } +} diff --git a/packaging/icons/hicolor/128x128/apps/horizon.png b/packaging/icons/hicolor/128x128/apps/horizon.png new file mode 100644 index 0000000000000000000000000000000000000000..82aa505087f9619dd9fd2c21a0cf07b4c6191d3a GIT binary patch literal 1651 zcmbuAdo*JbFVmvNcN7%YosleEVWMMwpeaS zF1aNykw)%p3b`cGR4&Vl7DgAZ&UsIN_1F8J=RD8noag&J&+R5Z$5n06t z;_Sf=e*8$>4N7SHf_3=XExT{s4Lgh zqEz_+thbR}vkEDzdO3=Ebz!JbXbrLSiyYBdQv~ zS!SgA;j=0q5}@>Azb3WPi~1Hr{&|#ZQE6Lt-&->fOUX!zyMBkrrgMc|GYSNsO|`?e z@Q=#)=8JVZxmGf9-_c$?kV*v49{VU%NC&6DjsowhfTmNROMPIuf(M17l^1RXVwK5PpqVy_1^(;ivyg);i(fRhZiDTBY1Kz8@VESV=$U+@9{3V8{zc z;%bkuzF!2S*9GE3KuIK$h)*=JN}i?}1D^q>T47!;9`_8;CpF0HWriULc+RZ6?~GfR zKlz&;OSRyFYjVOKZZn1N3hJGX&v|0oK_lh(~_}r0?6p+eNCR1?=No+g&Mm)4la6~P%=r&5{qOc z=hU?!qiO6F2Eg>Nxl>e)I^CW0Zu}KmdE}IkU{_Jtc3=}rcopa3hUX94qv}vgY5Qph zvMyioW0srxNWiML^Jwb#9%E#2(qO1pdka)E8md3gUlp}e4GAePeIHhI=Lx3VqJAv4 zGWjAZTG==&bm=X+*nI$n_Eg4A$*Q2w!rYEnfX<;LiuB{kt47H&VI6<6{5t|F&*zTM zLFYAD31?cV+Yyi{Vt0>@ww6{+#n6FH1AY~U!|~MO(4dSuE(0M~j5aB~!)7soRgF*z zNjOPynoh-@Y+(olG#+V8vwDcwJPWG=dBSy-;sUyNUgiV>c4Ni&rh)ZtUuM4QKI1xqtVmdKI;Vst0J%nWj{pDw literal 0 HcmV?d00001 diff --git a/packaging/icons/hicolor/24x24/apps/horizon.png b/packaging/icons/hicolor/24x24/apps/horizon.png new file mode 100644 index 0000000000000000000000000000000000000000..10729734634614a9d04b478820452a0cc66e7ae5 GIT binary patch literal 390 zcmV;10eSw3P)o~Tb#s&+IXgDifVhyXo3jR#N~N%_*X!2JQF_LI$o~O<^6O(46Gk!o=8~eP zfXk%pf;5#vR{=i(zyG03#p(CopVFzhXM`={8@g`{2R*OdZ~z8_x7*3-nF~QOzygpO kQT!rELyOt%d7TEpCwie@yS#wI@c;k-07*qoM6N<$f@>eDp#T5? literal 0 HcmV?d00001 diff --git a/packaging/icons/hicolor/256x256/apps/horizon.png b/packaging/icons/hicolor/256x256/apps/horizon.png new file mode 100644 index 0000000000000000000000000000000000000000..5610f66051464788a1329ab905533400cca20890 GIT binary patch literal 3428 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 X5TwnnEO*fO-zETk*3P2H40rdxLd*pO literal 0 HcmV?d00001 diff --git a/packaging/icons/hicolor/32x32/apps/horizon.png b/packaging/icons/hicolor/32x32/apps/horizon.png new file mode 100644 index 0000000000000000000000000000000000000000..3603cbe0fa7130493960a71c591b582d389983e1 GIT binary patch literal 424 zcmV;Z0ayNsP)1UtGV}{obQ`6lSxLHNg|PoPnlc@93$)k z8!RUuz_TikhTwIpRc$*5;#|a%+b4qLf#{N;f2FTzuG6d)egwYZce6qsM-@HoG;0M( zBvNse$qU}!`S0`$Yw18ZvUw@O;fmn^A!Rx;V#rv4JIMr5Qf?KMa%pb8w}0T;al!hu z0V1v)y-n0ugahCU_yX1ibL(QU=-P16dg~ML1$+Tt;NS0n z*D*lfBEM%)sul&RM&ZF8Uy3$=Ou9icPMcP%+Ez3Ntny`4gj~H|e-8i*2i;0IvQ-x3 z2ncx$?;@PF8?W~O0cUqO=vJbUSYDZq_<9^sV0}r@0Z;Ihc=000033FvFrzRScw2-Yx@WifpchV>7v8p@xALV0{b-Oo8pZv1!6Bp3_k z;@K$LT5T>L2~a#Wc3sRK14BKP>zq9?cP|JU&kqZ~0~AIo(+bb%-7-l_Y*3B1H(tU) zfI@kELgV-?Fz8jSb9Qm=Y8W=w6hLG5knG3<452y)AjQ*_NpZaMZIlAT>7-)J_%=z2 zpzfCL@AH}ET0cl7$s3>JT2k=eeZ=sWhvj0OZtHcU~zAaK?Y%5s9w?}G(hMLK1-yZ3aC8b~HeQTt|aPm~6 zuj}tI7JSjn3Ts#ZxdUom@V+V8h;ou;PqODbfyJTZajZNiF5Nv*drjt0@ z-gtq?G{%lUw|}xHW;dg6>#q(AM}9B;_`b6?Ffdp{=>bo8|{? z1xuxKmrdM^2vfi)FidZ++XTQSu#D4M7}i%>HT(tsxv5tmi~vUf0000V29 literal 0 HcmV?d00001 diff --git a/packaging/icons/hicolor/512x512/apps/horizon.png b/packaging/icons/hicolor/512x512/apps/horizon.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf6b676468876407f1c55cdda0f34636d01a4e0 GIT binary patch literal 7618 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 + Horizon + + + + + + + + diff --git a/packaging/icons/horizon.icns b/packaging/icons/horizon.icns new file mode 100644 index 0000000000000000000000000000000000000000..4c691e990bb37a7dea5734ad5ee75db6c4c94324 GIT binary patch literal 40332 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 literal 0 HcmV?d00001 diff --git a/packaging/icons/horizon.ico b/packaging/icons/horizon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b580493d67639d431db4dacecd4720b9f27b7b90 GIT binary patch literal 7704 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 Nt@a1A{_B6N{{Zw)R7(H= literal 0 HcmV?d00001 diff --git a/packaging/linux/horizon-launcher.desktop b/packaging/linux/horizon-launcher.desktop new file mode 100644 index 000000000..2e0000e64 --- /dev/null +++ b/packaging/linux/horizon-launcher.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=Horizon +GenericName=Game launcher +Comment=Install, prepare and play Horizon, Minecraft: Java Edition 26.3 rewritten in Rust +Exec=horizon-launcher +Icon=horizon +Terminal=false +Categories=Game; +StartupWMClass=horizon-launcher diff --git a/packaging/linux/horizon.desktop b/packaging/linux/horizon.desktop new file mode 100644 index 000000000..1331e5c4a --- /dev/null +++ b/packaging/linux/horizon.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=Horizon +Comment=Minecraft: Java Edition 26.3, rewritten in Rust +Exec=horizon-client +Icon=horizon +Terminal=false +Categories=Game; +StartupWMClass=horizon +NoDisplay=true diff --git a/website/public/apple-touch-icon.png b/website/public/apple-touch-icon.png index 9c5938d1062dec89dd93e06fb48e666294341068..6a3b2dbcd862693ebab45972f5945001ea43bb75 100644 GIT binary patch literal 733 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 + Horizon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 6f54fa132..18544f617 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -8,12 +8,16 @@ //! //! `tokens`: writes `website/src/tokens.css`, the design tokens of `crates/horizon-theme` as CSS //! custom properties (a horizon-theme test fails when the file is out of date). +//! +//! `icons`: renders the icon masters in `docs/media/brand` (with `rsvg-convert`, from librsvg) +//! into every size the platforms and the website use, and packs `packaging/icons/horizon.ico` +//! and `horizon.icns`. `docs/media/brand/README.md` lists what goes where. use std::fs; use std::path::{Component, Path, PathBuf}; use std::process::{Command, ExitCode}; -const USAGE: &str = "usage: cargo run -p xtask -- package BINARY OUTDIR | tokens"; +const USAGE: &str = "usage: cargo run -p xtask -- package BINARY OUTDIR | tokens | icons"; /// What the release folder takes from the repository at HEAD, as `git archive` writes it. const ARCHIVED: [&str; 5] = [ @@ -34,6 +38,7 @@ fn main() -> ExitCode { let result = match args.as_slice() { [task, binary, out] if task == "package" => package(Path::new(binary), Path::new(out)), [task] if task == "tokens" => tokens(), + [task] if task == "icons" => icons(), _ => Err(USAGE.to_string()), }; match result { @@ -69,6 +74,145 @@ fn tokens() -> Result<(), String> { Ok(()) } +/// The square icon's sizes: Linux's hicolor theme, and the ones the .ico holds. +const HICOLOR: [u32; 8] = [16, 24, 32, 48, 64, 128, 256, 512]; +const ICO: [u32; 7] = [16, 24, 32, 48, 64, 128, 256]; +/// The .icns entries: type and pixel size, macOS's tile drawn on Apple's grid. +const ICNS: [(&[u8; 4], u32); 11] = [ + (b"icp4", 16), + (b"icp5", 32), + (b"icp6", 64), + (b"ic07", 128), + (b"ic08", 256), + (b"ic09", 512), + (b"ic10", 1024), + (b"ic11", 32), + (b"ic12", 64), + (b"ic13", 256), + (b"ic14", 512), +]; + +fn render(svg: &Path, size: (u32, u32)) -> Result, String> { + let output = Command::new("rsvg-convert") + .arg("-w") + .arg(size.0.to_string()) + .arg("-h") + .arg(size.1.to_string()) + .arg(svg) + .output() + .map_err(|e| format!("rsvg-convert (librsvg): {e}"))?; + if !output.status.success() { + return Err(format!( + "rsvg-convert {}: {}", + svg.display(), + String::from_utf8_lossy(&output.stderr).trim() + )); + } + Ok(output.stdout) +} + +fn write(path: &Path, data: &[u8]) -> Result<(), String> { + if let Some(dir) = path.parent() { + fs::create_dir_all(dir).map_err(|e| format!("{}: {e}", dir.display()))?; + } + fs::write(path, data).map_err(|e| format!("{}: {e}", path.display())) +} + +/// An .ico whose images are PNGs (Windows Vista and later read them at every size). +fn ico(images: &[(u32, Vec)]) -> Vec { + let mut out = vec![0, 0, 1, 0]; + out.extend((images.len() as u16).to_le_bytes()); + let mut offset = 6 + 16 * images.len(); + for (size, png) in images { + // A width or height of 256 is written as 0. + let side = if *size >= 256 { 0 } else { *size as u8 }; + out.extend([side, side, 0, 0]); + out.extend(1u16.to_le_bytes()); + out.extend(32u16.to_le_bytes()); + out.extend((png.len() as u32).to_le_bytes()); + out.extend((offset as u32).to_le_bytes()); + offset += png.len(); + } + for (_, png) in images { + out.extend(png); + } + out +} + +/// An .icns of PNG entries. +fn icns(entries: &[(&[u8; 4], Vec)]) -> Vec { + let body: usize = entries.iter().map(|(_, png)| 8 + png.len()).sum(); + let mut out = b"icns".to_vec(); + out.extend(((8 + body) as u32).to_be_bytes()); + for (kind, png) in entries { + out.extend(*kind); + out.extend(((8 + png.len()) as u32).to_be_bytes()); + out.extend(png); + } + out +} + +fn icons() -> Result<(), String> { + let repo = Path::new(env!("CARGO_MANIFEST_DIR")).join(".."); + let brand = repo.join("docs/media/brand"); + let square = brand.join("icon.svg"); + let packaging = repo.join("packaging/icons"); + for size in HICOLOR { + let png = render(&square, (size, size))?; + write( + &packaging.join(format!("hicolor/{size}x{size}/apps/horizon.png")), + &png, + )?; + } + write( + &packaging.join("hicolor/scalable/apps/horizon.svg"), + &fs::read(&square).map_err(|e| format!("{}: {e}", square.display()))?, + )?; + let images = ICO + .iter() + .map(|&s| render(&square, (s, s)).map(|png| (s, png))) + .collect::, _>>()?; + write(&packaging.join("horizon.ico"), &ico(&images))?; + let macos = brand.join("icon-macos.svg"); + let entries = ICNS + .iter() + .map(|&(kind, s)| render(&macos, (s, s)).map(|png| (kind, png))) + .collect::, _>>()?; + write(&packaging.join("horizon.icns"), &icns(&entries))?; + // The window icon the game and the launcher set at run time (X11 and Windows title bars). + write( + &repo.join("crates/horizon-theme/icons/horizon-64.png"), + &render(&square, (64, 64))?, + )?; + // Avatars and the website's icons. + let avatar = brand.join("avatar.svg"); + for (svg, size, out) in [ + ( + &avatar, + 500, + "docs/media/brand/social/github-avatar-500.png", + ), + (&avatar, 512, "docs/media/brand/social/discord-icon-512.png"), + ( + &brand.join("avatar-kira.svg"), + 512, + "docs/media/brand/social/kira-avatar-512.png", + ), + (&avatar, 180, "website/public/apple-touch-icon.png"), + (&square, 32, "website/public/favicon-32.png"), + (&square, 1024, "docs/media/brand/icon-1024.png"), + (&macos, 1024, "docs/media/brand/icon-macos-1024.png"), + ] { + write(&repo.join(out), &render(svg, (size, size))?)?; + } + write( + &repo.join("website/public/favicon.svg"), + &fs::read(&square).map_err(|e| format!("{}: {e}", square.display()))?, + )?; + println!("wrote packaging/icons, the window icon, the avatars and the website's icons"); + Ok(()) +} + fn package(binary: &Path, out: &Path) -> Result<(), String> { let top = git( Path::new(env!("CARGO_MANIFEST_DIR")),