From bb0ea0105e9c5be9cc10ed3881f989119cbec60d Mon Sep 17 00:00:00 2001
From: Kosette <35268640+Kosette@users.noreply.github.com>
Date: Tue, 1 Oct 2024 08:07:04 +0800
Subject: [PATCH] ci: add base image, prepared for arm64 compilation
---
.github/workflows/build_image.yaml | 104 +++++++
.../{build_gnu.yml => build_windows.yml} | 0
Cargo.lock | 269 ++++++++----------
docker/.dockerignore | 1 +
docker/Dockerfile | 22 ++
docker/README.md | 12 +
docker/entrypoint.sh | 23 ++
resources/ui/mpv_menu.ui | 2 +-
src/ui/mpv/page.rs | 21 +-
9 files changed, 289 insertions(+), 165 deletions(-)
create mode 100644 .github/workflows/build_image.yaml
rename .github/workflows/{build_gnu.yml => build_windows.yml} (100%)
create mode 100644 docker/.dockerignore
create mode 100644 docker/Dockerfile
create mode 100644 docker/README.md
create mode 100644 docker/entrypoint.sh
diff --git a/.github/workflows/build_image.yaml b/.github/workflows/build_image.yaml
new file mode 100644
index 00000000..b9fa505d
--- /dev/null
+++ b/.github/workflows/build_image.yaml
@@ -0,0 +1,104 @@
+name: Build and Push Ubuntu-rust-gtk4
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+ paths:
+ - "docker"
+ schedule:
+ - cron: "15 8 1 */1 *"
+
+jobs:
+ build-and-push:
+ runs-on: ubuntu-latest
+ permissions:
+ packages: write
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - platform: amd64
+ arch: amd64
+ - platform: arm64
+ arch: arm64v8
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to Github Registry
+ uses: docker/login-action@v3
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Metadata
+ run: |
+ echo "OWNER=${GITHUB_REPOSITORY_OWNER@L}" >> ${GITHUB_ENV}
+
+ - name: Build and push for ${{ matrix.platform }}
+ uses: docker/build-push-action@v6
+ with:
+ context: docker
+ platforms: linux/${{ matrix.platform }}
+ push: true
+ tags: |
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:${{ matrix.platform }}
+ build-args: |
+ ARCH=${{ matrix.arch }}
+ provenance: false
+
+ merge:
+ needs: build-and-push
+ runs-on: ubuntu-latest
+ permissions:
+ packages: write
+ strategy:
+ fail-fast: false
+
+ steps:
+ - name: Login to Github Registry
+ uses: docker/login-action@v3
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Metadata
+ id: date
+ run: |
+ echo "OWNER=${GITHUB_REPOSITORY_OWNER@L}" >> ${GITHUB_ENV}
+ echo "date=$(date --rfc-3339=date)" >> ${GITHUB_OUTPUT}
+
+ - name: Create multi-arch manifest for latest tag
+ run: |
+ docker manifest create ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:amd64 \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:arm64
+ docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:amd64 --arch amd64
+ docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:arm64 --arch arm64
+ docker manifest push ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest
+
+ - name: Create multi-arch manifest for date tag
+ run: |
+ docker manifest create ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:${{ steps.date.outputs.date }} \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:amd64 \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:arm64
+ docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:${{ steps.date.outputs.date }} \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:amd64 --arch amd64
+ docker manifest annotate ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:${{ steps.date.outputs.date }} \
+ ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:arm64 --arch arm64
+ docker manifest push ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:${{ steps.date.outputs.date }}
+
+ - name: Check push
+ run: |
+ docker buildx imagetools inspect ghcr.io/${{ env.OWNER }}/ubuntu-rust-gtk4:latest
diff --git a/.github/workflows/build_gnu.yml b/.github/workflows/build_windows.yml
similarity index 100%
rename from .github/workflows/build_gnu.yml
rename to .github/workflows/build_windows.yml
diff --git a/Cargo.lock b/Cargo.lock
index 44ebe9dd..dc03d875 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -167,9 +167,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "autocfg"
-version = "1.3.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "av1-grain"
@@ -319,7 +319,7 @@ checksum = "428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f"
dependencies = [
"glib-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
@@ -352,9 +352,9 @@ dependencies = [
[[package]]
name = "cargo_toml"
-version = "0.20.4"
+version = "0.20.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad639525b1c67b6a298f378417b060fbc04618bea559482a8484381cce27d965"
+checksum = "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0"
dependencies = [
"serde",
"toml",
@@ -362,9 +362,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.1.21"
+version = "1.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0"
+checksum = "3bbb537bb4a30b90362caddba8f360c0a56bc13d3a5570028e7197204cb54a17"
dependencies = [
"jobserver",
"libc",
@@ -383,9 +383,9 @@ dependencies = [
[[package]]
name = "cfg-expr"
-version = "0.16.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "345c78335be0624ed29012dc10c49102196c6882c12dde65d9f35b02da2aada8"
+checksum = "d0890061c4d3223e7267f3bad2ec40b997d64faac1c2815a4a9d95018e2b9e9c"
dependencies = [
"smallvec",
"target-lexicon",
@@ -619,9 +619,9 @@ checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b"
[[package]]
name = "embed-resource"
-version = "2.4.3"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4edcacde9351c33139a41e3c97eb2334351a81a2791bebb0b243df837128f602"
+checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa"
dependencies = [
"cc",
"memchr",
@@ -735,9 +735,9 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
[[package]]
name = "fdeflate"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
+checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab"
dependencies = [
"simd-adler32",
]
@@ -766,9 +766,9 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.33"
+version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
+checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [
"crc32fast",
"miniz_oxide 0.8.0",
@@ -887,9 +887,9 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8730751991b97419fc3f0c2dca2c9e45b48edf46e48e0f965964ecf33889812f"
+checksum = "c4c29071a9e92337d8270a85cb0510cda4ac478be26d09ad027cc1d081911b19"
dependencies = [
"gdk-pixbuf-sys",
"gio",
@@ -899,22 +899,22 @@ dependencies = [
[[package]]
name = "gdk-pixbuf-sys"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ffbf649fd5b1c8c0f0feeb015b7533c3ef92da2887fb95ddd338bc2b1644a7c"
+checksum = "687343b059b91df5f3fbd87b4307038fa9e647fcc0461d0d3f93e94fee20bf3d"
dependencies = [
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
name = "gdk4"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b7d7237c1487ed4b300aac7744efcbf1319e12d60d7afcd6f505414bd5b5dea"
+checksum = "c121aeeb0cf7545877ae615dac6bfd088b739d8abee4d55e7143b06927d16a31"
dependencies = [
"cairo-rs",
"gdk-pixbuf",
@@ -927,9 +927,9 @@ dependencies = [
[[package]]
name = "gdk4-sys"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a67576c8ec012156d7f680e201a807b4432a77babb3157e0555e990ab6bcd878"
+checksum = "7d3c03d1ea9d5199f14f060890fde68a3b5ec5699144773d1fa6abf337bfbc9c"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -939,14 +939,14 @@ dependencies = [
"libc",
"pango-sys",
"pkg-config",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
name = "gdk4-win32"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05afbcc8165b10f9143d2c4e4a589fce3a5071c6b20d75dd40704266d6eb4bb4"
+checksum = "275e0a5470f8da4ec00cf1856d4ebae4cd022b9abbb5eb2dbd57f511ca35fd22"
dependencies = [
"gdk4",
"gdk4-win32-sys",
@@ -957,14 +957,14 @@ dependencies = [
[[package]]
name = "gdk4-win32-sys"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "198c0604ceb45732c76b1fdb696d92b99400ea3a1c549fc5e40f4d79f8033205"
+checksum = "f7e8c93bb66b07216f516a94c997b13c41b26fc0fda1866542e3894e508c120a"
dependencies = [
"gdk4-sys",
"glib-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
@@ -982,14 +982,14 @@ dependencies = [
[[package]]
name = "gdk4-x11-sys"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a186f565940124ebd6c1c97e9eb0909e2d19a33ccd3eebed4ff32ebda766207d"
+checksum = "e91004338e548c4774ec7aa32100557ee905e6ba8114151414a5c34644790380"
dependencies = [
"gdk4-sys",
"glib-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
@@ -1062,9 +1062,9 @@ checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64"
[[package]]
name = "gio"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcacaa37401cad0a95aadd266bc39c72a131d454fc012f6dfd217f891d76cc52"
+checksum = "b8d999e8fb09583e96080867e364bc1e701284ad206c76a5af480d63833ad43c"
dependencies = [
"futures-channel",
"futures-core",
@@ -1079,14 +1079,14 @@ dependencies = [
[[package]]
name = "gio-sys"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5237611e97e9b86ab5768adc3eef853ae713ea797aa3835404acdfacffc9fb38"
+checksum = "4f7efc368de04755344f0084104835b6bb71df2c1d41e37d863947392a894779"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
"windows-sys 0.52.0",
]
@@ -1123,9 +1123,9 @@ dependencies = [
[[package]]
name = "glib"
-version = "0.20.3"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95648aac01b75503000bb3bcaa5ec7a7a2dd61e43636b8b1814854de94dd80e4"
+checksum = "adcf1ec6d3650bf9fdbc6cee242d4fcebc6f6bfd9bea5b929b6a8b7344eb85ff"
dependencies = [
"bitflags 2.6.0",
"futures-channel",
@@ -1153,9 +1153,9 @@ dependencies = [
[[package]]
name = "glib-macros"
-version = "0.20.3"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "302f1d633c9cdef4350330e7b68fd8016e2834bb106c93fdf9789fcde753c1ab"
+checksum = "a6bf88f70cd5720a6197639dcabcb378dd528d0cb68cb1f45e3b358bcb841cd7"
dependencies = [
"heck",
"proc-macro-crate",
@@ -1166,12 +1166,12 @@ dependencies = [
[[package]]
name = "glib-sys"
-version = "0.20.2"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92eee4531c1c9abba945d19378b205031b5890e1f99c319ba0503b6e0c06a163"
+checksum = "5f9eca5d88cfa6a453b00d203287c34a2b7cac3a7831779aa2bb0b3c7233752b"
dependencies = [
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
@@ -1182,20 +1182,20 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "gobject-sys"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa3d1dcd8a1eb2e7c22be3d5e792b14b186f3524f79b25631730f9a8c169d49a"
+checksum = "a4c674d2ff8478cf0ec29d2be730ed779fef54415a2fb4b565c52def62696462"
dependencies = [
"glib-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
name = "graphene-rs"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80aac87f74e81c0e13433e892a047237abdc37945c86887f5eed905038356e69"
+checksum = "1f53144c7fe78292705ff23935f1477d511366fb2f73c43d63b37be89076d2fe"
dependencies = [
"glib",
"graphene-sys",
@@ -1204,21 +1204,21 @@ dependencies = [
[[package]]
name = "graphene-sys"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2f91ecd32989efad60326cc20a8fb252bd2852239a08e4e70cde8c100de9ca"
+checksum = "e741797dc5081e59877a4d72c442c72d61efdd99161a0b1c1b29b6b988934b99"
dependencies = [
"glib-sys",
"libc",
"pkg-config",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
name = "gsk4"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3cf2091e1af185b347b3450817d93dea6fe435df7abd4c2cd7fb5bcb4cfda8"
+checksum = "aa21a2f7c51ee1c6cc1242c2faf3aae2b7566138f182696759987bde8219e922"
dependencies = [
"cairo-rs",
"gdk4",
@@ -1231,9 +1231,9 @@ dependencies = [
[[package]]
name = "gsk4-sys"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6aa69614a26d8760c186c3690f1b0fbb917572ca23ef83137445770ceddf8cde"
+checksum = "0f9fb607554f9f4e8829eb7ea301b0fde051e1dbfd5d16b143a8a9c2fac6c01b"
dependencies = [
"cairo-sys-rs",
"gdk4-sys",
@@ -1242,14 +1242,14 @@ dependencies = [
"graphene-sys",
"libc",
"pango-sys",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
name = "gstreamer"
-version = "0.23.1"
+version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "683e15f8cc3a1a2646d9fe2181a58b7abb4c166256d8d15cce368e420c741140"
+checksum = "49ecf3bcfc2ceb82ce02437f53ff2fcaee5e7d45ae697ab64a018408749779b9"
dependencies = [
"cfg-if",
"futures-channel",
@@ -1272,21 +1272,21 @@ dependencies = [
[[package]]
name = "gstreamer-sys"
-version = "0.23.0"
+version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9c9005b55dd2b1784645963c1ec409f9d420a56f6348d0ae69c2eaff584bcc3"
+checksum = "cb3859929db32f26a35818d0d9ed82f0887c9221ca402ddefaea2bb99833d535"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
name = "gtk4"
-version = "0.9.1"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4fe572bf318e5dbc6f5a2f8a25d853f1ae3f42768c0b08af6ca20a18f4057e1"
+checksum = "31e2d105ce672f5cdcb5af2602e91c2901e91c72da15ab76f613ad57ecf04c6d"
dependencies = [
"cairo-rs",
"field-offset",
@@ -1317,9 +1317,9 @@ dependencies = [
[[package]]
name = "gtk4-sys"
-version = "0.9.0"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1114a207af8ada02cf4658a76692f4190f06f093380d5be07e3ca8b43aa7c666"
+checksum = "cbe4325908b1c1642dbb48e9f49c07a73185babf43e8b2065b0f881a589f55b8"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -1331,7 +1331,7 @@ dependencies = [
"gsk4-sys",
"libc",
"pango-sys",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
@@ -1428,9 +1428,9 @@ dependencies = [
[[package]]
name = "httparse"
-version = "1.9.4"
+version = "1.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"
+checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
[[package]]
name = "hyper"
@@ -1487,9 +1487,9 @@ dependencies = [
[[package]]
name = "hyper-util"
-version = "0.1.8"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba"
+checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
dependencies = [
"bytes",
"futures-channel",
@@ -1500,7 +1500,6 @@ dependencies = [
"pin-project-lite",
"socket2",
"tokio",
- "tower",
"tower-service",
"tracing",
]
@@ -1716,7 +1715,7 @@ dependencies = [
"gtk4-sys",
"libc",
"pango-sys",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
@@ -1885,7 +1884,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
dependencies = [
"adler",
- "simd-adler32",
]
[[package]]
@@ -1895,6 +1893,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
dependencies = [
"adler2",
+ "simd-adler32",
]
[[package]]
@@ -2137,9 +2136,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "pango"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5764e5a174a5a0ec054fe5962ce6d4fc7052e2d0dcc23bbc77202b40a4a403d3"
+checksum = "aa26aa54b11094d72141a754901cd71d9356432bb8147f9cace8d9c7ba95f356"
dependencies = [
"gio",
"glib",
@@ -2149,14 +2148,14 @@ dependencies = [
[[package]]
name = "pango-sys"
-version = "0.20.1"
+version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd317e1de76b14b3d3efe05518c08b360327f1ab7fec150473a89ffcad4b072d"
+checksum = "84fd65917bf12f06544ae2bbc200abf9fc0a513a5a88a0fa81013893aef2b838"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
- "system-deps 7.0.2",
+ "system-deps 7.0.3",
]
[[package]]
@@ -2200,26 +2199,6 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
-[[package]]
-name = "pin-project"
-version = "1.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
[[package]]
name = "pin-project-lite"
version = "0.2.14"
@@ -2234,21 +2213,21 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]]
name = "png"
-version = "0.17.13"
+version = "0.17.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
+checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0"
dependencies = [
"bitflags 1.3.2",
"crc32fast",
"fdeflate",
"flate2",
- "miniz_oxide 0.7.4",
+ "miniz_oxide 0.8.0",
]
[[package]]
@@ -2428,9 +2407,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.5.4"
+version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853"
+checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
dependencies = [
"bitflags 2.6.0",
]
@@ -2585,19 +2564,18 @@ dependencies = [
[[package]]
name = "rustls-pemfile"
-version = "2.1.3"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425"
+checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
dependencies = [
- "base64",
"rustls-pki-types",
]
[[package]]
name = "rustls-pki-types"
-version = "1.8.0"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"
+checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55"
[[package]]
name = "rustls-webpki"
@@ -2646,9 +2624,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.11.1"
+version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6"
dependencies = [
"core-foundation-sys",
"libc",
@@ -2694,9 +2672,9 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.7"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
dependencies = [
"serde",
]
@@ -2821,9 +2799,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
-version = "2.0.77"
+version = "2.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
+checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
dependencies = [
"proc-macro2",
"quote",
@@ -2875,11 +2853,11 @@ dependencies = [
[[package]]
name = "system-deps"
-version = "7.0.2"
+version = "7.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "070a0a5e7da2d24be457809c4b3baa57a835fd2829ad8b86f9a049052fe71031"
+checksum = "66d23aaf9f331227789a99e8de4c91bf46703add012bdfd45fdecdfb2975a005"
dependencies = [
- "cfg-expr 0.16.0",
+ "cfg-expr 0.17.0",
"heck",
"pkg-config",
"toml",
@@ -2888,9 +2866,9 @@ dependencies = [
[[package]]
name = "tar"
-version = "0.4.41"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909"
+checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020"
dependencies = [
"filetime",
"libc",
@@ -2910,9 +2888,9 @@ checksum = "1f227968ec00f0e5322f9b8173c7a0cbcff6181a0a5b28e9892491c286277231"
[[package]]
name = "tempfile"
-version = "3.12.0"
+version = "3.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
+checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
dependencies = [
"cfg-if",
"fastrand",
@@ -2923,18 +2901,18 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.63"
+version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.63"
+version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
dependencies = [
"proc-macro2",
"quote",
@@ -3063,9 +3041,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.22.21"
+version = "0.22.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b072cee73c449a636ffd6f32bd8de3a9f7119139aff882f44943ce2986dc5cf"
+checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
dependencies = [
"indexmap",
"serde",
@@ -3074,27 +3052,6 @@ dependencies = [
"winnow",
]
-[[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project",
- "pin-project-lite",
- "tokio",
- "tower-layer",
- "tower-service",
-]
-
-[[package]]
-name = "tower-layer"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
-
[[package]]
name = "tower-service"
version = "0.3.3"
@@ -3236,9 +3193,9 @@ dependencies = [
[[package]]
name = "unicode-width"
-version = "0.1.13"
+version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
[[package]]
name = "untrusted"
@@ -3748,9 +3705,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
-version = "0.6.18"
+version = "0.6.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b"
dependencies = [
"memchr",
]
diff --git a/docker/.dockerignore b/docker/.dockerignore
new file mode 100644
index 00000000..1d1fe94d
--- /dev/null
+++ b/docker/.dockerignore
@@ -0,0 +1 @@
+Dockerfile
\ No newline at end of file
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 00000000..b3629137
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,22 @@
+ARG ARCH=amd64
+
+FROM $ARCH/ubuntu:oracular
+
+ENV CARGO_TERM_COLOR=always \
+ CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse \
+ RUST_BACKTRACE=full
+
+RUN apt update && apt upgrade -y &&\
+ apt install -y build-essential curl gettext pkg-config libssl-dev libgtk-4-dev \
+ libadwaita-1-dev libmpv-dev libgstreamer1.0-dev libgstreamer-plugins-bad1.0-dev \
+ libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev gstreamer1.0-libav
+
+WORKDIR /app
+
+VOLUME /app
+
+COPY ./entrypoint.sh /
+
+RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+
+ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
\ No newline at end of file
diff --git a/docker/README.md b/docker/README.md
new file mode 100644
index 00000000..b91db297
--- /dev/null
+++ b/docker/README.md
@@ -0,0 +1,12 @@
+# Ubuntu-Rust-Gtk4 Docker Image
+
+- base image: `Ubuntu:oracular`
+- installed packages: see Dockerfile
+- usage:
+
+```
+docker run --rm --platform [linux/amd64] -v ${{ github.workspace }}:/app -v ./entrypoint.sh:/entrypoint.sh [image]
+```
+
+> [!NOTE]
+> use your own `entrypoint.sh` and mount `/app` to your project root dir. need `sudo` privilege to move `target/`
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
new file mode 100644
index 00000000..edd39d2e
--- /dev/null
+++ b/docker/entrypoint.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -e
+
+export PATH=/root/.cargo/bin:$PATH
+
+# print $PATH
+echo "PATH: $PATH"
+
+# install cargo-deb
+cargo install cargo-deb
+
+# print package version
+echo "######### PACKAGE VERSION ##########"
+cargo --version
+echo "cargo-deb version: $(cargo-deb --version)"
+echo "gtk4 version: $(pkgconf --modversion gtk4)"
+echo "gstreamer version: $(pkgconf --modversion gstreamer-1.0)"
+echo "######### PACKAGE VERSION ##########"
+
+# build
+cargo b -r --locked
+
+cargo-deb
diff --git a/resources/ui/mpv_menu.ui b/resources/ui/mpv_menu.ui
index cdb2bd5e..1a629c62 100644
--- a/resources/ui/mpv_menu.ui
+++ b/resources/ui/mpv_menu.ui
@@ -38,7 +38,7 @@
-
_Advanced settings
- mpv.shoow-settings
+ mpv.show-settings
A
diff --git a/src/ui/mpv/page.rs b/src/ui/mpv/page.rs
index e3351bfa..71344aec 100644
--- a/src/ui/mpv/page.rs
+++ b/src/ui/mpv/page.rs
@@ -566,17 +566,22 @@ impl MPVPage {
let window = binding.and_downcast_ref::().expect("No Window");
let alert_dialog = adw::AlertDialog::builder()
.heading(gettext("Error"))
- .body(gettext("MPV has been shutdown, Application will exit. \nTsukimi can't restart MPV."))
+ .body(gettext(
+ "MPV has been shutdown, Application will exit. \nTsukimi can't restart MPV.",
+ ))
.build();
alert_dialog.add_response("shutdown", &gettext("Shutdown"));
alert_dialog.set_response_appearance("shutdown", adw::ResponseAppearance::Destructive);
- alert_dialog.connect_response(Some("shutdown"), glib::clone!(
- #[weak]
- window,
- move |_, _| {
- window.close();
- }
- ));
+ alert_dialog.connect_response(
+ Some("shutdown"),
+ glib::clone!(
+ #[weak]
+ window,
+ move |_, _| {
+ window.close();
+ }
+ ),
+ );
alert_dialog.present(Some(window));
}