我突然想拉屎 发表于 2019-10-21 20:40:31

关于GoldenDict在MacOS经常失灵的终级解决方案

本帖最后由 我突然想拉屎 于 2019-12-15 14:53 编辑

GoldenDict的几个问题已经困扰了MacOS用户很多年,
1. GoldenDict在拖选文字时,经常后退(页)
2. GodenDict在双指滑动,上下快速浏览时,经常会无意地放大放小
3. 其他
有用户在Github抱怨,也没有得到回应
有网友重新编译了MacOS版本的GoldenDict, 但并没有解决以上所有问题
我还一度在虚拟机linux下用goldendict,   但其实非常不方便
现在用wine安装windows版本的GoldenDict, 终于解决了以上所有痛点

wine是什么?开源软件,反编译windows,重写大量的组件,模拟windows的API,使linux/BSD/MacOS可以运行大部分windows软件,虽然有些软件并不完美,用户甚至可以安装windows版本的Mdict, 欧陆, IE, office等软件

安装GoldenDict步骤

1。安装wine (目前还没有支持10.15)
方法A (本教程默认A) :
https://dl.winehq.org/wine-builds/macosx/download.html我安装的是 wine stable稳定版本可能需要安装 XQuartz >= 2.7.7 https://www.xquartz.org/

方法B:
brew cask install wine-stable方法C:
brew install wine
如果你是通过brew install wine安装,wine不会成为MacOS的应用之一,以后只能用wine *.exe来安装或打开


2。
打开 wineHQ应用, 在弹出的 terminal 运行LC_ALL=zh_CN.utf-8 winecfg初始化配置 会自动在本地创建 〜/.wine的文件夹其中的 LC_ALL=zh_CN.utf-8 为设置简体中文环境。 如果你用繁体中文,请修改为TW或者HK
走一遍流程基本什么都不用做

3。 下载windows版本的GoldenDict
https://github.com/goldendict/goldendict/wiki/Early-Access-Builds-for-Windows
我选择的是installer版本,也可以选择其他版本(zip是完整包,无需安装,直接运行)installer版有时候会crash, 后来我还是选择了64位绿色免安装版( *based 64-bit build (7z))。但是下面的路径可能有所不同。
你当然可以同时试用几个版本
下面的教程的路径以installer版默认为准

整个环境都已经搭载好了,下面开始安装windows的exe

4。打开安装好的wineHQ应用 会弹出terminal 暂时不用关闭

5。在Finder找到goldendict.exe,右键,用wine运行。然后就可以一步步安装了。我是安装在默认路径,即C盘

恭喜,你已经安装好了goldendict

6。打开GoldenDict方法(任选其一)
方法A
找到C盘(〜/.wine/drive_c) 的GoldenDict文件夹, 这个就是安装好的GoldenDict, 用wine打开exe即可
方法B
假设第五步是默认路径,可以在terminal输入下面命令
open ~/.wine/drive_c/Program\ Files\ \(x86\)/GoldenDict右键GoldenDict.exe 用wine打开即可
方法C
LC_ALL=zh_CN.utf-8 wine "$HOME/.wine/drive_c/Program Files (x86)/GoldenDict/GoldenDict.exe"

方法D
把GoldenDict.exe创建新链接,放在桌面即可(可以自行设定图标)
方法E (本教程默认E)
打开Mac自带的Automator -> Application -> Run shell srcipt,默认是/bin/bash, 在空白处输入
LC_ALL=zh_CN.utf-8 WINEDEBUG=-all "/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine" "$HOME/.wine/drive_c/Program Files (x86)/GoldenDict/GoldenDict.exe" > /dev/null 2>&1 &保存成GoldenDict.app即可(可以自行设定图标)
LC_ALL=zh_CN.utf-8 为简体中文环境
其中WINEDEBUG=-all是不输出debug消息,
/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine是wine应用版的路径
如果命令行版,/usr/local/bin/wine是默认wine路径,
然后是GoldenDict.exe路径, 最后>.. 是输出为空,去掉任务栏的一个小圈圈


基本安装就成功了。

7。美化待续



【A】 https://wiki.winehq.org/MacOS
















我突然想拉屎 发表于 2019-10-21 21:01:30

本帖最后由 我突然想拉屎 于 2019-10-22 15:45 编辑

关于删除wine和重置
有些小伙伴可能害怕操作错误,产生垃圾文件。下面教大家怎么干净删除wine

删除整个$HOME/.wine
删除$HOME/.local/shares里的
    applications
    desktop-directories
    mime
删除wine

https://wiki.winehq.org/MacOS

我突然想拉屎 发表于 2019-10-21 20:55:38

本帖最后由 我突然想拉屎 于 2019-12-13 09:13 编辑

关于美化。也就是修复字体问题, ctrl->command拷贝。
大部分可以跳过。我只执行了1,3,10,
我一开始用8,9,现在不用了,改用11

1。
打开terminal 安装winetricksbrew install winetricks
3。安装文泉驿中文字体 (更多字体请看6)
winetricks fakechinesefakechinese是文泉驿的包装,亲测此命令已经包含了winetricks wenquanyi

4。系统设置
将 DirectDrawRenderer 设置为 opengl , 据说会高效一些, 还有开启字体平滑 (非必要,可跳过)
winetricks ddr=opengl
winetricks fontsmooth=rgb
5。把macos系统字体tff otf ttc全部创建软链接到wine里(非必要,可跳过)cd ~/.wine/drive_c/windows/Fonts && for i in /Library/Fonts/*.{ttf,otf,ttc}; do ln -s "$i" ; done默认 〜/.wine/drive_c/windows/Fonts是空文件夹

6。查看或者安装更多的字体 (非必要,可跳过)
brew install zenity
winetricks --gui选择install fonts

7。调整windows系统级别的字体大小(比如窗口菜单字体大小) 非必要 可跳过
winecfg调整DPI。默认是96,菜单字体非常小,根据个人屏幕分辨率和喜好调整。

8。windows默认copy&paste是ctrl, macos默认是command,这里通过修改windows注册表进行整合 (非必要,可跳过)
REGEDIT4


"LeftCommandIsCtrl"="Y"
"RightCommandIsCtrl"="Y"将上述文件保存为任意名,比如 ctrl.reg
打开wineHQ应用,在弹出的terminal中输入
wine regedit ctrl.reg
所以现在在 goldendict里面,
command + c就是copy,
command + shift +c 就是 copy as text,
command +v 就是paste


9. 添加option键,在goldendict应用内变成windows的alt键。操作如8 (非必要,可跳过)
REGEDIT4


"LeftOptionIsAlt"="Y"
"RightOptionIsAlt"="Y"

10. 强制全局,默认字体为微软雅黑,默认字体大小为36px, UI字体为18px (非必要,可跳过)
创建一个文件 article-style.css
* {
    font-family: Arial, "Microsoft Yahei" !important;
    font-size: 36px !important;
    /* background: red !important; */
}

创建一个文件 qt-style.css
* {
    font-family: Arial, "Microsoft Yahei" !important;
    font-size: 18px !important;
}

我用的是64位绿色版,默认路径为
〜/.wine/drive_c/users/用户名/Application Data/GoldenDict
将上面 qt-style.css 和 article-style.css 保存于上述路径

你的可能不同。可以在GoldenDict -> help -> Configuration Folder看看默认路径,将文件保存于默认路径。


css中的!important 是强制使用这条命令,覆盖所有字典,相当于全局。
可以把36px 18px 改成自己喜欢的默认字体大小
/* */ 为注释,可以去掉

如不明白第10步,请看
https://www.pdawiki.com/forum/thread-23016-1-1.html

11。 用karabiner-elements来交换command和ctrl (可跳过)
因为windows的 ctrl - c 为复制,而macos复制为 command - c, 可以在wine应用中单独交换,而其他应用保持正常激活的组合cmd+c, cmd+v, cmd+f, cmd+shift+f{
    "title": "cmd cvfF -> ctrl cvfF in wine",
    "rules": [
      {
            "description": "in wine, command cv -> ctrl cv",
            "manipulators": [
                {
                  "type": "basic",
                  "from": {
                        "key_code": "c",
                        "modifiers": {
                           "mandatory": [
                              "left_command"
                            ],
                        "optional": [
                            "caps_lock"
                            ]
                        }
                  },
                  "to": [
                        {
                            "key_code": "c",
                            "modifiers": [
                              "left_control"
                            ]
                        }
                  ],
                  "conditions": [
                        {
                            "type": "frontmost_application_if",
                            "bundle_identifiers": [
                              "^$"
                            ],
                            "file_paths": [
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine-preloader",
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine64-preloader"
                            ]
                        }
                  ]
                },
                {
                  "type": "basic",
                  "from": {
                        "key_code": "v",
                        "modifiers": {
                           "mandatory": [
                              "left_command"
                            ],
                        "optional": [
                            "caps_lock"
                            ]
                        }
                  },
                  "to": [
                        {
                            "key_code": "v",
                            "modifiers": [
                              "left_control"
                            ]
                        }
                  ],
                  "conditions": [
                        {
                            "type": "frontmost_application_if",
                            "bundle_identifiers": [
                              "^$"
                            ],
                            "file_paths": [
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine-preloader",
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine64-preloader"
                            ]
                        }
                  ]
                }
            ]
      },
      {
            "description": "in wine, command fF -> ctrl fF",
            "manipulators": [
                {
                  "type": "basic",
                  "from": {
                        "key_code": "f",
                        "modifiers": {
                           "mandatory": [
                              "left_command"
                            ],
                        "optional": [
                            "caps_lock"
                            ]
                        }
                  },
                  "to": [
                        {
                            "key_code": "f",
                            "modifiers": [
                              "left_control"
                            ]
                        }
                  ],
                  "conditions": [
                        {
                            "type": "frontmost_application_if",
                            "bundle_identifiers": [
                              "^$"
                            ],
                            "file_paths": [
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine-preloader",
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine64-preloader"
                            ]
                        }
                  ]
                },
                {
                  "type": "basic",
                  "from": {
                        "key_code": "f",
                        "modifiers": {
                           "mandatory": [
                              "left_command",
                              "shift"
                            ],
                        "optional": [
                            "caps_lock"
                            ]
                        }
                  },
                  "to": [
                        {
                            "key_code": "f",
                            "modifiers": [
                              "left_control",
                              "shift"
                            ]
                        }
                  ],
                  "conditions": [
                        {
                            "type": "frontmost_application_if",
                            "bundle_identifiers": [
                              "^$"
                            ],
                            "file_paths": [
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine-preloader",
                              "^/Applications/Wine Stable.app/Contents/Resources/wine/bin/wine64-preloader"
                            ]
                        }
                  ]
                }
            ]
      }
    ]
}

# 修改自 https://github.com/npyl/swap-command-with-control-for-wine 直接交换cmd和ctrl
这karabiner-elements说起来太麻烦。只是简单提一下。给高级用户使用。

关于删除/重置wine, 待续










我突然想拉屎 发表于 2019-10-21 21:16:59

本帖最后由 我突然想拉屎 于 2019-10-22 20:19 编辑

最后的最后,可以用wineBottler (for Mac OS X)给GoldenDict打包成一个单独goldendict.app
我粗略试了,把.net4.0 200M去掉, 包含整个wine, 加了fakechinese字体,打了几个优化的勾(看美化部分),最后体积是960MB。呃。不含字典。哈哈。有兴趣可以自己试一下。在两台机器实测可用。
安装wineBottler
http://winebottler.kronenberg.org/




le23we 发表于 2019-10-22 16:01:55

測試了一下 建立字體軟鏈接之後goldendict裏面的生僻字還是顯示方塊

le23we 发表于 2019-10-22 17:31:06

cjkfonts裝上之後方塊問題依舊存在
页: [1]
查看完整版本: 关于GoldenDict在MacOS经常失灵的终级解决方案