diff --git a/.vscode/settings.json b/.vscode/settings.json index f8cf3bb..aa4e239 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,6 @@ "**/.hg/store/**": true, ".flatpak/**": true, "_build/**": true - } + }, + "prettier.tabWidth": 4 } \ No newline at end of file diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 2bb8768..df53330 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -1,3 +1,6 @@ +# 1.06.2504060-2 / 2025-11- +- feat: skyline support + # 1.06.2504060-1 / 2025-10-30 - update: devtools to v1.06.2504060 @@ -111,6 +114,8 @@ # 1.06.2306020-1 / 2023-06-04 - update: devtools to v1.06.2306020 +- update: nwjs 0.55.0 用以修复切换主题时标题栏重新出现的问题 +- fix: 处理vscode-ripgrep安装失败 # 1.06.2301040-1 / 2023-01-21 diff --git a/README.MD b/README.MD index e0ecf70..2de9738 100644 --- a/README.MD +++ b/README.MD @@ -139,7 +139,28 @@ # FAQ -请参考: [FAQ](docs/FAQ.MD) +## Skyline(实验性功能) + +启动Server后,点击编译即可;第一次启动Server会有wine配置提示,**不需要安装mono**。 + +> [!Warning] +> 第一次编译之后的编译操作可能会失败,因为点击编译按钮后,wine服务器需要一些时间完成重启。 + +```shell +docker run -d -it \ + --restart=always \ + --hostname="$(hostname)" \ + --env="DISPLAY" \ + --platform="linux/amd64" \ + --volume="${XAUTHORITY:-${HOME}/.Xauthority}:/root/.Xauthority:ro" \ + --volume="/tmp/.X11-unix:/tmp/.X11-unix:ro" \ + --volume="/dev/shm:/dev/shm" \ + -p 3001:3001 \ + --name skyline_server \ + ghcr.io/msojocs/skyline-client-server:master +``` + +其它请参考: [FAQ](docs/FAQ.MD) # 界面截图 diff --git a/docker/entrypoint b/docker/entrypoint deleted file mode 100755 index d59450a..0000000 --- a/docker/entrypoint +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -set -e # 命令出错就退出 -trap 'catchError $LINENO $BASH_COMMAND' ERR # 捕获错误情况 - -catchError() { - exit_code=$? - if [ $exit_code -ne 0 ]; then - fail "\033[31mcommand: $2\n at $0:$1\n at $STEP\033[0m" - fi - exit $exit_code -} - -success() { - echo -e "\033[42;37m 成功 \033[0m $1" -} - -fail() { - echo -e "\033[41;37m 失败 \033[0m $1" -} - -echo "start $UID" -python --version -echo "docker node version: $( node --version )" - -cd /workspace -export HOME="/tmp/home" -mkdir -p /tmp/home -# -# exec ./tools/rebuild-node-modules 0.53.1 -./tools/setup-wechat-devtools.sh - -# chmod -R 777 tmp node nwjs package.nw -# ls -l package.nw diff --git a/res/scripts/document_start.js b/res/scripts/document_start.js new file mode 100644 index 0000000..d072220 --- /dev/null +++ b/res/scripts/document_start.js @@ -0,0 +1,20 @@ +(() => { + if (!window.skylineRequireReplace) { + window.skylineRequireReplace = true; + const originalRequire = window.require; + if (originalRequire) { + window.require = function (m) { + if (m.includes("skyline.node")) { + // 给native用的 + globalThis.__sharedMemory = originalRequire( + "sharedMemory/sharedMemory.node" + ); + } + return originalRequire(m); + }; + window.require.cache = originalRequire.cache; + window.require.extensions = originalRequire.extensions; + window.require.resolve = originalRequire.resolve; + } + } +})(); diff --git a/res/scripts/entrance.js b/res/scripts/entrance.js index 566f16c..e28d5da 100644 --- a/res/scripts/entrance.js +++ b/res/scripts/entrance.js @@ -1,11 +1,11 @@ (() => { - const http = require('http') - const originaleListen = http.Server.prototype.listen - http.Server.prototype.listen = function(...args) { - if (args[0] == 33233) { - console.warn('block port of http server:', args[0]) - return + const http = require("http"); + const originaleListen = http.Server.prototype.listen; + http.Server.prototype.listen = function (port) { + if (port == 33233) { + console.warn("block port of http server:", port); + return; } - return originaleListen.apply(this, args) - } -})(); \ No newline at end of file + return originaleListen.apply(this, [port]); + }; +})(); diff --git a/test/fix-core.sh b/test/fix-core.sh deleted file mode 100755 index 4b29f9c..0000000 --- a/test/fix-core.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -root_dir=$(cd `dirname $0`/.. && pwd -P) - -package_dir="$root_dir/package.nw" -tmp_dir="$root_dir/package.nw" -mkdir -p $tmp_dir -unpack_script="$root_dir/tools/wxvpkg_unpack.js" -pack_script="$root_dir/tools/wxvpkg_pack.js" - -find_result=$( grep -lr "OSThemeController=" "$tmp_dir/core.wxvpkg.ext" ) -echo "theme: $find_result" -sed -i 's/"use strict";O/"use strict";const {execSync,spawn}=require("child_process");O/' $find_result -sed -i 's/this.registerListeners()/this.monitorTheme()/' $find_result -sed -i 's/}registerListeners/}monitorTheme(){let monitor=null;const{DESKTOP_SESSION}=process.env;switch(DESKTOP_SESSION){case"deepin":monitor=spawn("gsettings",["monitor","com.deepin.dde.appearance","gtk-theme",]);break;case"gnome":case"gnome-classic":monitor=spawn("gsettings",["monitor","org.gnome.desktop.interface","gtk-theme",]);break;default:console.warn(`NOT SUPPORTED!!!DESKTOP_SESSION:${DESKTOP_SESSION}`);break}monitor\&\&monitor.on("error",(err)=>{console.error("monitorTheme",err)});monitor\&\&monitor.stdout.on("data",e.debounce((chunk)=>{const data=chunk.toString();const t=data.includes("dark");console.warn(data);console.warn("dark",t);(this._theme=t?i.Dark:i.Light),this._onDidThemeChange.fire(this._theme)},400))}registerListeners/' $find_result -sed -i 's/mediaQuery.matches/isDark/' $find_result -sed -i 's/}getDefaultTheme/}get isDark(){const{DESKTOP_SESSION}=process.env;console.log(DESKTOP_SESSION);let theme="";switch(DESKTOP_SESSION){case"deepin":theme=execSync(`gsettings get com.deepin.dde.appearance gtk-theme`);break;case"gnome":case"gnome-classic":theme=execSync(`gsettings get org.gnome.desktop.interface gtk-theme`);break;default:break}return theme.includes("dark")}getDefaultTheme/' $find_result \ No newline at end of file diff --git a/tools/build-with-docker.sh b/tools/build-with-docker.sh index 0cf320a..86cc3d1 100755 --- a/tools/build-with-docker.sh +++ b/tools/build-with-docker.sh @@ -2,5 +2,10 @@ root_dir=$(cd `dirname $0`/.. && pwd -P) echo "$(id -u):$(id -g)" -docker run -u "$(id -u):$(id -g)" --rm -i -e "ACTION_MODE=${ACTION_MODE:-false}" -w /workspace -v "$root_dir:/workspace" jiyecafe/wechat-devtools-build:v1.0.4 \ - bash ./docker/entrypoint \ No newline at end of file +docker run --rm -i \ + -u "$(id -u):$(id -g)" \ + -e "ACTION_MODE=${ACTION_MODE:-false}" \ + -w /workspace \ + -v "$root_dir:/workspace" \ + jiyecafe/wechat-devtools-build:v1.0.4 \ + bash ./tools/setup-wechat-devtools.sh \ No newline at end of file diff --git a/tools/replace-skyline.sh b/tools/replace-skyline.sh new file mode 100755 index 0000000..2272c13 --- /dev/null +++ b/tools/replace-skyline.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -ex +root_dir=$(cd `dirname $0`/.. && pwd -P) +srcdir=$root_dir +tmp_dir="$root_dir/tmp" +cache_dir="$root_dir/cache" +nwjs_dir="$root_dir/nwjs" +package_dir="$root_dir/package.nw" + +shared_memory_version="v1.0.2" +skyline_version="v1.0.3" + +cd "$package_dir/node_modules" +rm sharedMemory/sharedMemory.node +wget -c https://github.com/msojocs/skyline-shared-memory/releases/download/$shared_memory_version/skyline-sharedMemory-linux-x86_64-$shared_memory_version.node -OsharedMemory/sharedMemory.node + +cd skyline-addon +rm build/skyline.node +wget -c https://github.com/msojocs/skyline-client-server/releases/download/$skyline_version/skyline-skylineClient-linux-x86_64-$skyline_version.node -Obuild/skyline.node +rm build/icudtl.dat +rm -rf bundle + +mv ${package_dir}/js/extensions/inject/documentstart/index.js ${package_dir}/js/extensions/inject/documentstart/index.js.bak +cp ${srcdir}/res/scripts/document_start.js ${package_dir}/js/extensions/inject/documentstart/index.js +cat ${package_dir}/js/extensions/inject/documentstart/index.js.bak >> ${package_dir}/js/extensions/inject/documentstart/index.js +rm ${package_dir}/js/extensions/inject/documentstart/index.js.bak \ No newline at end of file diff --git a/tools/run-skyline-server.sh b/tools/run-skyline-server.sh new file mode 100755 index 0000000..bdf2508 --- /dev/null +++ b/tools/run-skyline-server.sh @@ -0,0 +1,12 @@ +#!/bin/bash +docker run -d -it \ + --restart=always \ + --hostname="$(hostname)" \ + --env="DISPLAY" \ + --platform="linux/amd64" \ + --volume="${XAUTHORITY:-${HOME}/.Xauthority}:/root/.Xauthority:ro" \ + --volume="/tmp/.X11-unix:/tmp/.X11-unix:ro" \ + --volume="/dev/shm:/dev/shm" \ + -p 3001:3001 \ + --name skyline_server \ + ghcr.io/msojocs/skyline-client-server:master \ No newline at end of file diff --git a/tools/setup-wechat-devtools.sh b/tools/setup-wechat-devtools.sh index 87bb667..de70532 100755 --- a/tools/setup-wechat-devtools.sh +++ b/tools/setup-wechat-devtools.sh @@ -56,6 +56,11 @@ export PATH="$root_dir/cache/npm/node_global/bin:$root_dir/node/bin:$PATH" node --version npm --version +if [ "$ACTION_MODE" == "true" ]; then + # ACTION HOME没有定义,导致异常 + export HOME="/tmp/home" + mkdir -p /tmp/home +fi if [ $CURRENT_STEP == $INSTALL_NODE_SUCCESS ];then npm config set prefix "$root_dir/cache/npm/node_global" npm config set cache "$root_dir/cache/npm/node_cache" @@ -63,15 +68,6 @@ if [ $CURRENT_STEP == $INSTALL_NODE_SUCCESS ];then notice "非ACTION模式, 设置镜像源" npm config set registry http://registry.npmmirror.com/ # 注册模块镜像 npm config set disturl http://npmmirror.com/dist # node-gyp 编译依赖的 node 源码镜像 - ## 以下选择添加 - npm config set sass_binary_site http://npmmirror.com/mirrors/node-sass # node-sass 二进制包镜像 - npm config set electron_mirror http://npmmirror.com/mirrors/electron/ # electron 二进制包镜像 - npm config set puppeteer_download_host http://npmmirror.com/mirrors # puppeteer 二进制包镜像 - npm config set chromedriver_cdnurl http://npmmirror.com/mirrors/chromedriver # chromedriver 二进制包镜像 - npm config set operadriver_cdnurl http://npmmirror.com/mirrors/operadriver # operadriver 二进制包镜像 - npm config set phantomjs_cdnurl http://npmmirror.com/mirrors/phantomjs # phantomjs 二进制包镜像 - npm config set selenium_cdnurl http://npmmirror.com/mirrors/selenium # selenium 二进制包镜像 - npm config set node_inspector_cdnurl http://npmmirror.com/mirrors/node-inspector # node-inspector 二进制包镜像 fi step_switch $INSTALL_NPM_CONFIG_SUCCESS fi @@ -162,6 +158,9 @@ if [ $CURRENT_STEP == $INSTALL_REBUILD_SUCCESS ];then notice "Patching Other" "$root_dir/tools/fix-other.sh" + + notice "Replace Skyline" + "$root_dir/tools/replace-skyline.sh" fi success "微信开发者工具安装完毕" diff --git a/tools/update-wechat-devtools.js b/tools/update-wechat-devtools.js index 12d78be..55e549e 100755 --- a/tools/update-wechat-devtools.js +++ b/tools/update-wechat-devtools.js @@ -15,11 +15,11 @@ const urls = { "https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html", }; -const arguments = process.argv.slice(2); -console.log(arguments) +const commandArgs = process.argv.slice(2); +console.log(commandArgs) const args = {}; -for (let arg of arguments) { +for (let arg of commandArgs) { let t = arg.split("="); args[t[0]] = t[1]; }