設定 MATLAB for Linux 設定啟動圖示 MATLAB2021a Ubuntu 20.04.3 LTS

2022-01-07 11:00:01

安裝 MATLAB

下載 MATLAB 的 .ios 檔案,該網址有對應種子檔案,Linux 下推薦使用 qBittorrent 作為磁力種子下載工具,使用 Ubuntu 自帶的工具也無所謂啦

將下載下來的 .ios 檔案掛載,我的是掛載到了 /media/fxyang/MATHWORKS_R2021A.

fxyang 是我的使用者名稱。

cd 到對應掛載目錄下,可以看到 intall 檔案,執行此檔案。

cd /media/fxyang/MATHWORKS_R2021A
sudo ./install

這裡必須使用 sudo 執行,不然是沒有許可權安裝到 /usr/ 目錄下的,當然你也可以安裝到使用者的家目錄。
在這裡插入圖片描述

我用的是清華買的正版,盜版需要再額外加一步破解,把安裝路徑下的 license 檔案替換。請自行查閱網上的教學。在設定過程中,需要指定使用該軟體的使用者,我係結了自己的本地使用者名稱 fxyang,這樣其他使用者是無法使用這個軟體的。

安裝結束後,就可以在 Terminal 中執行 matlab 命令開啟 MATLAB 了。
在這裡插入圖片描述

自定義圖示固定到收藏夾

在下面兩個路徑中任選,建立 matlab.desktop 檔案。前者是系統全域性的,後者是當前使用者私有的

/usr/share/applications/
~/.local/share/applications
sudo gedit matlab.desktop

把下面的程式碼複製進去,

[Desktop Entry]
Categories=Application;Development;
Encoding=UTF-8
Exec=/usr/local/MATLAB/R2021a/bin/matlab -desktop
Icon=/usr/local/MATLAB/R2021a/toolbox/shared/dastudio/resources/MatlabIcon.png
Name=MATLAB2021a
StartupNotify=true
Terminal=false
Type=Application

其中 Exec Icon 是你軟體執行檔案的位置與軟體圖示的位置。其他的欄位網上可以查到。

.desktop 檔案有些欄位是必填的,有些是選填的,可以自行學習一下。

執行兩次 MATLAB 圖示不會重疊

在這裡插入圖片描述

xprop |grep WM_CLASS

執行上述指令,此時滑鼠指標會變成一個十字準心,然後點選一下正在執行的軟體。

(base) fxyang@lw-X299-WU8:~$ xprop |grep WM_CLASS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "MATLAB R2021a - academic use"

把第一個字串加入組態檔 matlab.desktopStartupWMClass=sun-awt-X11-XFramePeer
在這裡插入圖片描述

問題解決!

執行matlab 報錯 Failed to load module 「canberra-gtk-module」

它這是缺個模組,裝一下

sudo apt install libcanberra-gtk-module

檢查一下安裝了好了沒

(base) fxyang@lw-X299-WU8:~$ locate libcanberra-gtk-module.so
/snap/gnome-3-34-1804/72/usr/lib/gtk-3.0/modules/libcanberra-gtk-module.so
/usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so
/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libcanberra-gtk-module.so

如果裝好了,執行 matlab 還是報錯,是因為 linux 預設庫是從 /usr/lib 或者 /usr/lib64 下找,這時候只需要建立一個軟連線就行了,matlab 使用的是 2.0 的那個模組

sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so

問題解決!

但是做了這個操作之後,gedit 執行時又會報類似的錯誤了。我沒再管它。