2015年8月4日 星期二

在 Wine 下安裝 Sublime Text 3

(Install Sublime text 3 under Wine)

雖然,有 Linux 版的 Sublime Text 3,中文輸入也已設定成功,但是,text drag and drop 的功能在 Linux 下是無效的,我的決擇是捨中文輸入,選擇文字拖曳的功能。因此,又在想著如何透過 Wine 來執行 Sublime Text 3。

照著先前的作法,裝了 vcrun2010,仍然是意外死亡。最後,抱著試一試的想法,使用 winetricks,將上面可以裝的東西,都裝裝看,看是否運氣好,能夠讓 Sublime Text 3 跑起來。運氣還不錯,終於成功執行。總計裝了 dotnet20, dotnet20sp1, dotnet30sp1, glut,vcrun2010 倒沒有裝。不曉得是那個有用。將目錄整個砍掉,重來一次就知道了。

== Related Information ==

OS: Gentoo Linux, kernel: 3.18.12
Wine: 1.7.47, Winetricks: 20150706
Sublime Text 3 - build 3083
Required package:  dotnet20sp1 or dotnet20sp2
Native DLL:  dwrite.dll

一樣,為個別的軟體建個專用目錄,建立虛擬目錄。
$ WINEARCH=win32 WINEPREFIX=~/wine-sublime3 winecfg
選擇Windows 版本: Windows 7

設定虛擬目錄的環境變數
$ export WINEPREFIX=~/wine-sublime3

安裝 Sublime Text

可以執行
$ wine explorer
點選安裝檔,進行安裝。或是把安裝檔 copy 至 ~\wine-sublime3\drive_c\ 下,然後執行
$ wine c:\\Sublime\ Text\ Build\ 3083\ Setup.exe

$ wine Z:\\home\\ajax\\Downloads\\Sublime\\Sublime\ Text\ Build\ 3126\ Setup.exe

執行看看,
$ wine "C:\\Program Files\\Sublime Text 3\\subl.exe"
嗯,出現嚴重錯誤!

先裝 .NET 2.0 Framework SP1 或 SP2
$ winetricks dotnet20sp1

再試一次,可以成功執行,但畫面是亂的,這已有經驗了。透過 winecfg 的函式庫功能,將 dwrite.dll 設成原生 (native) 即可。dwrite.dll 是一個系統的 DLL 檔,該檔的描述為 Microsoft DirectX Typography Services。
大功告成,可以舒服的用了。
另外,package control 也不能用,那就用手動安裝吧,反正也做慣黑手了。

InputHelper

Linux 版本的 Sublime Text 會有中文輸入的問題,在 Wine 下執行,也同樣無法直接輸入中文,只好暫時用 copy and paste 的方式。很幸運的,經過一些嘗試,可以用 InputHelpler 輸入中文了。依網路上找到的資料,下載 InputHelper,然後複製到 ~/wine-sublime3/drive_c/users/ajax/Application Data/Sublime Text 3/Packages/ 的目錄下,再修改下列的部分
1. Default (Linux).sublime-keymap 改名為 Default (Windows).sublime-keymap 
2. 修改 inputhelper.py 的下面兩個地方
    (1) if sublime.platform() == 'windows': 
    (2) args = ["cmd", "/c", location]
3. 修改 linux_text_input_gui.py 的第一行為 #!/usr/bin/env python2,因為 pygtk 目前只有 Python 2 的版本,而我的 OS 預設是 Python 3

注意,依照上述方式執行,Sublime 是在 WINE 的環境中執行,但 InputHelper 則是在 Linux 的環境中執行。

衍生問題,ctrl_space 在 sublime 中,已有定義。編輯時不小心按到,會切換中英文輸入模式,但無法輸入中文,更進一步,有一些快速鍵也會失效。因此,在執行 Sublime 之前,必須 unset XMODIFIERS 環境變數,使中文輸入在 Sublime 中不會有作用。

#!/bin/bash
unset XMODIFIERS
export WINEPREFIX="/home/ajax/wine-sublime3"
wine "C:\\Program Files\\Sublime Text 3\\subl.exe"


設定 sidebar 的字型大小

透過 [Browse Packages] 功能,找出其下的 [User] 目錄,建立 Default.sublime-theme,加上下面的內容

[
  {
    "class": "sidebar_label",
    "color": [0, 0, 0],
    "font.bold": false,
    "font.size": 12
  }
]


假如是使用別的 theme,則依其名稱而不同,例如 Material-Theme-Darker.sublime-theme

補記

目前,我的筆電還是裝 Wine 的穩定版是 Wine 1.6.2,照著上面的步驟再裝一次,但安裝 Sublime Text 3後,無法成功執行。記得在先前的試裝過程中,看到 mono 的訊息,Wine 1.6.2 中,裝的是 wine-mono-0.0.8.msi,而 Wine 1.7.47 裝的是 wine-mono-4.5.6.msi,差別可能在此吧。升級至 Wine 1.7.47 ,就可以成功執行,舊版的 Wine 也就不再多試了。

2017-06-01 記

升級到 app-emulation/wine-any-2.7,仍是 mask,會自動裝 app-emulation/wine-desktop-common、app-emulation/wine-gecko、app-emulation/wine-mono-4.7.0,幾乎不用再做任何設定,直接裝 sublime-text 即可使用。

2017-09-15 記

在前一版推出的一年之後,2017年9月13日,Build 3143 發行。馬上安裝試用,結果字型變得很難看,也無法使用先前的 Color Scheme,只好再回去用 Build 3126。為了一直避免跳出 update 的提示視窗,在 setting 裡加上下面的設定
  "update_check": false,


2018-10-09 記

不知是那裡改變了,變成 InputHelper 可以輸入中文,但無法貼到編輯的文件中。然後,設定 XMODIFIERS=@im=gcin 就可以輸入中文了。

WINE 的功能表

用 WINE 執行安裝之後,會在功能表上出現選項,例如  Wine >  Programs > Sublime Text 3 對應的檔案在
~/.local/share/applications/wine/Programs/Sublime Text 3.desktop

沒有留言:

張貼留言

網誌存檔