From f33c21532765c682ee524405ac943a70f60aaa0e Mon Sep 17 00:00:00 2001 From: Caten Date: Fri, 6 Feb 2026 10:58:04 +0800 Subject: [PATCH] Fix links, update packages, update hangover, update readme, update avnc...... update code to v1.1.0 --- android/app/build.gradle | 7 + android/app/proguard-rules.pro | 5 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 2 +- extra/build-tiny-rootfs.md | 10 + extra/cross/install-hangover | 6 +- extra/cross/install-hangover-stable | 8 +- extra/gxde-25-upgrade.sh | 146 +++++++ extra/readme.md | 4 + extra/turnip.patch | 363 ++++++++++++++++++ lib/l10n/intl_en.arb | 4 +- lib/l10n/intl_zh.arb | 4 +- lib/l10n/intl_zh_Hant.arb | 4 +- lib/main.dart | 2 +- lib/workflow.dart | 11 +- pubspec.lock | 196 +++++++--- pubspec.yaml | 18 +- 17 files changed, 703 insertions(+), 89 deletions(-) create mode 100644 extra/gxde-25-upgrade.sh create mode 100644 extra/turnip.patch diff --git a/android/app/build.gradle b/android/app/build.gradle index ef97c8f..29741d2 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -59,6 +59,13 @@ android { buildConfigField "String", "COMMIT", "\"" + ("git rev-parse HEAD\n".execute().getText().trim() ?: (System.getenv('CURRENT_COMMIT') ?: "NO_COMMIT")) + "\"" + externalNativeBuild { + cmake { + cppFlags "-std=c++11" + arguments "-DANDROID_STL=c++_shared" + } + } + } signingConfigs { release { diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index a756be6..7c00113 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -11,4 +11,7 @@ -dontwarn com.google.errorprone.annotations.Immutable # 保持 Termux X11 所有内容 -keep class com.termux.x11.** { *; } --keepclassmembers class com.termux.x11.** { *; } \ No newline at end of file +-keepclassmembers class com.termux.x11.** { *; } + + +-dontwarn javax.annotation.Nullable \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index afa1e8e..efdcc4a 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 5c6c038..b57ae33 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -19,7 +19,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "8.7.3" apply false + id "com.android.application" version "8.9.1" apply false id "org.jetbrains.kotlin.android" version "2.1.0" apply false } diff --git a/extra/build-tiny-rootfs.md b/extra/build-tiny-rootfs.md index 8960ee1..c7505fb 100644 --- a/extra/build-tiny-rootfs.md +++ b/extra/build-tiny-rootfs.md @@ -179,6 +179,16 @@ tmoe还会安装gnome-keyring,由于之前我做xfce包时会造成VSCode反 ### 额外步骤 +- 升级到Debian 13(xfce, lxqt,v1.1.0): + - 更换内存分配器([原因](https://github.com/termux/proot/issues/313)。不过截至目前这个bug可能已经被修了,虽然issue没关)安装libtcmalloc-minimal4包,并设置库/usr/lib/aarch64-linux-gnu/libtcmalloc_minimal.so.4到/etc/ld.so.preload + - 把/etc/apt/source.list的bookworm改为trixie + - sudo apt update, sudo apt full-upgrade, sudo apt autoremove + - 取消内存分配器的更改 + - xfce版本重新修补了libtiff.so.5库 +- 升级到GXDE 25: + - 更换内存分配器 + - 使用AI重写的升级脚本(gxde-25-upgrade.sh),以便在不启动图形界面的情况下升级 +- 禁用MIT-SHM扩展(v1.1.0):/usr/local/bin/startvnc第372行添加set "${a}" "-extension" "MIT-SHM" - 将桌面壁纸的配置从monitorBuiltinDisplay改为monitorbuiltin(xfce,v1.0.99),疑似Termux:X11显示器名称改变导致壁纸失效 - 修复用vscode打开文件时只打开了vscode本身(v1.0.25):去掉/usr/share/applications/code-no-sandbox.desktop的Exec的--unity-launch - 修复选择文本时会把文本发送到剪切板(v1.0.25):在/usr/local/bin/startvnc文件的start_tmoe_xvnc()的start_win10_tigervnc行前面加入`vncconfig -set SendPrimary=0 SetPrimary=0` diff --git a/extra/cross/install-hangover b/extra/cross/install-hangover index 1c6e0d4..51ce060 100644 --- a/extra/cross/install-hangover +++ b/extra/cross/install-hangover @@ -19,10 +19,12 @@ fi echo "最新版本: $latest_version" -hangover_url="https://github.com/AndreRH/hangover/releases/download/hangover-${latest_version}/hangover_${latest_version}_debian12_bookworm_arm64.tar" +hangover_url="https://github.com/AndreRH/hangover/releases/download/hangover-${latest_version}/hangover_${latest_version}_debian13_trixie_arm64.tar" mirror_sites=( - "https://github.akams.cn/" + "https://gh-proxy.org/" + "https://cdn.gh-proxy.org/" + "https://edgeone.gh-proxy.org/" "https://gh.llkk.cc/" "https://github.moeyy.xyz/" "https://mirror.ghproxy.com/" diff --git a/extra/cross/install-hangover-stable b/extra/cross/install-hangover-stable index 3bf1c70..caa5013 100644 --- a/extra/cross/install-hangover-stable +++ b/extra/cross/install-hangover-stable @@ -4,11 +4,13 @@ echo "正在更新软件包..." sudo apt update sudo apt upgrade -y -hangover_url="https://github.com/AndreRH/hangover/releases/download/hangover-10.14/hangover_10.14_debian12_bookworm_arm64.tar" -latest_version="10.14" +hangover_url="https://github.com/AndreRH/hangover/releases/download/hangover-11.0/hangover_11.0_debian13_trixie_arm64.tar" +latest_version="11.0" mirror_sites=( - "https://github.akams.cn/" + "https://gh-proxy.org/" + "https://cdn.gh-proxy.org/" + "https://edgeone.gh-proxy.org/" "https://gh.llkk.cc/" "https://github.moeyy.xyz/" "https://mirror.ghproxy.com/" diff --git a/extra/gxde-25-upgrade.sh b/extra/gxde-25-upgrade.sh new file mode 100644 index 0000000..cdafa8d --- /dev/null +++ b/extra/gxde-25-upgrade.sh @@ -0,0 +1,146 @@ +#!/bin/bash + +# 定义颜色以便于阅读 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo -e "${GREEN}=== GXDE OS 15 -> 25 命令行升级工具 ===${NC}" + +# 1. 检查 root 权限 +if [ "$(id -u)" -ne 0 ]; then + echo -e "${RED}错误: 请使用 root 权限运行此脚本 (例如: sudo $0)${NC}" + exit 1 +fi + +# 2. 风险确认 (替代 Zenity) +echo -e "${YELLOW}警告:您即将执行 GXDE OS 15 到 25 的升级${NC}" +echo "• 该操作不可逆且存在风险" +echo "• 请确保系统已经更新到最新" +echo "• 请确保已做好数据备份" +echo "• 升级过程可能需要 1-3 小时,期间请勿关闭终端" +echo "" +read -p "您确定要继续吗?(输入 yes 继续,其他键取消): " confirm +if [ "$confirm" != "yes" ]; then + echo "操作已取消。" + exit 0 +fi + +echo -e "${YELLOW}再次确认:这是一个高风险操作!!!${NC}" +read -p "请输入 'I AGREE' (大写) 以确认并开始升级: " confirm_final +if [ "$confirm_final" != "I AGREE" ]; then + echo "操作已取消。" + exit 0 +fi + +echo -e "${GREEN}>>> 开始预处理...${NC}" + +# 刷新缓存与修复依赖 +echo "正在刷新系统包缓存..." +apt update +aptss update +export DEBIAN_FRONTEND=noninteractive +echo "正在检查和修复系统依赖问题..." +aptss install -f -yqq + +# 删除冲突包 +echo "正在移除 qtbase5-dev..." +apt autopurge qtbase5-dev -y + +# 3. 替换软件源 (核心逻辑) +echo "正在替换软件源..." +# 备份并替换主源 +sed -i 's/bookworm/trixie/g' /etc/apt/sources.list + +# 处理 PPA 源 +declare -A ppa_map=( + ["/etc/apt/sources.list.d/gxde.list"]='s/bixie/lizhi/g' + ["/etc/apt/sources.list.d/gxde-testing.list"]='s/tianlu/zhuangzhuang/g' +) +rm -vf /etc/apt/sources.list.d/gxde-bpo.list + +for file in "${!ppa_map[@]}"; do + if [[ -f "$file" ]]; then + sed -i "${ppa_map[$file]}" "$file" + echo "已更新源文件: $file" + else + [[ "$file" =~ testing ]] && continue + echo -e "${RED}严重错误:关键源文件缺失 $file${NC}" + exit 1 + fi +done + +# 屏蔽旧的更新器 +echo "正在屏蔽旧版更新器..." +rm -fv /usr/bin/gxde-app-upgrader +cat > /usr/bin/gxde-app-upgrader << EOF +#!/bin/bash +echo "警告:检测到您尚未完成系统大版本更新,请完成 CLI 更新流程!" +EOF +chmod +x /usr/bin/gxde-app-upgrader + +# 刷新新源 +echo "正在刷新新源缓存..." +apt update +aptss update +yes n | aptss install gxde-25-upgrader -yqq + +echo -e "${GREEN}>>> 预处理完成,准备开始核心升级...${NC}" +echo -e "${YELLOW}注意:接下来的过程请保持网络畅通,不要中断脚本运行。${NC}" +sleep 3 + +# 4. 执行核心升级逻辑 (原 gxde-post-upgrade-fix 内容) + +# 检查当前桌面环境状态 +ANDROID_INSTALLED=0 +DESKTOP_MISSING=0 +dpkg -s gxde-desktop-android &>/dev/null && ANDROID_INSTALLED=1 +dpkg -s gxde-desktop &>/dev/null || DESKTOP_MISSING=1 + +# 确定要安装的桌面包 +DESKTOP_PKG="gxde-desktop" +if [ "$ANDROID_INSTALLED" -eq 1 ] && [ "$DESKTOP_MISSING" -eq 1 ]; then + DESKTOP_PKG="gxde-desktop-android" + echo "检测到 Android 环境,将安装: $DESKTOP_PKG" +else + echo "将在升级后安装: $DESKTOP_PKG" +fi + +# 执行 Full Upgrade +echo -e "${GREEN}>>> 正在执行系统全面升级 (Full Upgrade)...这可能需要很长时间${NC}" +yes n | env DEBIAN_FRONTEND=noninteractive aptss full-upgrade \ + -o DPkg::options::="--force-confdef" \ + -o DPkg::options::="--force-confold" \ + -o DPkg::options::="--force-overwrite" \ + -yqq --assume-yes + +# 处理 grub 配置问题 (Hack) +echo "正在处理 GRUB 配置..." +if [ -f /var/lib/dpkg/info/grub-pc.postinst ]; then + mv -v /var/lib/dpkg/info/grub-pc.postinst /var/lib/dpkg/info/grub-pc.postinst.bak + dpkg --configure -a + mv -v /var/lib/dpkg/info/grub-pc.postinst.bak /var/lib/dpkg/info/grub-pc.postinst +else + dpkg --configure -a +fi + +# 安装/更新核心软件包 +echo -e "${GREEN}>>> 正在安装/重装核心组件...${NC}" +yes n | env DEBIAN_FRONTEND=noninteractive aptss install gxde-app-upgrader --reinstall -yqq + +if yes n | env DEBIAN_FRONTEND=noninteractive aptss install $DESKTOP_PKG deepin-kwin-x11 libdtkcore-dev deepin-desktop-base spark-store gxde-control-center --reinstall -yqq; then + + # 启用服务 + systemctl enable dde-filemanager-daemon.service || true + + echo -e "${GREEN}-----------------------${NC}" + echo -e "${GREEN}升级成功完成!${NC}" + echo -e "${YELLOW}请按回车键重启您的计算机,或者按 Ctrl+C 稍后手动重启。${NC}" + read + reboot +else + echo -e "${RED}!!!!!! 升级过程中出现错误 !!!!!!${NC}" + echo "请保留此终端输出,并反馈给 QQ 群 881201853" + exit 1 +fi \ No newline at end of file diff --git a/extra/readme.md b/extra/readme.md index 14d1eb2..c12b1cf 100644 --- a/extra/readme.md +++ b/extra/readme.md @@ -41,6 +41,10 @@ Turnip驱动。根据[这里](https://github.com/xDoge26/proot-setup/issues/26#i 快捷指令的彩蛋。原本放在容器里,但显然放这里更为合适 +#### extra/tiny_virtual_mic + +麦克风客户端。实现见tiny_virtual_mic.c + #### caj, edraw 这些分别是cajviewer,亿图图示的补丁 diff --git a/extra/turnip.patch b/extra/turnip.patch new file mode 100644 index 0000000..4e9ba8e --- /dev/null +++ b/extra/turnip.patch @@ -0,0 +1,363 @@ +diff --git a/src/freedreno/vulkan/tu_shader.cc b/src/freedreno/vulkan/tu_shader.cc +index edc0ce1f6fe..e5b8e9bc44d 100644 +--- a/src/freedreno/vulkan/tu_shader.cc ++++ b/src/freedreno/vulkan/tu_shader.cc +@@ -2556,10 +2556,10 @@ tu_upload_shader(struct tu_device *dev, + size += vpc_size; + } + +- pthread_mutex_lock(&dev->pipeline_mutex); ++ mtx_lock(&dev->pipeline_mutex); + VkResult result = tu_suballoc_bo_alloc(&shader->bo, &dev->pipeline_suballoc, + size * 4, 128); +- pthread_mutex_unlock(&dev->pipeline_mutex); ++ mtx_unlock(&dev->pipeline_mutex); + + if (result != VK_SUCCESS) + return result; +@@ -2589,9 +2589,9 @@ tu_upload_shader(struct tu_device *dev, + + result = tu_setup_pvtmem(dev, shader, &pvtmem_config, pvtmem_size, per_wave); + if (result != VK_SUCCESS) { +- pthread_mutex_lock(&dev->pipeline_mutex); ++ mtx_lock(&dev->pipeline_mutex); + tu_suballoc_bo_free(&dev->pipeline_suballoc, &shader->bo); +- pthread_mutex_unlock(&dev->pipeline_mutex); ++ mtx_unlock(&dev->pipeline_mutex); + return result; + } + +@@ -3427,10 +3427,10 @@ tu_empty_shader_create(struct tu_device *dev, + if (!shader) + return VK_ERROR_OUT_OF_HOST_MEMORY; + +- pthread_mutex_lock(&dev->pipeline_mutex); ++ mtx_lock(&dev->pipeline_mutex); + VkResult result = tu_suballoc_bo_alloc(&shader->bo, &dev->pipeline_suballoc, + 32 * 4, 128); +- pthread_mutex_unlock(&dev->pipeline_mutex); ++ mtx_unlock(&dev->pipeline_mutex); + + if (result != VK_SUCCESS) { + vk_free(&dev->vk.alloc, shader); +@@ -3541,9 +3541,9 @@ tu_shader_destroy(struct tu_device *dev, + tu_cs_finish(&shader->cs); + TU_RMV(resource_destroy, dev, &shader->bo); + +- pthread_mutex_lock(&dev->pipeline_mutex); ++ mtx_lock(&dev->pipeline_mutex); + tu_suballoc_bo_free(&dev->pipeline_suballoc, &shader->bo); +- pthread_mutex_unlock(&dev->pipeline_mutex); ++ mtx_unlock(&dev->pipeline_mutex); + + if (shader->pvtmem_bo) + tu_bo_finish(dev, shader->pvtmem_bo); +diff --git a/src/freedreno/vulkan/tu_wsi.cc b/src/freedreno/vulkan/tu_wsi.cc +index 57cf9048b07..246a95dd894 100644 +--- a/src/freedreno/vulkan/tu_wsi.cc ++++ b/src/freedreno/vulkan/tu_wsi.cc +@@ -47,6 +47,10 @@ tu_wsi_init(struct tu_physical_device *physical_device) + &options); + if (result != VK_SUCCESS) + return result; ++ ++ if (strcmp(physical_device->instance->knl->name, "kgsl") == 0) { ++ physical_device->wsi_device.is_tu_kgsl = true; ++ } + + physical_device->wsi_device.supports_modifiers = true; + physical_device->wsi_device.can_present_on_device = +diff --git a/src/util/anon_file.c b/src/util/anon_file.c +index a9ad2a2aad8..f5dcd5b3b48 100644 +--- a/src/util/anon_file.c ++++ b/src/util/anon_file.c +@@ -117,6 +117,11 @@ get_or_create_user_temp_dir(char* buf, size_t len) { + int uid = getuid(); + + env = os_get_option("XDG_RUNTIME_DIR"); ++#ifdef __linux__ ++ if (!env) { ++ env = "/tmp"; ++ } ++#endif + if (env && env[0] != '\0') { + snprintf(buf, len, "%s", env); + return buf; +diff --git a/src/util/u_process.c b/src/util/u_process.c +index 6846acd2e0b..8551c227b88 100644 +--- a/src/util/u_process.c ++++ b/src/util/u_process.c +@@ -101,7 +101,7 @@ __getProgramName() + { + return strdup(program_invocation_short_name); + } +-#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__APPLE__) || DETECT_OS_ANDROID || defined(__NetBSD__) ++#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__APPLE__) || DETECT_OS_ANDROID || defined(__NetBSD__) || defined(__linux__) + #if defined(__NetBSD__) + # include + #endif +diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c +index 6783fbd6efb..3a81c200c2a 100644 +--- a/src/vulkan/wsi/wsi_common.c ++++ b/src/vulkan/wsi/wsi_common.c +@@ -2491,7 +2491,7 @@ wsi_common_queue_present(const struct wsi_device *wsi, + #endif + } + +- if (wsi->sw) { ++ if (wsi->sw || (wsi->is_tu_kgsl && (swapchain->dma_buf_semaphore == VK_NULL_HANDLE))) { + wsi->WaitForFences(vk_device_to_handle(dev), + 1, &swapchain->fences[image_index], true, ~0ull); + } +@@ -3217,7 +3217,7 @@ wsi_configure_cpu_image(const struct wsi_swapchain *chain, + const struct wsi_cpu_image_params *params, + struct wsi_image_info *info) + { +- assert(params->base.image_type == WSI_IMAGE_TYPE_CPU); ++ // assert(params->base.image_type == WSI_IMAGE_TYPE_CPU); + assert(chain->blit.type == WSI_SWAPCHAIN_NO_BLIT || + chain->blit.type == WSI_SWAPCHAIN_BUFFER_BLIT); + +diff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h +index c17a79c6b13..20c480babbc 100644 +--- a/src/vulkan/wsi/wsi_common.h ++++ b/src/vulkan/wsi/wsi_common.h +@@ -152,6 +152,7 @@ struct wsi_device { + + + bool sw; ++ bool is_tu_kgsl; + + /* Set to true if the implementation is ok with linear WSI images. */ + bool wants_linear; +diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c +index f72e85c5e66..ac83c92236a 100644 +--- a/src/vulkan/wsi/wsi_common_display.c ++++ b/src/vulkan/wsi/wsi_common_display.c +@@ -516,6 +516,12 @@ struct wsi_display_sync { + + static uint64_t fence_sequence; + ++#ifdef __linux__ ++static void thread_signal_handler (int signum) { ++ pthread_exit (0); ++} ++#endif ++ + static void + _wsi_display_cleanup_state(struct wsi_display_swapchain *chain); + +@@ -2024,7 +2030,9 @@ wsi_display_wait_thread(void *data) + .events = POLLIN + }; + ++#ifndef __linux__ + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); ++#endif + for (;;) { + int ret = poll(&pollfd, 1, -1); + if (ret > 0) { +@@ -2052,9 +2060,21 @@ wsi_display_start_wait_thread(struct wsi_display *wsi) + static void + wsi_display_stop_wait_thread(struct wsi_display *wsi) + { ++#ifdef __linux__ ++ struct sigaction actions; ++ memset (&actions, 0, sizeof (actions)); ++ sigemptyset (&actions.sa_mask); ++ actions.sa_flags = 0; ++ actions.sa_handler = thread_signal_handler; ++ sigaction (SIGUSR2, &actions, NULL); ++#endif + mtx_lock(&wsi->wait_mutex); + if (wsi->wait_thread) { ++#ifndef __linux__ + pthread_cancel(wsi->wait_thread); ++#else ++ pthread_kill(wsi->wait_thread, SIGUSR2); ++#endif + pthread_join(wsi->wait_thread, NULL); + wsi->wait_thread = 0; + } +@@ -3456,7 +3476,9 @@ udev_event_listener_thread(void *data) + + int udev_fd = udev_monitor_get_fd(mon); + ++#ifndef __linux__ + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); ++#endif + + for (;;) { + nfds_t nfds = 1; +@@ -3603,6 +3625,15 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device, + struct wsi_display *wsi = + (struct wsi_display *) wsi_device->wsi[VK_ICD_WSI_PLATFORM_DISPLAY]; + ++#ifdef __linux__ ++ struct sigaction actions; ++ memset (&actions, 0, sizeof (actions)); ++ sigemptyset (&actions.sa_mask); ++ actions.sa_flags = 0; ++ actions.sa_handler = thread_signal_handler; ++ sigaction (SIGUSR2, &actions, NULL); ++#endif ++ + if (wsi) { + wsi_for_each_connector(connector, wsi) + wsi_display_free_connector(wsi, connector); +@@ -3610,7 +3641,11 @@ wsi_display_finish_wsi(struct wsi_device *wsi_device, + wsi_display_stop_wait_thread(wsi); + + if (wsi->hotplug_thread) { ++#ifndef __linux__ + pthread_cancel(wsi->hotplug_thread); ++#else ++ pthread_kill(wsi->hotplug_thread, SIGUSR2); ++#endif + pthread_join(wsi->hotplug_thread, NULL); + } + +diff --git a/src/vulkan/wsi/wsi_common_drm.c b/src/vulkan/wsi/wsi_common_drm.c +index fe297d3ca01..8c48b29d733 100644 +--- a/src/vulkan/wsi/wsi_common_drm.c ++++ b/src/vulkan/wsi/wsi_common_drm.c +@@ -47,6 +47,9 @@ + static VkResult + wsi_dma_buf_export_sync_file(int dma_buf_fd, int *sync_file_fd) + { ++ #if defined (__linux__) ++ return VK_ERROR_FEATURE_NOT_PRESENT; ++ #else + struct dma_buf_export_sync_file export = { + .flags = DMA_BUF_SYNC_RW, + .fd = -1, +@@ -64,11 +67,15 @@ wsi_dma_buf_export_sync_file(int dma_buf_fd, int *sync_file_fd) + *sync_file_fd = export.fd; + + return VK_SUCCESS; ++ #endif + } + + static VkResult + wsi_dma_buf_import_sync_file(int dma_buf_fd, int sync_file_fd) + { ++ #if defined (__linux__) ++ return VK_ERROR_FEATURE_NOT_PRESENT; ++ #else + struct dma_buf_import_sync_file import = { + .flags = DMA_BUF_SYNC_RW, + .fd = sync_file_fd, +@@ -84,6 +91,7 @@ wsi_dma_buf_import_sync_file(int dma_buf_fd, int sync_file_fd) + } + + return VK_SUCCESS; ++ #endif + } + + /** +diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c +index 5e4b3a68d07..d19b8faa196 100644 +--- a/src/vulkan/wsi/wsi_common_x11.c ++++ b/src/vulkan/wsi/wsi_common_x11.c +@@ -149,22 +149,7 @@ static bool + wsi_x11_check_dri3_compatible(const struct wsi_device *wsi_dev, + xcb_connection_t *conn) + { +- xcb_screen_iterator_t screen_iter = +- xcb_setup_roots_iterator(xcb_get_setup(conn)); +- xcb_screen_t *screen = screen_iter.data; +- +- /* Open the DRI3 device from the X server. If we do not retrieve one we +- * assume our local device is compatible. +- */ +- int dri3_fd = wsi_dri3_open(conn, screen->root, None); +- if (dri3_fd == -1) +- return true; +- +- bool match = wsi_dev->can_present_on_device(wsi_dev->pdevice, dri3_fd); +- +- close(dri3_fd); +- +- return match; ++ return true; + } + #endif + +@@ -1453,8 +1438,6 @@ x11_present_to_x11_dri3(struct x11_swapchain *chain, uint32_t image_index, + !wsi_device->x11.ignore_suboptimal) + options |= XCB_PRESENT_OPTION_SUBOPTIMAL; + +- xshmfence_reset(image->shm_fence); +- + if (!chain->base.image_info.explicit_sync) { + ++chain->sent_image_count; + assert(chain->sent_image_count <= chain->base.image_count); +@@ -1832,11 +1815,6 @@ x11_acquire_next_image(struct wsi_swapchain *wsi_chain, + return result; + + assert(*image_index < chain->base.image_count); +-#ifdef HAVE_X11_DRM +- if (chain->images[*image_index].shm_fence && +- !chain->base.image_info.explicit_sync) +- xshmfence_await(chain->images[*image_index].shm_fence); +-#endif + + return result; + } +@@ -2201,15 +2179,24 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain, + if (fd == -1) + return VK_ERROR_OUT_OF_HOST_MEMORY; + +- cookie = +- xcb_dri3_pixmap_from_buffer_checked(chain->conn, +- image->pixmap, +- chain->window, +- image->base.sizes[0], +- pCreateInfo->imageExtent.width, +- pCreateInfo->imageExtent.height, +- image->base.row_pitches[0], +- chain->depth, bpp, fd); ++ cookie = xcb_dri3_pixmap_from_buffers_checked(chain->conn, ++ image->pixmap, ++ chain->window, ++ image->base.num_planes, ++ pCreateInfo->imageExtent.width, ++ pCreateInfo->imageExtent.height, ++ image->base.row_pitches[0], ++ image->base.offsets[0], ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ 0, ++ chain->depth, ++ bpp, ++ 1274, ++ &fd); + } + + error = xcb_request_check(chain->conn, cookie); +@@ -2239,6 +2226,9 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain, + } + #endif + ++ image->sync_fence = 0; ++ return VK_SUCCESS; ++ + out_fence: + fence_fd = xshmfence_alloc_shm(); + if (fence_fd < 0) +@@ -2281,12 +2271,6 @@ x11_image_finish(struct x11_swapchain *chain, + { + xcb_void_cookie_t cookie; + if (!chain->base.wsi->sw || chain->has_mit_shm) { +-#ifdef HAVE_X11_DRM +- cookie = xcb_sync_destroy_fence(chain->conn, image->sync_fence); +- xcb_discard_reply(chain->conn, cookie.sequence); +- xshmfence_unmap_shm(image->shm_fence); +-#endif +- + cookie = xcb_free_pixmap(chain->conn, image->pixmap); + xcb_discard_reply(chain->conn, cookie.sequence); + #ifdef HAVE_X11_DRM diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index a7603ea..4762caf 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -70,7 +70,7 @@ "dri3Requirement": "DRI3 requires Termux:X11 and Turnip", "windowsAppSupport": "Windows App Support", "hangoverDescription": "Run Windows apps using Hangover (running cross-arch apps on native Wine)!\n\nRunning Windows programs requires two layers of emulation (arch + system) - don't expect good performance!\n\nFor better speed, try enabling Graphics Acceleration. Crashes or failures are normal.\n\nRecommend moving Windows programs to desktop before running.\n\nBe patient. Even if GUI shows nothing. Check terminal - is it still running or stopped with error?\n\nOr check if the Windows app has official Linux arm64 version.", - "installHangoverStable": "Install Hangover Stable", + "installHangoverStable": "Install Hangover", "installHangoverLatest": "Install Hangover Latest (may fail)", "uninstallHangover": "Uninstall Hangover", "clearWineData": "Clear Wine Data", @@ -79,7 +79,7 @@ "userManual": "User Manual", "openSourceLicenses": "Open Source Licenses", "permissionUsage": "Permission Usage", - "privacyStatement": "\nThis app does not collect your private information.\n\nHowever, I cannot control behaviors of apps you install/use inside the container system (including via shortcut commands).\n\nRequested permissions are used for:\nFile permissions: accessing phone directories\nNotifications & accessibility: Required by Termux:X11", + "privacyStatement": "\nThis app does not collect your private information.\n\nHowever, I cannot control behaviors of apps you install/use inside the container system (including via shortcut commands).\n\nRequested permissions are used for:\nFile permissions: accessing phone directories\nNotifications & accessibility: Required by Termux:X11\nMicrophone permission: for using the microphone", "supportAuthor": "Support Developers", "recommendApp": "If you find it useful, please recommend to others!", "projectUrl": "Project URL", diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 3760265..997b97d 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -70,7 +70,7 @@ "dri3Requirement": "DRI3必须配合Termux:X11和Turnip使用", "windowsAppSupport": "Windows应用支持", "hangoverDescription": "使用Hangover(在原生Wine运行跨架构应用)运行Windows应用!\n\n运行Windows程序需要经过架构和系统两层模拟,不要对运行速度抱有期待!\n\n需要速度可以尝试配合图形加速使用。当然程序崩溃甚至打不开也是正常的。\n\n建议将要运行的Windows程序连同程序文件夹移至桌面运行。\n\n你需要耐心。即使图形界面什么也没显示。看看终端,还在继续输出吗?还是停止在某个报错?\n\n或者寻找该Windows软件官方是否提供Linux arm64版本。", - "installHangoverStable": "安装Hangover稳定版", + "installHangoverStable": "安装Hangover", "installHangoverLatest": "安装Hangover最新版(可能出错)", "uninstallHangover": "卸载Hangover", "clearWineData": "清空Wine数据", @@ -79,7 +79,7 @@ "userManual": "使用说明", "openSourceLicenses": "开源许可", "permissionUsage": "权限使用说明", - "privacyStatement": "\n本软件不会收集你的隐私信息。\n\n当然,你在容器系统内部安装或使用的软件行为(包括通过快捷指令)就不受我控制了,我不对其负责。\n\n本软件申请的权限用于以下目的:\n文件相关权限:用于系统访问手机目录;\n通知和无障碍:Termux:X11需要。", + "privacyStatement": "\n本软件不会收集你的隐私信息。\n\n当然,你在容器系统内部安装或使用的软件行为(包括通过快捷指令)就不受我控制了,我不对其负责。\n\n本软件申请的权限用于以下目的:\n文件相关权限:用于系统访问手机目录;\n通知和无障碍:Termux:X11需要。\n麦克风权限:用于使用麦克风", "supportAuthor": "支持作者", "recommendApp": "如果认为好用的话,可以推荐给其他人用噢!", "projectUrl": "项目地址", diff --git a/lib/l10n/intl_zh_Hant.arb b/lib/l10n/intl_zh_Hant.arb index 309d76f..b927609 100644 --- a/lib/l10n/intl_zh_Hant.arb +++ b/lib/l10n/intl_zh_Hant.arb @@ -70,7 +70,7 @@ "dri3Requirement": "DRI3 必須配合 Termux:X11 與 Turnip 使用", "windowsAppSupport": "Windows 應用支援", "hangoverDescription": "使用 Hangover(於原生 Wine 執行跨架構應用)來執行 Windows 應用!\n\n執行 Windows 程式需經過架構與系統雙層模擬,請勿對速度抱太大期望。", - "installHangoverStable": "安裝 Hangover 穩定版", + "installHangoverStable": "安裝 Hangover", "installHangoverLatest": "安裝 Hangover 最新版(可能有錯誤)", "uninstallHangover": "解除安裝 Hangover", "clearWineData": "清除 Wine 資料", @@ -79,7 +79,7 @@ "userManual": "使用說明", "openSourceLicenses": "開源授權", "permissionUsage": "權限使用說明", - "privacyStatement": "\n本軟體不會收集你的隱私資訊。\n\n當然,你在容器系統內安裝或使用的軟體行為(包括快捷指令)不在本軟體控制範圍。", + "privacyStatement": "\n本軟體不會收集你的隱私資訊。\n\n當然,你在容器系統內安裝或使用的軟體行為(包括快捷指令)不在本軟體控制範圍。\n\n本軟體申請的權限用於以下目的:\n檔案相關權限:用於系統存取手機目錄;\n通知和無障礙:Termux:X11 需要。\n麥克風權限:用於使用麥克風。", "supportAuthor": "支持作者", "recommendApp": "如果覺得好用,可以推薦給其他人哦!", "projectUrl": "專案網址", diff --git a/lib/main.dart b/lib/main.dart index 61893c7..9c57eb5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -553,7 +553,7 @@ sed -i -E "s@^(VNC_RESOLUTION)=.*@\\1=${w}x${h}@" \$(command -v startvnc)"""); Text(AppLocalizations.of(context)!.hangoverDescription), const SizedBox.square(dimension: 8), Wrap(alignment: WrapAlignment.center, spacing: 4.0, runSpacing: 4.0, children: [ - OutlinedButton(style: D.commandButtonStyle, child: Text("${AppLocalizations.of(context)!.installHangoverStable}(10.14)"), onPressed: () async { + OutlinedButton(style: D.commandButtonStyle, child: Text("${AppLocalizations.of(context)!.installHangoverStable}(11.0)"), onPressed: () async { Util.termWrite("bash ~/.local/share/tiny/extra/install-hangover-stable"); G.pageIndex.value = 0; }), diff --git a/lib/workflow.dart b/lib/workflow.dart index 94a9b8d..eacd057 100644 --- a/lib/workflow.dart +++ b/lib/workflow.dart @@ -368,8 +368,8 @@ class D { {"name":"卸载Octave", "command":"sudo apt autoremove --purge -y octave"}, {"name":"安装WPS", "command":r"""sudo dpkg --configure -a && sudo aptss update && sudo aptss install -y wps-office"""}, {"name":"卸载WPS", "command":"sudo apt autoremove --purge -y wps-office"}, - {"name":"安装CAJViewer", "command":"wget https://download.cnki.net/net.cnki.cajviewer_1.3.20-1_arm64.deb -O /tmp/caj.deb && sudo apt update && sudo apt install -y /tmp/caj.deb && bash /home/tiny/.local/share/tiny/caj/postinst; rm /tmp/caj.deb"}, - {"name":"卸载CAJViewer", "command":"sudo apt autoremove --purge -y net.cnki.cajviewer && bash /home/tiny/.local/share/tiny/caj/postrm"}, + {"name":"安装CAJViewer", "command":"wget https://download.cnki.net/cajPackage/tongxinUOS/signed_cajviewer_9.5.0-25268_arm64.deb -O /tmp/caj.deb && sudo apt update && sudo apt install -y /tmp/caj.deb; rm /tmp/caj.deb"}, + {"name":"卸载CAJViewer", "command":"sudo apt autoremove --purge -y cajviewer"}, {"name":"安装亿图图示", "command":"wget https://cc-download.wondershare.cc/business/prd/edrawmax_13.1.0-1_arm64_binner.deb -O /tmp/edraw.deb && sudo apt update && sudo apt install -y /tmp/edraw.deb libidn12 && bash /home/tiny/.local/share/tiny/edraw/postinst; rm /tmp/edraw.deb"}, {"name":"卸载亿图图示", "command":"sudo apt autoremove --purge -y edrawmax libldap-2.4-2"}, {"name":"安装QQ", "command":"""wget \$(curl -s https://im.qq.com/rainbow/linuxQQDownload | grep -oP '"armDownloadUrl":{[^}]*"deb":"\\K[^"]+') -O /tmp/qq.deb && sudo apt update && sudo apt install -y /tmp/qq.deb && sed -i 's#Exec=/opt/QQ/qq %U#Exec=/opt/QQ/qq --no-sandbox %U#g' /usr/share/applications/qq.desktop; rm /tmp/qq.deb"""}, @@ -581,7 +581,12 @@ ln -sf ../applib/libexec_tar.so \$DATA_DIR/bin/tar ln -sf ../applib/libexec_virgl_test_server.so \$DATA_DIR/bin/virgl_test_server ln -sf ../applib/libexec_getifaddrs_bridge_server.so \$DATA_DIR/bin/getifaddrs_bridge_server ln -sf ../applib/libexec_pulseaudio.so \$DATA_DIR/bin/pulseaudio +ln -sf ../applib/libacl.so \$DATA_DIR/lib/libacl.so +ln -sf ../applib/libandroid-selinux.so \$DATA_DIR/lib/libandroid-selinux.so +ln -sf ../applib/libattr.so \$DATA_DIR/lib/libattr.so ln -sf ../applib/libbusybox.so \$DATA_DIR/lib/libbusybox.so.1.37.0 +ln -sf ../applib/libiconv.so \$DATA_DIR/lib/libiconv.so +ln -sf ../applib/libpcre2-8.so \$DATA_DIR/lib/libpcre2-8.so ln -sf ../applib/libtalloc.so \$DATA_DIR/lib/libtalloc.so.2 ln -sf ../applib/libvirglrenderer.so \$DATA_DIR/lib/libvirglrenderer.so ln -sf ../applib/libepoxy.so \$DATA_DIR/lib/libepoxy.so @@ -835,7 +840,7 @@ clear"""); } static Future launchXServer() async { - await X11Flutter.launchXServer("${G.dataPath}/containers/${G.currentContainer}/tmp", "${G.dataPath}/containers/${G.currentContainer}/usr/share/X11/xkb", [":4"]); + await X11Flutter.launchXServer("${G.dataPath}/containers/${G.currentContainer}/tmp", "${G.dataPath}/containers/${G.currentContainer}/usr/share/X11/xkb", [":4", "-extension", "MIT-SHM"]); } static Future launchX11() async { diff --git a/pubspec.lock b/pubspec.lock index 3e6bce4..a2227ef 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -21,8 +21,8 @@ packages: dependency: "direct main" description: path: "." - ref: "4008565259f88fe4613b885979f79e439bc5a420" - resolved-ref: "4008565259f88fe4613b885979f79e439bc5a420" + ref: "44f24477b85b009cf84d6c7be25a929128eed728" + resolved-ref: "44f24477b85b009cf84d6c7be25a929128eed728" url: "https://github.com/tiny-computer/avnc_flutter.git" source: git version: "0.0.1" @@ -46,10 +46,10 @@ packages: dependency: "direct main" description: name: clipboard - sha256: "1920c0337f8808be4166c5f1b236301ff381ef69633b0757c502d97f1f740102" + sha256: c0ba5e7214035b824549473fa134870bc544fff0d7b89170d4756c0ac2c0239d url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "3.0.14" clock: dependency: transitive description: @@ -58,6 +58,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" + url: "https://pub.dev" + source: hosted + version: "1.0.0" collection: dependency: transitive description: @@ -74,6 +82,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + crypto: + dependency: transitive + description: + name: crypto + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf + url: "https://pub.dev" + source: hosted + version: "3.0.7" dbus: dependency: transitive description: @@ -86,10 +102,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "98f28b42168cc509abc92f88518882fd58061ea372d7999aecc424345c7bff6a" + sha256: "4df8babf73058181227e18b08e6ea3520cf5fc5d796888d33b7cb0f33f984b7c" url: "https://pub.dev" source: hosted - version: "11.5.0" + version: "12.3.0" device_info_plus_platform_interface: dependency: transitive description: @@ -110,10 +126,10 @@ packages: dependency: transitive description: name: equatable - sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.8" fake_async: dependency: transitive description: @@ -126,10 +142,10 @@ packages: dependency: transitive description: name: ffi - sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + sha256: d07d37192dbf97461359c1518788f203b0c9102cfd2c35a716b823741219542c url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" file: dependency: transitive description: @@ -174,14 +190,30 @@ packages: description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + hooks: + dependency: transitive + description: + name: hooks + sha256: "7a08a0d684cb3b8fb604b78455d5d352f502b68079f7b80b831c62220ab0a4f6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" http: dependency: "direct main" description: name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.6.0" http_parser: dependency: transitive description: @@ -202,10 +234,10 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "11.0.1" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: @@ -226,10 +258,18 @@ packages: dependency: transitive description: name: lints - sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" url: "https://pub.dev" source: hosted - version: "6.0.0" + version: "6.1.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" matcher: dependency: transitive description: @@ -250,18 +290,26 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" + url: "https://pub.dev" + source: hosted + version: "0.17.4" network_info_plus: dependency: "direct main" description: name: network_info_plus - sha256: f926b2ba86aa0086a0dfbb9e5072089bc213d854135c1712f1d29fc89ba3c877 + sha256: "2866dadcbee2709e20d67737a1556f5675b8b0cdcf2c1659ba74bc21bffede4f" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" network_info_plus_platform_interface: dependency: transitive description: @@ -278,14 +326,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.0" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "983c7fa1501f6dcc0cb7af4e42072e9993cb28d73604d25ebf4dab08165d997e" + url: "https://pub.dev" + source: hosted + version: "9.2.5" package_info_plus: dependency: transitive description: name: package_info_plus - sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" + sha256: f69da0d3189a4b4ceaeb1a3defb0f329b3b352517f52bed4290f83d4f06bc08d url: "https://pub.dev" source: hosted - version: "8.3.1" + version: "9.0.0" package_info_plus_platform_interface: dependency: transitive description: @@ -314,18 +370,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "993381400e94d18469750e5b9dcb8206f15bc09f9da86b9e44a9b0092a0066db" + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e url: "https://pub.dev" source: hosted - version: "2.2.18" + version: "2.2.22" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.6.0" path_provider_linux: dependency: transitive description: @@ -422,6 +478,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" quiver: dependency: transitive description: @@ -442,26 +506,26 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" + sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.4" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: a2608114b1ffdcbc9c120eb71a0e207c71da56202852d4aab8a5e30a82269e74 + sha256: cbc40be9be1c5af4dab4d6e0de4d5d3729e6f3d65b89d21e1815d57705644a6f url: "https://pub.dev" source: hosted - version: "2.4.12" + version: "2.4.20" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.5.6" shared_preferences_linux: dependency: transitive description: @@ -543,10 +607,10 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.7" typed_data: dependency: transitive description: @@ -567,34 +631,34 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "69ee86740f2847b9a4ba6cffa74ed12ce500bbe2b07f3dc1e643439da60637b7" + sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611" url: "https://pub.dev" source: hosted - version: "6.3.18" + version: "6.3.28" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7 + sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad url: "https://pub.dev" source: hosted - version: "6.3.4" + version: "6.3.6" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" url: "https://pub.dev" source: hosted - version: "3.2.3" + version: "3.2.5" url_launcher_platform_interface: dependency: transitive description: @@ -607,18 +671,18 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" vector_math: dependency: transitive description: @@ -631,26 +695,26 @@ packages: dependency: transitive description: name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" url: "https://pub.dev" source: hosted - version: "15.0.0" + version: "15.0.2" wakelock_plus: dependency: "direct main" description: name: wakelock_plus - sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678 + sha256: "9296d40c9adbedaba95d1e704f4e0b434be446e2792948d0e4aa977048104228" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" wakelock_plus_platform_interface: dependency: transitive description: name: wakelock_plus_platform_interface - sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207 + sha256: "036deb14cd62f558ca3b73006d52ce049fabcdcb2eddfe0bf0fe4e8a943b5cf2" url: "https://pub.dev" source: hosted - version: "1.2.3" + version: "1.3.0" web: dependency: transitive description: @@ -663,18 +727,18 @@ packages: dependency: "direct main" description: name: webview_flutter - sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba + sha256: a3da219916aba44947d3a5478b1927876a09781174b5a2b67fa5be0555154bf9 url: "https://pub.dev" source: hosted - version: "4.13.0" + version: "4.13.1" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: "9a25f6b4313978ba1c2cda03a242eea17848174912cfb4d2d8ee84a556f248e3" + sha256: eeeb3fcd5f0ff9f8446c9f4bbc18a99b809e40297528a3395597d03aafb9f510 url: "https://pub.dev" source: hosted - version: "4.10.1" + version: "4.10.11" webview_flutter_platform_interface: dependency: transitive description: @@ -687,18 +751,18 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: fb46db8216131a3e55bcf44040ca808423539bc6732e7ed34fb6d8044e3d512f + sha256: e49f378ed066efb13fc36186bbe0bd2425630d4ea0dbc71a18fdd0e4d8ed8ebc url: "https://pub.dev" source: hosted - version: "3.23.0" + version: "3.23.5" win32: dependency: transitive description: name: win32 - sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e url: "https://pub.dev" source: hosted - version: "5.14.0" + version: "5.15.0" win32_registry: dependency: transitive description: @@ -740,6 +804,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" zmodem: dependency: transitive description: @@ -749,5 +821,5 @@ packages: source: hosted version: "0.0.6" sdks: - dart: ">=3.8.1 <4.0.0" - flutter: ">=3.29.0" + dart: ">=3.10.3 <4.0.0" + flutter: ">=3.38.4" diff --git a/pubspec.yaml b/pubspec.yaml index b3fe268..81fa0d8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.0.100+20250912 +version: 1.1.0+20260205 environment: sdk: '>=3.1.0 <4.0.0' @@ -33,17 +33,17 @@ dependencies: xterm: ^4.0.0 flutter_pty: ^0.4.2 path_provider: ^2.1.5 - webview_flutter: ^4.13.0 + webview_flutter: ^4.13.1 permission_handler: ^12.0.1 - http: ^1.5.0 + http: ^1.6.0 retry: ^3.1.2 url_launcher: ^6.3.2 - shared_preferences: ^2.5.3 - clipboard: ^2.0.2 - wakelock_plus: ^1.3.2 + shared_preferences: ^2.5.4 + clipboard: ^3.0.14 + wakelock_plus: ^1.4.0 dynamic_color: ^1.8.1 - network_info_plus: ^6.1.4 - device_info_plus: ^11.5.0 + network_info_plus: ^7.0.0 + device_info_plus: ^12.3.0 flutter_localizations: sdk: flutter intl: any @@ -54,7 +54,7 @@ dependencies: avnc_flutter: git: url: https://github.com/tiny-computer/avnc_flutter.git - ref: 4008565259f88fe4613b885979f79e439bc5a420 + ref: 44f24477b85b009cf84d6c7be25a929128eed728 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons.