diff --git a/.gitignore b/.gitignore index ea8c4bf..ab707dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ -/target +/.cargo/ +/debian/*debhelper* +/debian/cosmic-term.substvars +/debian/cosmic-term/ +/debian/files +/target/ +/vendor.tar +/vendor/ diff --git a/Cargo.lock b/Cargo.lock index 5a18e9f..82a4d25 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -436,7 +436,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -465,13 +465,13 @@ checksum = "e1d90cd0b264dfdd8eb5bad0a2c217c1f88fa96a8573f40e7b12de23fb468f46" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -659,7 +659,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1039,7 +1039,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e" dependencies = [ "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1074,7 +1074,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1085,7 +1085,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1114,7 +1114,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1254,7 +1254,7 @@ checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1514,7 +1514,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1671,7 +1671,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3014,7 +3014,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3153,7 +3153,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3186,7 +3186,7 @@ checksum = "b7db010ec5ff3d4385e4f133916faacd9dad0f6a09394c92d825b3aed310fa0a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3285,7 +3285,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3320,7 +3320,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3348,9 +3348,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" [[package]] name = "png" @@ -3452,9 +3452,9 @@ dependencies = [ [[package]] name = "profiling" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de09527cd2ea2c2d59fb6c2f8c1ab8c71709ed9d1b6d60b0e1c9fbb6fdcb33c" +checksum = "d135ede8821cf6376eb7a64148901e1690b788c11ae94dc297ae917dbc91dc0e" [[package]] name = "qoi" @@ -3799,15 +3799,15 @@ dependencies = [ "ab_glyph", "log", "memmap2 0.5.10", - "smithay-client-toolkit 0.16.1 (git+https://github.com/pop-os/client-toolkit?branch=wayland-resize)", + "smithay-client-toolkit", "tiny-skia 0.8.4", ] [[package]] name = "self_cell" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e388332cd64eb80cd595a00941baf513caffae8dce9cfd0467fc9c66397dade6" +checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" [[package]] name = "serde" @@ -3826,7 +3826,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3837,7 +3837,7 @@ checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3939,24 +3939,6 @@ version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" -[[package]] -name = "smithay-client-toolkit" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" -dependencies = [ - "bitflags 1.3.2", - "dlib", - "lazy_static", - "log", - "memmap2 0.5.10", - "nix 0.24.3", - "pkg-config", - "wayland-client 0.29.5", - "wayland-cursor", - "wayland-protocols", -] - [[package]] name = "smithay-client-toolkit" version = "0.16.1" @@ -3981,7 +3963,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" dependencies = [ - "smithay-client-toolkit 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "smithay-client-toolkit", "wayland-client 0.29.5", ] @@ -4126,9 +4108,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8" dependencies = [ "proc-macro2", "quote", @@ -4194,7 +4176,7 @@ checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4340,7 +4322,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4604,7 +4586,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", "wasm-bindgen-shared", ] @@ -4638,7 +4620,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5292,7 +5274,7 @@ dependencies = [ "raw-window-handle", "redox_syscall 0.3.5", "sctk-adwaita", - "smithay-client-toolkit 0.16.1 (git+https://github.com/pop-os/client-toolkit?branch=wayland-resize)", + "smithay-client-toolkit", "wasm-bindgen", "wayland-client 0.29.5", "wayland-commons", @@ -5535,22 +5517,22 @@ checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d3b53a3..5f6fbdf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,3 +23,10 @@ features = ["tokio", "winit"] [features] default = ["wgpu"] wgpu = ["libcosmic/wgpu"] + +[patch.crates-io] +smithay-client-toolkit = { git = "https://github.com/pop-os/client-toolkit", branch = "wayland-resize" } + +[profile.release-with-debug] +inherits = "release" +debug = true diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..3af6df1 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +cosmic-term (0.1.0) jammy; urgency=medium + + * Initial release. + + -- Jeremy Soller Thu, 21 Dec 2023 08:39:28 -0700 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..b345f21 --- /dev/null +++ b/debian/control @@ -0,0 +1,16 @@ +Source: cosmic-term +Section: admin +Priority: optional +Maintainer: Jeremy Soller +Build-Depends: + debhelper-compat (=13), + just (>= 1.13.0), + pkg-config, + rust-all, +Standards-Version: 4.6.2 +Homepage: https://github.com/pop-os/cosmic-term + +Package: cosmic-term +Architecture: amd64 arm64 +Depends: ${misc:Depends}, ${shlibs:Depends} +Description: Cosmic Terminal diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..916e420 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,7 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cosmic-term +Upstream-Contact: Jeremy Soller +Source: https://github.com/pop-os/cosmic-term +Files: * +Copyright: System76 +License: GPL-3.0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..b87b559 --- /dev/null +++ b/debian/rules @@ -0,0 +1,22 @@ +#!/usr/bin/make -f + +export DESTDIR = debian/cosmic-term +export VENDOR ?= 1 + +%: + dh $@ + +override_dh_auto_clean: + if ! ischroot && test "${VENDOR}" = "1"; then \ + mkdir -p .cargo; \ + cargo vendor | head -n -1 > .cargo/config; \ + echo 'directory = "vendor"' >> .cargo/config; \ + tar pcf vendor.tar vendor; \ + rm -rf vendor; \ + fi + +override_dh_auto_build: + just build-vendored + +override_dh_auto_install: + just rootdir=$(DESTDIR) install diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..5d4ff73 --- /dev/null +++ b/debian/source/options @@ -0,0 +1,4 @@ +tar-ignore=.github +tar-ignore=.vscode +tar-ignore=vendor +tar-ignore=target \ No newline at end of file diff --git a/justfile b/justfile new file mode 100644 index 0000000..bf40dc6 --- /dev/null +++ b/justfile @@ -0,0 +1,71 @@ +name := 'cosmic-term' +export APPID := 'com.system76.CosmicTerm' + +rootdir := '' +prefix := '/usr' + +base-dir := absolute_path(clean(rootdir / prefix)) + +export INSTALL_DIR := base-dir / 'share' + +bin-src := 'target' / 'release' / name +bin-dst := base-dir / 'bin' / name + +desktop := APPID + '.desktop' +desktop-src := 'res' / desktop +desktop-dst := clean(rootdir / prefix) / 'share' / 'applications' / desktop + +# Default recipe which runs `just build-release` +default: build-release + +# Runs `cargo clean` +clean: + cargo clean + +# `cargo clean` and removes vendored dependencies +clean-dist: clean + rm -rf .cargo vendor vendor.tar + +# Compiles with debug profile +build-debug *args: + cargo build {{args}} + +# Compiles with release profile +build-release *args: (build-debug '--release' args) + +# Compiles release profile with vendored dependencies +build-vendored *args: vendor-extract (build-release '--frozen --offline' args) + +# Runs a clippy check +check *args: + cargo clippy --all-features {{args}} -- -W clippy::pedantic + +# Runs a clippy check with JSON message format +check-json: (check '--message-format=json') + +# Run with debug logs +run *args: + env RUST_LOG=debug RUST_BACKTRACE=full cargo run --release {{args}} + +# Installs files +install: + install -Dm0755 {{bin-src}} {{bin-dst}} + install -Dm0755 {{desktop-src}} {{desktop-dst}} + +# Uninstalls installed files +uninstall: + rm {{bin-dst}} + +# Vendor dependencies locally +vendor: + mkdir -p .cargo + cargo vendor --sync Cargo.toml \ + | head -n -1 > .cargo/config + echo 'directory = "vendor"' >> .cargo/config + tar pcf vendor.tar vendor + rm -rf vendor + +# Extracts vendored dependencies +vendor-extract: + rm -rf vendor + tar pxf vendor.tar diff --git a/res/com.system76.CosmicTerm.desktop b/res/com.system76.CosmicTerm.desktop new file mode 100644 index 0000000..0bb457a --- /dev/null +++ b/res/com.system76.CosmicTerm.desktop @@ -0,0 +1,10 @@ +#TODO: more build-out, desktop actions, translations? +[Desktop Entry] +Name=COSMIC Terminal +Exec=cosmic-term +Terminal=false +Type=Application +StartupNotify=true +Icon=utilities-terminal +Categories=COSMIC;System;TerminalEmulator; +Keywords=Command;Shell;Terminal;