From 86b53c9dcdc183a4ab4303cb175815f8d7fb30b3 Mon Sep 17 00:00:00 2001 From: Sam Poder Date: Thu, 29 Jun 2023 18:18:55 +0000 Subject: [PATCH 01/10] Move tests into a separate directory Also run these tests on Github Actions as part of the PR request flow. --- .github/workflows/build-rust.yml | 3 +++ tun/src/unix/apple/mod.rs | 29 ------------------------- tun/src/unix/linux/mod.rs | 29 ------------------------- tun/src/unix/mod.rs | 37 +------------------------------- tun/tests/configure.rs | 29 ++++++++++++++++++++++++- tun/tests/packets.rs | 36 +++++++++++++++++++++++++++++++ 6 files changed, 68 insertions(+), 95 deletions(-) create mode 100644 tun/tests/packets.rs diff --git a/.github/workflows/build-rust.yml b/.github/workflows/build-rust.yml index 66c389c..7955d62 100644 --- a/.github/workflows/build-rust.yml +++ b/.github/workflows/build-rust.yml @@ -60,3 +60,6 @@ jobs: - name: Build shell: bash run: cargo build --verbose --workspace --all-features --target ${{ join(matrix.targets, ' --target ') }} + - name: Post-Build Tests + shell: bash + run: cargo test diff --git a/tun/src/unix/apple/mod.rs b/tun/src/unix/apple/mod.rs index b96be9b..427f5e8 100644 --- a/tun/src/unix/apple/mod.rs +++ b/tun/src/unix/apple/mod.rs @@ -156,32 +156,3 @@ impl TunInterface { .map_err(|_| Error::new(ErrorKind::Other, "Conversion error"))? } } - -#[cfg(test)] -mod test { - use super::*; - use std::net::Ipv4Addr; - - #[test] - fn mtu() { - let interf = TunInterface::new().unwrap(); - - interf.set_mtu(500).unwrap(); - - assert_eq!(interf.mtu().unwrap(), 500); - } - - #[test] - #[throws] - fn netmask() { - let interf = TunInterface::new()?; - - let netmask = Ipv4Addr::new(255, 0, 0, 0); - let addr = Ipv4Addr::new(192, 168, 1, 1); - - interf.set_ipv4_addr(addr)?; - interf.set_netmask(netmask)?; - - assert_eq!(interf.netmask()?, netmask); - } -} diff --git a/tun/src/unix/linux/mod.rs b/tun/src/unix/linux/mod.rs index abc1ccd..7b8b05d 100644 --- a/tun/src/unix/linux/mod.rs +++ b/tun/src/unix/linux/mod.rs @@ -172,32 +172,3 @@ impl TunInterface { self.socket.send(buf)? } } - -#[cfg(test)] -mod test { - use super::TunInterface; - use std::net::Ipv4Addr; - - #[test] - fn mtu() { - let interf = TunInterface::new().unwrap(); - - interf.set_mtu(500).unwrap(); - - assert_eq!(interf.mtu().unwrap(), 500); - } - - #[test] - #[throws] - fn netmask() { - let interf = TunInterface::new()?; - - let netmask = Ipv4Addr::new(255, 0, 0, 0); - let addr = Ipv4Addr::new(192, 168, 1, 1); - - interf.set_ipv4_addr(addr)?; - interf.set_netmask(netmask)?; - - assert_eq!(interf.netmask()?, netmask); - } -} diff --git a/tun/src/unix/mod.rs b/tun/src/unix/mod.rs index af67d39..1defbbd 100644 --- a/tun/src/unix/mod.rs +++ b/tun/src/unix/mod.rs @@ -61,39 +61,4 @@ pub fn string_to_ifname(name: &str) -> [libc::c_char; libc::IFNAMSIZ] { let len = name.len().min(buf.len()); buf[..len].copy_from_slice(unsafe { &*(name.as_bytes() as *const _ as *const [libc::c_char]) }); buf -} - -#[cfg(test)] -mod test { - - use super::*; - - use std::net::Ipv4Addr; - - #[throws] - #[test] - fn tst_read() { - // This test is interactive, you need to send a packet to any server through 192.168.1.10 - // EG. `sudo route add 8.8.8.8 192.168.1.10`, - //`dig @8.8.8.8 hackclub.com` - let mut tun = TunInterface::new()?; - println!("tun name: {:?}", tun.name()?); - tun.set_ipv4_addr(Ipv4Addr::from([192, 168, 1, 10]))?; - println!("tun ip: {:?}", tun.ipv4_addr()?); - println!("Waiting for a packet..."); - let buf = &mut [0u8; 1500]; - let res = tun.recv(buf); - println!("Received!"); - assert!(res.is_ok()); - } - - #[test] - #[throws] - fn write_packets() { - let tun = TunInterface::new()?; - let mut buf = [0u8; 1500]; - buf[0] = 6 << 4; - let bytes_written = tun.send(&buf)?; - assert_eq!(bytes_written, 1504); - } -} +} \ No newline at end of file diff --git a/tun/tests/configure.rs b/tun/tests/configure.rs index 48ddd96..1d762d7 100644 --- a/tun/tests/configure.rs +++ b/tun/tests/configure.rs @@ -11,6 +11,7 @@ fn test_create() { #[test] #[throws] +#[cfg(not(target_os = "windows"))] fn test_set_get_ipv4() { let tun = TunInterface::new()?; @@ -23,7 +24,7 @@ fn test_set_get_ipv4() { #[test] #[throws] -#[cfg(target_os = "linux")] +#[cfg(not(any(target_os = "windows", target_vendor = "apple")))] fn test_set_get_ipv6() { let tun = TunInterface::new()?; @@ -33,3 +34,29 @@ fn test_set_get_ipv6() { // let result = tun.ipv6_addr()?; // assert_eq!(addr, result); } + +#[test] +#[throws] +#[cfg(not(target_os = "windows"))] +fn test_set_get_mtu() { + let interf = TunInterface::new()?; + + interf.set_mtu(500)?; + + assert_eq!(interf.mtu().unwrap(), 500); +} + +#[test] +#[throws] +#[cfg(not(target_os = "windows"))] +fn test_set_get_netmask() { + let interf = TunInterface::new()?; + + let netmask = Ipv4Addr::new(255, 0, 0, 0); + let addr = Ipv4Addr::new(192, 168, 1, 1); + + interf.set_ipv4_addr(addr)?; + interf.set_netmask(netmask)?; + + assert_eq!(interf.netmask()?, netmask); +} diff --git a/tun/tests/packets.rs b/tun/tests/packets.rs new file mode 100644 index 0000000..836ac30 --- /dev/null +++ b/tun/tests/packets.rs @@ -0,0 +1,36 @@ +use fehler::throws; +use std::io::Error; +use std::io::Write; +use std::net::Ipv4Addr; +use tun::TunInterface; + +#[throws] +#[test] +#[ignore = "requires interactivity"] +#[cfg(not(target_os = "windows"))] +fn tst_read() { + // This test is interactive, you need to send a packet to any server through 192.168.1.10 + // EG. `sudo route add 8.8.8.8 192.168.1.10`, + //`dig @8.8.8.8 hackclub.com` + let mut tun = TunInterface::new()?; + println!("tun name: {:?}", tun.name()?); + tun.set_ipv4_addr(Ipv4Addr::from([192, 168, 1, 10]))?; + println!("tun ip: {:?}", tun.ipv4_addr()?); + println!("Waiting for a packet..."); + let buf = &mut [0u8; 1500]; + let res = tun.read(buf); + println!("Received!"); + assert!(res.is_ok()); +} + +#[test] +#[throws] +#[ignore = "requires interactivity"] +#[cfg(not(target_os = "windows"))] +fn write_packets() { + let mut tun = TunInterface::new()?; + let mut buf = [0u8; 1500]; + buf[0] = 6 << 4; + let bytes_written = tun.write(&buf)?; + assert_eq!(bytes_written, 1504); +} From 290284ef4bb0b6f85b8da63078972ffdeb78c133 Mon Sep 17 00:00:00 2001 From: Conrad Kramer Date: Sat, 5 Aug 2023 08:32:54 -0700 Subject: [PATCH 02/10] Run tests on Github Actions --- .github/workflows/build-rust.yml | 15 +++++++++------ tun/tests/configure.rs | 4 +++- tun/tests/packets.rs | 6 +++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-rust.yml b/.github/workflows/build-rust.yml index 7955d62..f56e26b 100644 --- a/.github/workflows/build-rust.yml +++ b/.github/workflows/build-rust.yml @@ -17,21 +17,24 @@ jobs: platform: Linux packages: - gcc-aarch64-linux-gnu - targets: + test-targets: - x86_64-unknown-linux-gnu + targets: - aarch64-unknown-linux-gnu - os: macos-12 platform: macOS - targets: + test-targets: - x86_64-apple-darwin + targets: - aarch64-apple-darwin - aarch64-apple-ios - aarch64-apple-ios-sim - x86_64-apple-ios - os: windows-2022 platform: Windows - targets: + test-targets: - x86_64-pc-windows-msvc + targets: - aarch64-pc-windows-msvc runs-on: ${{ matrix.os }} env: @@ -59,7 +62,7 @@ jobs: targets: ${{ join(matrix.targets, ', ') }} - name: Build shell: bash - run: cargo build --verbose --workspace --all-features --target ${{ join(matrix.targets, ' --target ') }} - - name: Post-Build Tests + run: cargo build --verbose --workspace --all-features --target ${{ join(matrix.targets, ' --target ') }} --target ${{ join(matrix.test-targets, ' --target ') }} + - name: Test shell: bash - run: cargo test + run: cargo test --verbose --workspace --all-features --target ${{ join(matrix.test-targets, ' --target ') }} diff --git a/tun/tests/configure.rs b/tun/tests/configure.rs index 1d762d7..35f9726 100644 --- a/tun/tests/configure.rs +++ b/tun/tests/configure.rs @@ -1,6 +1,6 @@ use fehler::throws; use std::io::Error; -use std::net::{Ipv4Addr}; +use std::net::Ipv4Addr; use tun::TunInterface; #[test] @@ -26,6 +26,8 @@ fn test_set_get_ipv4() { #[throws] #[cfg(not(any(target_os = "windows", target_vendor = "apple")))] fn test_set_get_ipv6() { + use std::net::Ipv6Addr; + let tun = TunInterface::new()?; let addr = Ipv6Addr::new(1, 1, 1, 1, 1, 1, 1, 1); diff --git a/tun/tests/packets.rs b/tun/tests/packets.rs index 836ac30..69f9226 100644 --- a/tun/tests/packets.rs +++ b/tun/tests/packets.rs @@ -18,7 +18,7 @@ fn tst_read() { println!("tun ip: {:?}", tun.ipv4_addr()?); println!("Waiting for a packet..."); let buf = &mut [0u8; 1500]; - let res = tun.read(buf); + let res = tun.recv(buf); println!("Received!"); assert!(res.is_ok()); } @@ -28,9 +28,9 @@ fn tst_read() { #[ignore = "requires interactivity"] #[cfg(not(target_os = "windows"))] fn write_packets() { - let mut tun = TunInterface::new()?; + let tun = TunInterface::new()?; let mut buf = [0u8; 1500]; buf[0] = 6 << 4; - let bytes_written = tun.write(&buf)?; + let bytes_written = tun.send(&buf)?; assert_eq!(bytes_written, 1504); } From 7363683a819614805f4ff2b841b22a5190d961ad Mon Sep 17 00:00:00 2001 From: reesericci Date: Sat, 1 Jul 2023 12:25:56 -0500 Subject: [PATCH 03/10] Initialized burrow-gtk project --- .gitignore | 4 + burrow-gtk/Cargo.lock | 897 ++++++++++++++++++ burrow-gtk/Cargo.toml | 13 + burrow-gtk/README.md | 3 + burrow-gtk/com.hackclub.Burrow.json | 51 + .../data/com.hackclub.Burrow.appdata.xml.in | 8 + .../data/com.hackclub.Burrow.desktop.in | 8 + .../data/com.hackclub.Burrow.gschema.xml | 5 + .../scalable/apps/com.hackclub.Burrow.svg | 130 +++ .../apps/com.hackclub.Burrow-symbolic.svg | 1 + burrow-gtk/data/icons/meson.build | 13 + burrow-gtk/data/meson.build | 39 + burrow-gtk/meson.build | 20 + burrow-gtk/po/LINGUAS | 0 burrow-gtk/po/POTFILES | 4 + burrow-gtk/po/meson.build | 1 + burrow-gtk/src/application.rs | 92 ++ burrow-gtk/src/burrow-gtk.gresource.xml | 7 + burrow-gtk/src/config.rs | 4 + burrow-gtk/src/config.rs.in | 4 + burrow-gtk/src/gtk/help-overlay.blp | 24 + burrow-gtk/src/main.rs | 35 + burrow-gtk/src/meson.build | 67 ++ burrow-gtk/src/window.blp | 48 + burrow-gtk/src/window.rs | 51 + .../subprojects/blueprint-compiler.wrap | 8 + 26 files changed, 1537 insertions(+) create mode 100644 burrow-gtk/Cargo.lock create mode 100644 burrow-gtk/Cargo.toml create mode 100644 burrow-gtk/README.md create mode 100644 burrow-gtk/com.hackclub.Burrow.json create mode 100644 burrow-gtk/data/com.hackclub.Burrow.appdata.xml.in create mode 100644 burrow-gtk/data/com.hackclub.Burrow.desktop.in create mode 100644 burrow-gtk/data/com.hackclub.Burrow.gschema.xml create mode 100644 burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.Burrow.svg create mode 100644 burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.Burrow-symbolic.svg create mode 100644 burrow-gtk/data/icons/meson.build create mode 100644 burrow-gtk/data/meson.build create mode 100644 burrow-gtk/meson.build create mode 100644 burrow-gtk/po/LINGUAS create mode 100644 burrow-gtk/po/POTFILES create mode 100644 burrow-gtk/po/meson.build create mode 100644 burrow-gtk/src/application.rs create mode 100644 burrow-gtk/src/burrow-gtk.gresource.xml create mode 100644 burrow-gtk/src/config.rs create mode 100644 burrow-gtk/src/config.rs.in create mode 100644 burrow-gtk/src/gtk/help-overlay.blp create mode 100644 burrow-gtk/src/main.rs create mode 100644 burrow-gtk/src/meson.build create mode 100644 burrow-gtk/src/window.blp create mode 100644 burrow-gtk/src/window.rs create mode 100644 burrow-gtk/subprojects/blueprint-compiler.wrap diff --git a/.gitignore b/.gitignore index 102ee0d..889c0f6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,7 @@ xcuserdata # Rust target/ + +# GTK +blueprint-compiler/ +.flatpak-builder/ diff --git a/burrow-gtk/Cargo.lock b/burrow-gtk/Cargo.lock new file mode 100644 index 0000000..4e87651 --- /dev/null +++ b/burrow-gtk/Cargo.lock @@ -0,0 +1,897 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "burrow-gtk" +version = "0.1.0" +dependencies = [ + "gettext-rs", + "gtk4", + "libadwaita", +] + +[[package]] +name = "cairo-rs" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3603c4028a5e368d09b51c8b624b9a46edcd7c3778284077a6125af73c9f0a" +dependencies = [ + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "691d0c66b1fb4881be80a760cb8fe76ea97218312f9dfe2c9cc0f496ca279cb1" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-expr" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "215c0072ecc28f92eeb0eea38ba63ddfcb65c2828c46311d646f1a3ff5f9841c" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.22", +] + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "695d6bc846438c5708b07007537b9274d883373dd30858ca881d7d71b5540717" +dependencies = [ + "bitflags", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9285ec3c113c66d7d0ab5676599176f1f42f4944ca1b581852215bf5694870cb" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk4" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3abf96408a26e3eddf881a7f893a1e111767137136e347745e8ea6ed12731ff" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk-pixbuf", + "gdk4-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk4-sys" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc92aa1608c089c49393d014c38ac0390d01e4841e1fedaa75dbcef77aaed64" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gettext-rs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364" +dependencies = [ + "gettext-sys", + "locale_config", +] + +[[package]] +name = "gettext-sys" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d" +dependencies = [ + "cc", + "temp-dir", +] + +[[package]] +name = "gio" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6973e92937cf98689b6a054a9e56c657ed4ff76de925e36fc331a15f0c5d30a" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ccf87c30a12c469b6d958950f6a9c09f2be20b7773f7e70d20b867fdf2628c3" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fad45ba8d4d2cea612b432717e834f48031cd8853c8aaf43b2c79fec8d144b" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca5c79337338391f1ab8058d6698125034ce8ef31b72a442437fa6c8580de26" +dependencies = [ + "anyhow", + "heck", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "glib-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d80aa6ea7bba0baac79222204aa786a6293078c210abe69ef1336911d4bdc4f0" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "gobject-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd34c3317740a6358ec04572c1bcfd3ac0b5b6529275fae255b237b314bb8062" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "graphene-rs" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def4bb01265b59ed548b05455040d272d989b3012c42d4c1bbd39083cb9b40d9" +dependencies = [ + "glib", + "graphene-sys", + "libc", +] + +[[package]] +name = "graphene-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1856fc817e6a6675e36cea0bd9a3afe296f5d9709d1e2d3182803ac77f0ab21d" +dependencies = [ + "glib-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gsk4" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f01ef44fa7cac15e2da9978529383e6bee03e570ba5bf7036b4c10a15cc3a3c" +dependencies = [ + "bitflags", + "cairo-rs", + "gdk4", + "glib", + "graphene-rs", + "gsk4-sys", + "libc", + "pango", +] + +[[package]] +name = "gsk4-sys" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07a84fb4dcf1323d29435aa85e2f5f58bef564342bef06775ec7bd0da1f01b0" +dependencies = [ + "cairo-sys-rs", + "gdk4-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk4" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b28a32a04cd75cef14a0983f8b0c669e0fe152a0a7725accdeb594e2c764c88b" +dependencies = [ + "bitflags", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "graphene-rs", + "gsk4", + "gtk4-macros", + "gtk4-sys", + "libc", + "once_cell", + "pango", +] + +[[package]] +name = "gtk4-macros" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a4d6b61570f76d3ee542d984da443b1cd69b6105264c61afec3abed08c2500f" +dependencies = [ + "anyhow", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "gtk4-sys" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f8283f707b07e019e76c7f2934bdd4180c277e08aa93f4c0d8dd07b7a34e22f" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "graphene-sys", + "gsk4-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libadwaita" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c4efd2020a4fcedbad2c4a97de97bf6045e5dc49d61d5a5d0cfd753db60700" +dependencies = [ + "bitflags", + "futures-channel", + "gdk-pixbuf", + "gdk4", + "gio", + "glib", + "gtk4", + "libadwaita-sys", + "libc", + "once_cell", + "pango", +] + +[[package]] +name = "libadwaita-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0727b85b4fe2b1bed5ac90df6343de15cbf8118bfb96d7c3cc1512681a4b34ac" +dependencies = [ + "gdk4-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk4-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "locale_config" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" +dependencies = [ + "lazy_static", + "objc", + "objc-foundation", + "regex", + "winapi", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "pango" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35be456fc620e61f62dff7ff70fbd54dcbaf0a4b920c0f16de1107c47d921d48" +dependencies = [ + "bitflags", + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da69f9f3850b0d8990d462f8c709561975e95f689c1cdf0fecdebde78b35195" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" + +[[package]] +name = "serde" +version = "1.0.164" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" + +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" + +[[package]] +name = "temp-dir" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab" + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.22", +] + +[[package]] +name = "toml" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "unicode-ident" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" + +[[package]] +name = "version-compare" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winnow" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +dependencies = [ + "memchr", +] diff --git a/burrow-gtk/Cargo.toml b/burrow-gtk/Cargo.toml new file mode 100644 index 0000000..7243745 --- /dev/null +++ b/burrow-gtk/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "burrow-gtk" +version = "0.1.0" +edition = "2021" + +[dependencies] +gettext-rs = { version = "0.7", features = ["gettext-system"] } +gtk = { version = "0.6", package = "gtk4" } + +[dependencies.adw] +package = "libadwaita" +version = "0.3" +features = ["v1_2"] diff --git a/burrow-gtk/README.md b/burrow-gtk/README.md new file mode 100644 index 0000000..93c1d95 --- /dev/null +++ b/burrow-gtk/README.md @@ -0,0 +1,3 @@ +# burrow-gtk + +A description of this project. diff --git a/burrow-gtk/com.hackclub.Burrow.json b/burrow-gtk/com.hackclub.Burrow.json new file mode 100644 index 0000000..081096b --- /dev/null +++ b/burrow-gtk/com.hackclub.Burrow.json @@ -0,0 +1,51 @@ +{ + "app-id" : "com.hackclub.Burrow", + "runtime" : "org.gnome.Platform", + "runtime-version" : "44", + "sdk" : "org.gnome.Sdk", + "sdk-extensions" : [ + "org.freedesktop.Sdk.Extension.rust-stable" + ], + "command" : "burrow-gtk", + "finish-args" : [ + "--share=network", + "--share=ipc", + "--socket=fallback-x11", + "--device=dri", + "--socket=wayland" + ], + "build-options" : { + "append-path" : "/usr/lib/sdk/rust-stable/bin", + "build-args" : [ + "--share=network" + ], + "env" : { + "RUST_BACKTRACE" : "1", + "RUST_LOG" : "burrow-gtk=debug" + } + }, + "cleanup" : [ + "/include", + "/lib/pkgconfig", + "/man", + "/share/doc", + "/share/gtk-doc", + "/share/man", + "/share/pkgconfig", + "*.la", + "*.a" + ], + "modules" : [ + { + "name" : "burrow-gtk", + "builddir" : true, + "buildsystem" : "meson", + "sources" : [ + { + "type" : "git", + "url" : "file:///var/home/reesericci/Code" + } + ] + } + ] +} diff --git a/burrow-gtk/data/com.hackclub.Burrow.appdata.xml.in b/burrow-gtk/data/com.hackclub.Burrow.appdata.xml.in new file mode 100644 index 0000000..cbee29f --- /dev/null +++ b/burrow-gtk/data/com.hackclub.Burrow.appdata.xml.in @@ -0,0 +1,8 @@ + + + com.hackclub.Burrow.desktop + GPL-3.0-or-later + +

No description

+
+
diff --git a/burrow-gtk/data/com.hackclub.Burrow.desktop.in b/burrow-gtk/data/com.hackclub.Burrow.desktop.in new file mode 100644 index 0000000..024d14e --- /dev/null +++ b/burrow-gtk/data/com.hackclub.Burrow.desktop.in @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=burrow-gtk +Exec=burrow-gtk +Icon=com.hackclub.Burrow +Terminal=false +Type=Application +Categories=GTK;Network +StartupNotify=true diff --git a/burrow-gtk/data/com.hackclub.Burrow.gschema.xml b/burrow-gtk/data/com.hackclub.Burrow.gschema.xml new file mode 100644 index 0000000..7121dfb --- /dev/null +++ b/burrow-gtk/data/com.hackclub.Burrow.gschema.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.Burrow.svg b/burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.Burrow.svg new file mode 100644 index 0000000..a74c4df --- /dev/null +++ b/burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.Burrow.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + application-x-executable + + + + + + + + + + + + + + + + diff --git a/burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.Burrow-symbolic.svg b/burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.Burrow-symbolic.svg new file mode 100644 index 0000000..0444828 --- /dev/null +++ b/burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.Burrow-symbolic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/burrow-gtk/data/icons/meson.build b/burrow-gtk/data/icons/meson.build new file mode 100644 index 0000000..4ee9744 --- /dev/null +++ b/burrow-gtk/data/icons/meson.build @@ -0,0 +1,13 @@ +application_id = 'com.hackclub.Burrow' + +scalable_dir = join_paths('hicolor', 'scalable', 'apps') +install_data( + join_paths(scalable_dir, ('@0@.svg').format(application_id)), + install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) +) + +symbolic_dir = join_paths('hicolor', 'symbolic', 'apps') +install_data( + join_paths(symbolic_dir, ('@0@-symbolic.svg').format(application_id)), + install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) +) diff --git a/burrow-gtk/data/meson.build b/burrow-gtk/data/meson.build new file mode 100644 index 0000000..4cca4a4 --- /dev/null +++ b/burrow-gtk/data/meson.build @@ -0,0 +1,39 @@ +desktop_file = i18n.merge_file( + input: 'com.hackclub.Burrow.desktop.in', + output: 'com.hackclub.Burrow.desktop', + type: 'desktop', + po_dir: '../po', + install: true, + install_dir: join_paths(get_option('datadir'), 'applications') +) + +desktop_utils = find_program('desktop-file-validate', required: false) +if desktop_utils.found() + test('Validate desktop file', desktop_utils, args: [desktop_file]) +endif + +appstream_file = i18n.merge_file( + input: 'com.hackclub.Burrow.appdata.xml.in', + output: 'com.hackclub.Burrow.appdata.xml', + po_dir: '../po', + install: true, + install_dir: join_paths(get_option('datadir'), 'appdata') +) + +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test('Validate appstream file', appstream_util, args: ['validate', appstream_file]) +endif + +install_data('com.hackclub.Burrow.gschema.xml', + install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') +) + +compile_schemas = find_program('glib-compile-schemas', required: false) +if compile_schemas.found() + test('Validate schema file', + compile_schemas, + args: ['--strict', '--dry-run', meson.current_source_dir()]) +endif + +subdir('icons') diff --git a/burrow-gtk/meson.build b/burrow-gtk/meson.build new file mode 100644 index 0000000..3e9a026 --- /dev/null +++ b/burrow-gtk/meson.build @@ -0,0 +1,20 @@ +project('burrow-gtk', 'rust', + version: '0.1.0', + meson_version: '>= 0.62.0', + default_options: [ 'warning_level=2', 'werror=false', ], +) + +i18n = import('i18n') +gnome = import('gnome') + + + +subdir('data') +subdir('src') +subdir('po') + +gnome.post_install( + glib_compile_schemas: true, + gtk_update_icon_cache: true, + update_desktop_database: true, +) diff --git a/burrow-gtk/po/LINGUAS b/burrow-gtk/po/LINGUAS new file mode 100644 index 0000000..e69de29 diff --git a/burrow-gtk/po/POTFILES b/burrow-gtk/po/POTFILES new file mode 100644 index 0000000..d1acb5a --- /dev/null +++ b/burrow-gtk/po/POTFILES @@ -0,0 +1,4 @@ +data/com.hackclub.Burrow.desktop.in +data/com.hackclub.Burrow.appdata.xml.in +data/com.hackclub.Burrow.gschema.xml +src/window.ui diff --git a/burrow-gtk/po/meson.build b/burrow-gtk/po/meson.build new file mode 100644 index 0000000..4b239a8 --- /dev/null +++ b/burrow-gtk/po/meson.build @@ -0,0 +1 @@ +i18n.gettext('burrow-gtk', preset: 'glib') diff --git a/burrow-gtk/src/application.rs b/burrow-gtk/src/application.rs new file mode 100644 index 0000000..f511bae --- /dev/null +++ b/burrow-gtk/src/application.rs @@ -0,0 +1,92 @@ +use gtk::prelude::*; +use adw::subclass::prelude::*; +use gtk::{gio, glib}; + +use crate::config::VERSION; +use crate::BurrowGtkWindow; + +mod imp { + use super::*; + + #[derive(Debug, Default)] + pub struct BurrowGtkApplication {} + + #[glib::object_subclass] + impl ObjectSubclass for BurrowGtkApplication { + const NAME: &'static str = "BurrowGtkApplication"; + type Type = super::BurrowGtkApplication; + type ParentType = adw::Application; + } + + impl ObjectImpl for BurrowGtkApplication { + fn constructed(&self) { + self.parent_constructed(); + let obj = self.obj(); + obj.setup_gactions(); + obj.set_accels_for_action("app.quit", &["q"]); + } + } + + impl ApplicationImpl for BurrowGtkApplication { + // We connect to the activate callback to create a window when the application + // has been launched. Additionally, this callback notifies us when the user + // tries to launch a "second instance" of the application. When they try + // to do that, we'll just present any existing window. + fn activate(&self) { + let application = self.obj(); + // Get the current window or create one if necessary + let window = if let Some(window) = application.active_window() { + window + } else { + let window = BurrowGtkWindow::new(&*application); + window.upcast() + }; + + // Ask the window manager/compositor to present the window + window.present(); + } + } + + impl GtkApplicationImpl for BurrowGtkApplication {} + impl AdwApplicationImpl for BurrowGtkApplication {} +} + +glib::wrapper! { + pub struct BurrowGtkApplication(ObjectSubclass) + @extends gio::Application, gtk::Application, adw::Application, + @implements gio::ActionGroup, gio::ActionMap; +} + +impl BurrowGtkApplication { + pub fn new(application_id: &str, flags: &gio::ApplicationFlags) -> Self { + glib::Object::builder() + .property("application-id", application_id) + .property("flags", flags) + .build() + } + + fn setup_gactions(&self) { + let quit_action = gio::ActionEntry::builder("quit") + .activate(move |app: &Self, _, _| app.quit()) + .build(); + let about_action = gio::ActionEntry::builder("about") + .activate(move |app: &Self, _, _| app.show_about()) + .build(); + self.add_action_entries([quit_action, about_action]); + } + + fn show_about(&self) { + let window = self.active_window().unwrap(); + let about = adw::AboutWindow::builder() + .transient_for(&window) + .application_name("burrow-gtk") + .application_icon("com.hackclub.Burrow") + .developer_name("Hack Club") + .version(VERSION) + .developers(vec!["Hack Club"]) + .copyright("© 2023 The Hack Foundation") + .build(); + + about.present(); + } +} diff --git a/burrow-gtk/src/burrow-gtk.gresource.xml b/burrow-gtk/src/burrow-gtk.gresource.xml new file mode 100644 index 0000000..23a5a82 --- /dev/null +++ b/burrow-gtk/src/burrow-gtk.gresource.xml @@ -0,0 +1,7 @@ + + + + window.ui + gtk/help-overlay.ui + + diff --git a/burrow-gtk/src/config.rs b/burrow-gtk/src/config.rs new file mode 100644 index 0000000..73ce81e --- /dev/null +++ b/burrow-gtk/src/config.rs @@ -0,0 +1,4 @@ +pub static VERSION: &str = "0.1.0"; +pub static GETTEXT_PACKAGE: &str = "burrow-gtk"; +pub static LOCALEDIR: &str = "/app/share/locale"; +pub static PKGDATADIR: &str = "/app/share/burrow-gtk"; diff --git a/burrow-gtk/src/config.rs.in b/burrow-gtk/src/config.rs.in new file mode 100644 index 0000000..1a24858 --- /dev/null +++ b/burrow-gtk/src/config.rs.in @@ -0,0 +1,4 @@ +pub static VERSION: &str = @VERSION@; +pub static GETTEXT_PACKAGE: &str = @GETTEXT_PACKAGE@; +pub static LOCALEDIR: &str = @LOCALEDIR@; +pub static PKGDATADIR: &str = @PKGDATADIR@; diff --git a/burrow-gtk/src/gtk/help-overlay.blp b/burrow-gtk/src/gtk/help-overlay.blp new file mode 100644 index 0000000..90ee78f --- /dev/null +++ b/burrow-gtk/src/gtk/help-overlay.blp @@ -0,0 +1,24 @@ +using Gtk 4.0; + +ShortcutsWindow help_overlay { + modal: true; + + ShortcutsSection { + section-name: "shortcuts"; + max-height: 10; + + ShortcutsGroup { + title: C_("shortcut window", "General"); + + ShortcutsShortcut { + title: C_("shortcut window", "Show Shortcuts"); + action-name: "win.show-help-overlay"; + } + + ShortcutsShortcut { + title: C_("shortcut window", "Quit"); + action-name: "app.quit"; + } + } + } +} diff --git a/burrow-gtk/src/main.rs b/burrow-gtk/src/main.rs new file mode 100644 index 0000000..6ccd23b --- /dev/null +++ b/burrow-gtk/src/main.rs @@ -0,0 +1,35 @@ +mod application; +mod config; +mod window; + +use self::application::BurrowGtkApplication; +use self::window::BurrowGtkWindow; + +use config::{GETTEXT_PACKAGE, LOCALEDIR, PKGDATADIR}; +use gettextrs::{bind_textdomain_codeset, bindtextdomain, textdomain}; +use gtk::{gio, glib}; +use gtk::prelude::*; + +fn main() -> glib::ExitCode { + // Set up gettext translations + bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR).expect("Unable to bind the text domain"); + bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8") + .expect("Unable to set the text domain encoding"); + textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain"); + + // Load resources + let resources = gio::Resource::load(PKGDATADIR.to_owned() + "/burrow-gtk.gresource") + .expect("Could not load resources"); + gio::resources_register(&resources); + + // Create a new GtkApplication. The application manages our main loop, + // application windows, integration with the window manager/compositor, and + // desktop features such as file opening and single-instance applications. + let app = BurrowGtkApplication::new("com.hackclub.Burrow", &gio::ApplicationFlags::empty()); + + // Run the application. This function will block until the application + // exits. Upon return, we have our exit code to return to the shell. (This + // is the code you see when you do `echo $?` after running a command in a + // terminal. + app.run() +} diff --git a/burrow-gtk/src/meson.build b/burrow-gtk/src/meson.build new file mode 100644 index 0000000..15ec34b --- /dev/null +++ b/burrow-gtk/src/meson.build @@ -0,0 +1,67 @@ +pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) +gnome = import('gnome') + + +blueprints = custom_target('blueprints', + input: files( + 'gtk/help-overlay.blp', + 'window.blp', + ), + output: '.', + command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], +) + +gnome.compile_resources('burrow-gtk', + 'burrow-gtk.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, + dependencies: blueprints +) + +conf = configuration_data() +conf.set_quoted('VERSION', meson.project_version()) +conf.set_quoted('GETTEXT_PACKAGE', 'burrow-gtk') +conf.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) +conf.set_quoted('PKGDATADIR', pkgdatadir) + +configure_file( + input: 'config.rs.in', + output: 'config.rs', + configuration: conf +) + +# Copy the config.rs output to the source directory. +run_command( + 'cp', + join_paths(meson.project_build_root(), 'src', 'config.rs'), + join_paths(meson.project_source_root(), 'src', 'config.rs'), + check: true +) + +cargo_bin = find_program('cargo') +cargo_opt = [ '--manifest-path', meson.project_source_root() / 'Cargo.toml' ] +cargo_opt += [ '--target-dir', meson.project_build_root() / 'src' ] +cargo_env = [ 'CARGO_HOME=' + meson.project_build_root() / 'cargo-home' ] + +if get_option('buildtype') == 'release' + cargo_options += [ '--release' ] + rust_target = 'release' +else + rust_target = 'debug' +endif + +cargo_build = custom_target( + 'cargo-build', + build_by_default: true, + build_always_stale: true, + output: meson.project_name(), + console: true, + install: true, + install_dir: get_option('bindir'), + command: [ + 'env', cargo_env, + cargo_bin, 'build', + cargo_opt, '&&', 'cp', 'src' / rust_target / meson.project_name(), '@OUTPUT@', + ] +) diff --git a/burrow-gtk/src/window.blp b/burrow-gtk/src/window.blp new file mode 100644 index 0000000..6f3534a --- /dev/null +++ b/burrow-gtk/src/window.blp @@ -0,0 +1,48 @@ +using Gtk 4.0; +using Adw 1; + +template BurrowGtkWindow : Adw.ApplicationWindow { + default-width: 600; + default-height: 400; + + Box { + orientation: vertical; + + HeaderBar header_bar { + [end] + MenuButton { + icon-name: "open-menu-symbolic"; + menu-model: primary_menu; + } + } + + Label label { + label: "Burrow GNOME"; + + vexpand: true; + + styles [ + "title-1", + ] + } + } +} + +menu primary_menu { + section { + item { + label: _("_Preferences"); + action: "app.preferences"; + } + + item { + label: _("_Keyboard Shortcuts"); + action: "win.show-help-overlay"; + } + + item { + label: _("_About Burrow-gtk"); + action: "app.about"; + } + } +} diff --git a/burrow-gtk/src/window.rs b/burrow-gtk/src/window.rs new file mode 100644 index 0000000..4a51ef0 --- /dev/null +++ b/burrow-gtk/src/window.rs @@ -0,0 +1,51 @@ +use gtk::prelude::*; +use adw::subclass::prelude::*; +use gtk::{gio, glib}; + +mod imp { + use super::*; + + #[derive(Debug, Default, gtk::CompositeTemplate)] + #[template(resource = "/com/hackclub/Burrow/window.ui")] + pub struct BurrowGtkWindow { + // Template widgets + #[template_child] + pub header_bar: TemplateChild, + #[template_child] + pub label: TemplateChild, + } + + #[glib::object_subclass] + impl ObjectSubclass for BurrowGtkWindow { + const NAME: &'static str = "BurrowGtkWindow"; + type Type = super::BurrowGtkWindow; + type ParentType = adw::ApplicationWindow; + + fn class_init(klass: &mut Self::Class) { + klass.bind_template(); + } + + fn instance_init(obj: &glib::subclass::InitializingObject) { + obj.init_template(); + } + } + + impl ObjectImpl for BurrowGtkWindow {} + impl WidgetImpl for BurrowGtkWindow {} + impl WindowImpl for BurrowGtkWindow {} + impl ApplicationWindowImpl for BurrowGtkWindow {} + impl AdwApplicationWindowImpl for BurrowGtkWindow {} +} + +glib::wrapper! { + pub struct BurrowGtkWindow(ObjectSubclass) + @extends gtk::Widget, gtk::Window, gtk::ApplicationWindow, adw::ApplicationWindow, @implements gio::ActionGroup, gio::ActionMap; +} + +impl BurrowGtkWindow { + pub fn new>(application: &P) -> Self { + glib::Object::builder() + .property("application", application) + .build() + } +} diff --git a/burrow-gtk/subprojects/blueprint-compiler.wrap b/burrow-gtk/subprojects/blueprint-compiler.wrap new file mode 100644 index 0000000..6e6ee32 --- /dev/null +++ b/burrow-gtk/subprojects/blueprint-compiler.wrap @@ -0,0 +1,8 @@ +[wrap-git] +directory = blueprint-compiler +url = https://gitlab.gnome.org/jwestman/blueprint-compiler.git +revision = main +depth = 1 + +[provide] +program_names = blueprint-compiler \ No newline at end of file From 9ad50b149650428e5cf6f8e0628a639aa39f8fd1 Mon Sep 17 00:00:00 2001 From: reesericci Date: Sat, 1 Jul 2023 12:48:55 -0500 Subject: [PATCH 04/10] Update naming & rename com.hackclub.Burrow to com.hackclub.burrow --- burrow-gtk/README.md | 2 +- .../{com.hackclub.Burrow.json => com.hackclub.burrow.json} | 2 +- burrow-gtk/src/application.rs | 4 ++-- burrow-gtk/src/burrow-gtk.gresource.xml | 3 ++- burrow-gtk/src/main.rs | 2 +- burrow-gtk/src/window.blp | 2 +- burrow-gtk/src/window.rs | 2 +- 7 files changed, 9 insertions(+), 8 deletions(-) rename burrow-gtk/{com.hackclub.Burrow.json => com.hackclub.burrow.json} (96%) diff --git a/burrow-gtk/README.md b/burrow-gtk/README.md index 93c1d95..130bae1 100644 --- a/burrow-gtk/README.md +++ b/burrow-gtk/README.md @@ -1,3 +1,3 @@ -# burrow-gtk +# Burrow (GTK) A description of this project. diff --git a/burrow-gtk/com.hackclub.Burrow.json b/burrow-gtk/com.hackclub.burrow.json similarity index 96% rename from burrow-gtk/com.hackclub.Burrow.json rename to burrow-gtk/com.hackclub.burrow.json index 081096b..900d378 100644 --- a/burrow-gtk/com.hackclub.Burrow.json +++ b/burrow-gtk/com.hackclub.burrow.json @@ -1,5 +1,5 @@ { - "app-id" : "com.hackclub.Burrow", + "app-id" : "com.hackclub.burrow", "runtime" : "org.gnome.Platform", "runtime-version" : "44", "sdk" : "org.gnome.Sdk", diff --git a/burrow-gtk/src/application.rs b/burrow-gtk/src/application.rs index f511bae..6db828c 100644 --- a/burrow-gtk/src/application.rs +++ b/burrow-gtk/src/application.rs @@ -79,8 +79,8 @@ impl BurrowGtkApplication { let window = self.active_window().unwrap(); let about = adw::AboutWindow::builder() .transient_for(&window) - .application_name("burrow-gtk") - .application_icon("com.hackclub.Burrow") + .application_name("Burrow") + .application_icon("com.hackclub.burrow") .developer_name("Hack Club") .version(VERSION) .developers(vec!["Hack Club"]) diff --git a/burrow-gtk/src/burrow-gtk.gresource.xml b/burrow-gtk/src/burrow-gtk.gresource.xml index 23a5a82..7a7357e 100644 --- a/burrow-gtk/src/burrow-gtk.gresource.xml +++ b/burrow-gtk/src/burrow-gtk.gresource.xml @@ -1,7 +1,8 @@ - + window.ui gtk/help-overlay.ui + diff --git a/burrow-gtk/src/main.rs b/burrow-gtk/src/main.rs index 6ccd23b..85acd15 100644 --- a/burrow-gtk/src/main.rs +++ b/burrow-gtk/src/main.rs @@ -25,7 +25,7 @@ fn main() -> glib::ExitCode { // Create a new GtkApplication. The application manages our main loop, // application windows, integration with the window manager/compositor, and // desktop features such as file opening and single-instance applications. - let app = BurrowGtkApplication::new("com.hackclub.Burrow", &gio::ApplicationFlags::empty()); + let app = BurrowGtkApplication::new("com.hackclub.burrow", &gio::ApplicationFlags::empty()); // Run the application. This function will block until the application // exits. Upon return, we have our exit code to return to the shell. (This diff --git a/burrow-gtk/src/window.blp b/burrow-gtk/src/window.blp index 6f3534a..74f662d 100644 --- a/burrow-gtk/src/window.blp +++ b/burrow-gtk/src/window.blp @@ -41,7 +41,7 @@ menu primary_menu { } item { - label: _("_About Burrow-gtk"); + label: _("_About Burrow"); action: "app.about"; } } diff --git a/burrow-gtk/src/window.rs b/burrow-gtk/src/window.rs index 4a51ef0..81037ab 100644 --- a/burrow-gtk/src/window.rs +++ b/burrow-gtk/src/window.rs @@ -6,7 +6,7 @@ mod imp { use super::*; #[derive(Debug, Default, gtk::CompositeTemplate)] - #[template(resource = "/com/hackclub/Burrow/window.ui")] + #[template(resource = "/com/hackclub/burrow/window.ui")] pub struct BurrowGtkWindow { // Template widgets #[template_child] From 082db9c162537c9f12171aafa4321ad07ded659f Mon Sep 17 00:00:00 2001 From: reesericci Date: Sat, 1 Jul 2023 23:56:53 -0500 Subject: [PATCH 05/10] Updated manifest & Cargo.toml(s) --- Cargo.toml | 1 + burrow-gtk/com.hackclub.burrow.json | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index fcb83f5..7a17276 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,2 +1,3 @@ [workspace] members = ["burrow", "tun"] +exclude = ["burrow-gtk"] diff --git a/burrow-gtk/com.hackclub.burrow.json b/burrow-gtk/com.hackclub.burrow.json index 900d378..f50bf7b 100644 --- a/burrow-gtk/com.hackclub.burrow.json +++ b/burrow-gtk/com.hackclub.burrow.json @@ -36,14 +36,27 @@ "*.a" ], "modules" : [ + { + "name": "blueprint-compiler", + "buildsystem": "meson", + "sources": [ + { + "type": "git", + "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler", + "tag": "v0.8.1" + } + ] + }, { "name" : "burrow-gtk", "builddir" : true, + "subdir" : "burrow-gtk", "buildsystem" : "meson", "sources" : [ { "type" : "git", - "url" : "file:///var/home/reesericci/Code" + "branch" : "burrow-gtk-patch-1", + "url" : "https://github.com/hackclub/burrow.git" } ] } From fc83f416461ef7c2fd0e07e0e43fc7929910ca71 Mon Sep 17 00:00:00 2001 From: reesericci Date: Sun, 2 Jul 2023 00:06:02 -0500 Subject: [PATCH 06/10] Added updates to gtk Cargo.toml --- burrow-gtk/Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/burrow-gtk/Cargo.toml b/burrow-gtk/Cargo.toml index 7243745..4b7e9dc 100644 --- a/burrow-gtk/Cargo.toml +++ b/burrow-gtk/Cargo.toml @@ -11,3 +11,5 @@ gtk = { version = "0.6", package = "gtk4" } package = "libadwaita" version = "0.3" features = ["v1_2"] + +[workspace] From 9a29b5e03b374f979ca10e0cee6ef2b28475a794 Mon Sep 17 00:00:00 2001 From: reesericci Date: Sun, 2 Jul 2023 00:07:19 -0500 Subject: [PATCH 07/10] Updated manifest pull to main --- burrow-gtk/com.hackclub.burrow.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/burrow-gtk/com.hackclub.burrow.json b/burrow-gtk/com.hackclub.burrow.json index f50bf7b..bf42d59 100644 --- a/burrow-gtk/com.hackclub.burrow.json +++ b/burrow-gtk/com.hackclub.burrow.json @@ -55,7 +55,7 @@ "sources" : [ { "type" : "git", - "branch" : "burrow-gtk-patch-1", + "branch" : "main", "url" : "https://github.com/hackclub/burrow.git" } ] From 78682d073a30f15b9757910ebe90486cccd8f04f Mon Sep 17 00:00:00 2001 From: reesericci Date: Sun, 2 Jul 2023 00:11:56 -0500 Subject: [PATCH 08/10] Fix naming --- ....appdata.xml.in => com.hackclub.burrow.appdata.xml.in} | 2 +- ...b.Burrow.desktop.in => com.hackclub.burrow.desktop.in} | 4 ++-- ...Burrow.gschema.xml => com.hackclub.burrow.gschema.xml} | 2 +- .../{com.hackclub.Burrow.svg => com.hackclub.burrow.svg} | 0 ...rrow-symbolic.svg => com.hackclub.burrow-symbolic.svg} | 0 burrow-gtk/data/icons/meson.build | 2 +- burrow-gtk/data/meson.build | 8 ++++---- 7 files changed, 9 insertions(+), 9 deletions(-) rename burrow-gtk/data/{com.hackclub.Burrow.appdata.xml.in => com.hackclub.burrow.appdata.xml.in} (83%) rename burrow-gtk/data/{com.hackclub.Burrow.desktop.in => com.hackclub.burrow.desktop.in} (72%) rename burrow-gtk/data/{com.hackclub.Burrow.gschema.xml => com.hackclub.burrow.gschema.xml} (62%) rename burrow-gtk/data/icons/hicolor/scalable/apps/{com.hackclub.Burrow.svg => com.hackclub.burrow.svg} (100%) rename burrow-gtk/data/icons/hicolor/symbolic/apps/{com.hackclub.Burrow-symbolic.svg => com.hackclub.burrow-symbolic.svg} (100%) diff --git a/burrow-gtk/data/com.hackclub.Burrow.appdata.xml.in b/burrow-gtk/data/com.hackclub.burrow.appdata.xml.in similarity index 83% rename from burrow-gtk/data/com.hackclub.Burrow.appdata.xml.in rename to burrow-gtk/data/com.hackclub.burrow.appdata.xml.in index cbee29f..7f8e86b 100644 --- a/burrow-gtk/data/com.hackclub.Burrow.appdata.xml.in +++ b/burrow-gtk/data/com.hackclub.burrow.appdata.xml.in @@ -1,6 +1,6 @@ - com.hackclub.Burrow.desktop + com.hackclub.burrow.desktop GPL-3.0-or-later

No description

diff --git a/burrow-gtk/data/com.hackclub.Burrow.desktop.in b/burrow-gtk/data/com.hackclub.burrow.desktop.in similarity index 72% rename from burrow-gtk/data/com.hackclub.Burrow.desktop.in rename to burrow-gtk/data/com.hackclub.burrow.desktop.in index 024d14e..91c463d 100644 --- a/burrow-gtk/data/com.hackclub.Burrow.desktop.in +++ b/burrow-gtk/data/com.hackclub.burrow.desktop.in @@ -1,7 +1,7 @@ [Desktop Entry] -Name=burrow-gtk +Name=Burrow Exec=burrow-gtk -Icon=com.hackclub.Burrow +Icon=com.hackclub.burrow Terminal=false Type=Application Categories=GTK;Network diff --git a/burrow-gtk/data/com.hackclub.Burrow.gschema.xml b/burrow-gtk/data/com.hackclub.burrow.gschema.xml similarity index 62% rename from burrow-gtk/data/com.hackclub.Burrow.gschema.xml rename to burrow-gtk/data/com.hackclub.burrow.gschema.xml index 7121dfb..d1bceef 100644 --- a/burrow-gtk/data/com.hackclub.Burrow.gschema.xml +++ b/burrow-gtk/data/com.hackclub.burrow.gschema.xml @@ -1,5 +1,5 @@ - + diff --git a/burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.Burrow.svg b/burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.burrow.svg similarity index 100% rename from burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.Burrow.svg rename to burrow-gtk/data/icons/hicolor/scalable/apps/com.hackclub.burrow.svg diff --git a/burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.Burrow-symbolic.svg b/burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.burrow-symbolic.svg similarity index 100% rename from burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.Burrow-symbolic.svg rename to burrow-gtk/data/icons/hicolor/symbolic/apps/com.hackclub.burrow-symbolic.svg diff --git a/burrow-gtk/data/icons/meson.build b/burrow-gtk/data/icons/meson.build index 4ee9744..86f6480 100644 --- a/burrow-gtk/data/icons/meson.build +++ b/burrow-gtk/data/icons/meson.build @@ -1,4 +1,4 @@ -application_id = 'com.hackclub.Burrow' +application_id = 'com.hackclub.burrow' scalable_dir = join_paths('hicolor', 'scalable', 'apps') install_data( diff --git a/burrow-gtk/data/meson.build b/burrow-gtk/data/meson.build index 4cca4a4..07dab72 100644 --- a/burrow-gtk/data/meson.build +++ b/burrow-gtk/data/meson.build @@ -1,6 +1,6 @@ desktop_file = i18n.merge_file( - input: 'com.hackclub.Burrow.desktop.in', - output: 'com.hackclub.Burrow.desktop', + input: 'com.hackclub.burrow.desktop.in', + output: 'com.hackclub.burrow.desktop', type: 'desktop', po_dir: '../po', install: true, @@ -13,8 +13,8 @@ if desktop_utils.found() endif appstream_file = i18n.merge_file( - input: 'com.hackclub.Burrow.appdata.xml.in', - output: 'com.hackclub.Burrow.appdata.xml', + input: 'com.hackclub.burrow.appdata.xml.in', + output: 'com.hackclub.burrow.appdata.xml', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'appdata') From eecbeae6f52c751e8b15a4ad985925b5d9f1764a Mon Sep 17 00:00:00 2001 From: reesericci Date: Sun, 2 Jul 2023 00:13:35 -0500 Subject: [PATCH 09/10] Fix naming #2 --- burrow-gtk/data/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/burrow-gtk/data/meson.build b/burrow-gtk/data/meson.build index 07dab72..fadf18f 100644 --- a/burrow-gtk/data/meson.build +++ b/burrow-gtk/data/meson.build @@ -25,7 +25,7 @@ if appstream_util.found() test('Validate appstream file', appstream_util, args: ['validate', appstream_file]) endif -install_data('com.hackclub.Burrow.gschema.xml', +install_data('com.hackclub.burrow.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') ) From 6d4fbcd078bf915ca4b3759da97cb41a89a50157 Mon Sep 17 00:00:00 2001 From: dav Date: Sat, 4 Nov 2023 18:00:12 -0700 Subject: [PATCH 10/10] Small Fixes for Flatpak Building Be sure to install gnome 45 not 44 Build: `flatpak-builder --keep-build-dirs --user --disable-rofiles-fuse flatpak_app com.hackclub.burrow.json` --- burrow-gtk/com.hackclub.burrow.json | 10 +++++----- burrow-gtk/src/.gitignore | 1 + burrow-gtk/src/config.rs | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 burrow-gtk/src/.gitignore diff --git a/burrow-gtk/com.hackclub.burrow.json b/burrow-gtk/com.hackclub.burrow.json index bf42d59..e4bfabe 100644 --- a/burrow-gtk/com.hackclub.burrow.json +++ b/burrow-gtk/com.hackclub.burrow.json @@ -1,7 +1,7 @@ { "app-id" : "com.hackclub.burrow", "runtime" : "org.gnome.Platform", - "runtime-version" : "44", + "runtime-version" : "45", "sdk" : "org.gnome.Sdk", "sdk-extensions" : [ "org.freedesktop.Sdk.Extension.rust-stable" @@ -53,11 +53,11 @@ "subdir" : "burrow-gtk", "buildsystem" : "meson", "sources" : [ - { - "type" : "git", - "branch" : "main", - "url" : "https://github.com/hackclub/burrow.git" + { + "type": "dir", + "path": "./" } + ] } ] diff --git a/burrow-gtk/src/.gitignore b/burrow-gtk/src/.gitignore new file mode 100644 index 0000000..c6bb786 --- /dev/null +++ b/burrow-gtk/src/.gitignore @@ -0,0 +1 @@ +config.rs diff --git a/burrow-gtk/src/config.rs b/burrow-gtk/src/config.rs index 73ce81e..cb50d0e 100644 --- a/burrow-gtk/src/config.rs +++ b/burrow-gtk/src/config.rs @@ -1,4 +1,4 @@ pub static VERSION: &str = "0.1.0"; pub static GETTEXT_PACKAGE: &str = "burrow-gtk"; -pub static LOCALEDIR: &str = "/app/share/locale"; -pub static PKGDATADIR: &str = "/app/share/burrow-gtk"; +pub static LOCALEDIR: &str = "/usr/local/share/locale"; +pub static PKGDATADIR: &str = "/usr/local/share/burrow-gtk";