Làm cách nào để tạo một trình khởi chạy Matlab cho Unity?


22

Tôi đang cố gắng cài đặt trình khởi chạy Matlab R2011a cho Unity trong Ubuntu 12.04. Tôi đã thử hướng dẫn này (mặc dù tôi biết nó cho 11.10 và đề cập rằng thậm chí 11.10 là một hệ điều hành không được hỗ trợ cho Matlab R2011a) nhưng không có bất kỳ giải pháp thỏa đáng nào.

Đây là tập tin launcher của tôi , /usr/share/applications/matlab.desktop:

#!/usr/bin/env xdg-open
[Desktop Entry]
Type=Application
Icon=/usr/share/icons/matlab.png
Name=MATLAB R2011a
Comment=Start MATLAB - The Language of Technical Computing
Exec=matlab -desktop
Categories=Development;

Tôi mở bảng điều khiển và tìm kiếm "matlab". Trình khởi chạy này được tìm thấy trong số các ứng dụng. Tôi nhấp vào nó và màn hình giật gân của Matlab xuất hiện, nhưng khi nó biến mất, chương trình không khởi động. (Tôi đã xác minh htoprằng không có quy trình MATLAB nào đang chạy trong nền.)

Nếu tôi thêm

Terminal=true

với tệp launcher, chương trình khởi động OK và mở một terminal cũng như Matlab. Tuy nhiên, cả thiết bị đầu cuối và Matlab đều hiển thị trong khu vực Trình khởi chạy, với biểu tượng Matlab, vì vậy có vẻ như tôi có hai phiên bản Matlab đang chạy khi thực sự chỉ có một. (Trên thực tế, chúng hiển thị dưới dạng hai chương trình khác nhau và không chỉ hai trường hợp giống nhau - các biểu tượng là độc lập, không được nhóm lại với nhau.)

Điều này chắc chắn là không tối ưu. Tôi đã hy vọng tạo ra một trình khởi chạy mà tôi có thể khóa vào khu vực trình khởi chạy và sau đó biểu tượng đó sẽ là biểu tượng cho phiên bản Matlab hoạt động khi chương trình đang chạy.

Làm cách nào để tạo launcher cho Matlab hoạt động như mong đợi?

Cập nhật: Tôi rõ ràng là không rõ ràng về các triệu chứng của mình, tôi sẽ cố gắng làm rõ một chút. Tôi cũng đã thử một số gợi ý từ các câu trả lời, và điều tra thêm về những gì xảy ra. Thiết lập hiện tại của tôi (một tệp trình khởi chạy có Terminal=trueExec=matlab -desktop -nosplash &) biểu hiện hành vi sau:

  1. Tôi mở Dash bằng cách nhấn phím Windows trên máy tính xách tay của mình và tìm kiếm "matlab". Nó tìm thấy trình khởi chạy có tên "MATLAB R2011a". Tôi bấm vào nó.
  2. Một cửa sổ đầu cuối mở ra, sử dụng biểu tượng mà tôi đã đề cập trong tệp launcher. Gần như ngay lập tức, màn hình giật gân của MATLAB cũng mở ra, sử dụng cùng một biểu tượng (và do đó được nhóm với cửa sổ đầu cuối trong trình khởi chạy).
  3. Màn hình giật gân biến mất và, một trong những biểu tượng trong trình khởi chạy cũng vậy. Môi trường máy tính để bàn MATLAB mở ra, sử dụng một phiên bản khác của biểu tượng được hiển thị bên cạnh biểu tượng cho cửa sổ đầu cuối (không được nhóm với nó).

Tôi có thể khóa biểu tượng của cửa sổ đầu cuối vào trình khởi chạy và khởi động MATLAB thành công bằng cách nhấp vào nó, nhưng tôi cảm thấy không tối ưu khi tôi khởi động chương trình bằng một biểu tượng và chuyển sang biểu tượng khác. Tôi cũng đã thử như sau:

  • Execkhông có dấu và &trong lệnh launcher, nhưng nó không tạo ra sự khác biệt.
  • Thực hiện matlab -nosplashthủ công từ một thiết bị đầu cuối vẫn hiển thị màn hình giật gân. (Vậy thì, tùy chọn nosplash thực sự làm gì?)

Điều gì xảy ra khi bạn chạy matlabthủ công trong cửa sổ Terminal?
Eliah Kagan

@EliahKagan: Điều đó hoạt động hoàn toàn tốt. Nó dường như không quan trọng nếu tôi chạy matlabhoặc matlab -desktop, hoặc.
Tomas Aschan

Tôi có cùng một vấn đề với các biểu tượng. Tôi cũng đã cài đặt gói Ubuntu cho MATLAB từ repos. Tôi thấy thật kỳ lạ khi một khi bạn khởi động matlab, một biểu tượng khác được tạo và nếu bạn khóa biểu tượng mới vào trình khởi chạy, biểu tượng mới sẽ không mở matlab ...
Felipe

Câu trả lời:


14

Câu trả lời của Garrett gần như có tác dụng với tôi, nhưng thay vào đó tôi phải sử dụng

StartupWMClass=sun-awt-X11-XFramePeer

Điều này vẫn cung cấp thêm một biểu tượng trình khởi chạy trong khi màn hình giật gân hiển thị (vì WM_CLASS của màn hình spash chỉ là "MATLAB"), nhưng sau đó cửa sổ sẽ được nhóm chính xác dưới trình khởi chạy.

Các phiên bản mới của Matlab (bắt đầu bằng thiết bị đầu cuối hoặc Synapse hoặc từ một tty khác với export DISPLAY=:0) cũng được nhóm theo trình khởi chạy này và tùy chọn thoát của trình khởi chạy sẽ giết chết tất cả chúng.

Tôi tìm thấy giá trị WM_CLASS này bằng cách sử dụng

$ xprop WM_CLASS

và sau đó nhấp vào cửa sổ Matlab, một lệnh tôi nhận được từ Superuser .

Để ngăn biểu tượng trình khởi chạy bổ sung tạm thời, bạn cũng có thể thêm -nosplashcờ sau biểu tượng đó -desktop.

Vì vậy, ~/.local/share/applications/MATLAB.desktopngoại hình của tôi như thế này:

[Desktop Entry]
Version=1.0
Type=Application
Icon=matlab
Name=Matlab
Comment=Start MATLAB - The Language of Technical Computing
Exec=matlab -desktop -nosplash
Terminal=false
Categories=Development;
StartupNotify=true
StartupWMClass=sun-awt-X11-XFramePeer
X-Ayatana-Desktop-Shortcuts=New_Window;

Name[en_US]=MATLAB

[New_Window Shortcut Group]
Name=start a new MATLAB instance
Exec=matlab -desktop

Đây là trên Ubuntu 12.10, với Matlab R2012b


Điều này hoạt động chính xác như tôi muốn nó. Cảm ơn rất nhiều!
Tomas Aschan

2
tôi đã mở rộng câu trả lời của bạn một chút . giải thích ở đây
cừu bay

Không biết người khác lấy logo ở đâu nhưng điều này hoạt động:$ sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/pixmaps/matlab.png
Neil Traft

7

Điều đó thật kỳ quặc. matlab -desktopthực sự nên làm các mẹo.

Cách tiếp cận 1: xem có gì sai với launcher

Tôi có một biểu tượng MATLAB hoạt động trong thanh bên Unity của mình. Tôi có thể nhấp vào nó, nó duy trì biểu tượng chính xác và không mở thiết bị đầu cuối. Theo như tôi có thể thấy nó khá giống với mã của bạn, mặc dù:

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/usr/local/MATLAB/R2011b/bin/matlab -desktop
Name=MATLAB
Icon=/home/tomas/icons/Matlab_Logo.png

Đoạn mã trên nằm trong matlab.desktop, được đặt trong /usr/share/applications/. Sự khác biệt duy nhất tôi thấy có thể quan trọng là (i) Execđường dẫn, nhưng nếu bạn đã cài đặt các liên kết tượng trưng trong quá trình cài đặt MATLAB thì bạn sẽ hoạt động tốt và (ii) Tôi đang chạy MATLAB R2011b.

Giống như bạn, tôi đang chạy Ubuntu 12.04.

Trong trường hợp tôi bỏ lỡ điều gì đó, bạn có thể thử sử dụng mã của tôi để khởi động MATLAB, ai biết được, nó có thể hoạt động.

Cách tiếp cận 2: một cách giải quyết bẩn với thiết bị đầu cuối

Bạn đã đề cập đến việc nhập matlab -desktopvào các thiết bị đầu cuối hoạt động (tức là thêm Terminal=true). Tuy nhiên, điều đó cung cấp cho bạn hai màn hình được nhóm theo MATLAB.

Bạn có thể cố gắng khắc phục điều này bằng cách thay đổi cách bạn gọi quy trình. Chìa khóa ở đây sẽ là &biểu tượng dấu và . Những gì nó làm là thực thi mã trước đó, không chờ đợi nó kết thúc. Lý tưởng nhất là nó sẽ khởi động thiết bị đầu cuối, để thiết bị đầu cuối khởi động MATLAB và đóng ngay thiết bị đầu cuối, để MATLAB chạy. Điều gì xảy ra nếu bạn bắt đầu MATLAB từ thiết bị đầu cuối với ký hiệu và sau dòng, hoặc:

matlab -desktop &

Nếu điều đó hoạt động, bạn có thể thử (i) tạo một trình khởi chạy với Terminal=truevà mã ở trên hoặc (ii) tạo một trình khởi chạy đề cập đến một tập lệnh bash, lần lượt gọi mã trên.

Đối với bạn, Cách tiếp cận 1 không giúp được gì. Nếu Cách tiếp cận 2 không hoạt động hoặc có thể tốt để chơi xung quanh một chút, hãy xem những gì bạn có thể và không thể làm với các tập lệnh ampersand, terminal và bash. Tôi có khá nhiều ý tưởng hay, nhưng ai đó thông minh hơn tôi có thể giúp bạn thoát ra.


Tôi đã thử mã của bạn, nhưng không thành công. Ngoài ra, (i) Tôi đã cài đặt symlink trong khi cài đặt Matlab. (ii) Tất nhiên đó có thể là sự khác biệt quan trọng - thật không may, đây là giấy phép học tập và tôi R2011a là phiên bản mới nhất có sẵn cho tôi, vì vậy tôi không thể kiểm tra nó với R2011b = (
Tomas Aschan

Tôi chỉ chỉnh sửa bài viết của mình, thêm một ý tưởng khác. Hãy cho chúng tôi biết làm thế nào mà làm việc cho bạn.
Tomas

Cảm ơn! Tuy nhiên, nó không tạo ra nhiều sự khác biệt. Tôi dường như đã không rõ ràng về các triệu chứng của mình; vui lòng xem bản cập nhật OP để được giải thích rõ hơn.
Tomas Aschan

Aha, vì vậy bạn có thể bắt đầu MATLAB bằng trình khởi chạy mà bạn đã tạo. Đó chỉ là biểu tượng sai. Tôi sợ rằng nếu bạn sử dụng giải pháp đầu cuối được mô tả trong Cách tiếp cận 2, bạn sẽ không có được biểu tượng phù hợp. Tôi đã có cùng một vấn đề, nhưng có thể gọi MATLAB bằng cách sử dụng matlab -desktop(xem Cách tiếp cận 1). Đối với tôi, điều đó triệu tập MATLAB, với màn hình giật gân và biểu tượng chính xác cho giao diện chính. Nó được đặt dưới launcher bị khóa. Nếu bạn muốn có biểu tượng chính xác và không thể chạy MATLAB thông qua trình khởi chạy matlab -desktop, tôi không có ý tưởng. Sẽ cho bạn biết nếu tôi nghĩ ra bất cứ điều gì.
Tomas

Bạn thấy văn bản đó tương ứng với tệp .desktop như thế nào?
DBinJP

4

Tôi đã cài đặt tập tin / tập lệnh Cấu hình Matlab từ Trung tâm phần mềm. Nó liệt kê trình khởi chạy Matlab trong dấu gạch ngang và hoạt động hoàn hảo cho Matlab2011a trong Ubuntu 12.04. Nhưng nó không hoạt động từ launcher. Ý tôi là, nếu bạn khóa nó trên launcher và cố gắng khởi động nó từ đó thì nó sẽ không hoạt động, ít nhất là nó không hoạt động với tôi. Vì vậy, tôi phải bắt đầu nó từ dấu gạch ngang.

Để cài đặt cái này, hãy đến Trung tâm phần mềm Ubuntu , tìm kiếm Matlab , nó phải là cái đầu tiên trong danh sách (biểu tượng là logo Matlab). Chỉ cần cài đặt nó, và nó sẽ chăm sóc phần còn lại.


1
Mẹo tốt! Tuy nhiên, nó đi kèm với chính xác các vấn đề tương tự như trình khởi chạy tự tạo của tôi.
Tomas Aschan

thật tuyệt, cảm ơn @maqtanim! hoạt động như một cơ duyên đối với tôi (ubfox 12.10 amd64)
amc

Làm việc hoàn hảo cho tôi (Matlab R2013a ngày 12.10). Trước khi cài đặt, tôi thậm chí không có launcher. Liên kết với Trung tâm phần mềm: apt.ubfox.com/p/matlab-support
Tobold 15/03/13

3

Đây là những gì tôi đã làm để khiến mọi thứ hoạt động chính xác bắt đầu với bản cài đặt mới ( phiên bản R2010b trên Ubuntu 12.04 ).

  1. Cài đặt gói hỗ trợ MATLAB từ trung tâm phần mềm theo đề xuất . Hoặc bạn có thể sử dụng lệnh sau : sudo apt-get install matlab-support.

  2. Tạo một tệp .desktop cục bộ : gedit ~/.local/share/applications/matlab.desktop. Vì một số lý do, việc lưu nó trong / usr / share / ứng dụng khiến nó không hoạt động khi tôi đăng nhập lần đầu.

  3. Sao chép và Dán mã sau đây và lưu. Thay đổi quan trọng là dòng StartupWMClass .

    [Desktop Entry]
    Version=1.0
    Type=Application
    Icon=/usr/share/icons/matlab.png
    Name=Matlab
    Comment=Start MATLAB - The Language of Technical Computing
    Exec=matlab -desktop
    Terminal=false
    Categories=Development;
    StartupNotify=true
    StartupWMClass=com-mathworks-util-PostVMInit
    X-Ayatana-Desktop-Shortcuts=New_Window;
    
    [New_Window Shortcut Group]
    Name=New Matlab
    Exec=matlab -desktop
    
  4. Mở thư mục ứng dụng nơi bạn vừa lưu tệp matlab.desktop : nautilus ~/.local/share/applications.

  5. Kéo và thả tệp matlab.desktop vào trình khởi chạy thống nhất.


Điều này có vẻ thực sự hứa hẹn! Tuy nhiên, có nhiều việc tôi cần phải làm - sau khi thực hiện việc này, nhấp vào biểu tượng Matlab trong trình khởi chạy của tôi sẽ làm như sau: 1) một cửa sổ giật gân hiển thị, với biểu tượng trình khởi chạy riêng và biểu tượng tôi đã nhấp bắt đầu nhấp nháy (mờ dần và ngoài). 2) cửa sổ giật gân và biểu tượng của nó biến mất và biểu tượng trình khởi chạy tôi tiếp tục nhấp nháy. 3) Biểu tượng dừng nhấp nháy, và không có gì xảy ra.
Tomas Aschan

Tôi cũng đã đảm bảo rằng tệp matlab.desktop thuộc sở hữu của tôi (không phải root) và tất cả người dùng đã đọc và thực thi quyền.
Tomas Aschan

Tuy nhiên, nếu tôi khởi động Matlab từ thiết bị đầu cuối hoặc Guake, nó sẽ sử dụng biểu tượng tôi vừa đặt trong trình khởi chạy - vì vậy có gì đó đúng =)
Tomas Aschan

Màn hình giật gân sẽ tự hiển thị, nhưng sẽ biến mất. Điều này là do nó có một lớp khác với máy ảo Matlab (chương trình chính). Theo như không bắt đầu, tôi không chắc chắn. Đặc biệt là khi bạn nói nó bắt đầu trong thiết bị đầu cuối (Tôi giả sử sử dụng cùng một lệnh matlab -desktop)
Garrett Foster

Vâng, tôi sử dụng cùng một lệnh. matlab &cũng hoạt động mà không có vấn đề (tức là việc -desktopchuyển đổi là không cần thiết khi bắt đầu từ thiết bị đầu cuối).
Tomas Aschan

1

Tôi có thể đến đây hơi muộn, nhưng tôi đã quản lý để làm điều này bằng cách thêm một mục vào ứng dụng 'Menu chính'. Tôi đã liệt kê nó dưới dạng 'Ứng dụng' và sau đó cung cấp đường dẫn đầy đủ đến tệp thực thi trong thư mục MATLAB dưới dạng Lệnh.

Tôi cũng đã phải thêm cờ '-desktop' (không có dấu ngoặc kép). Ngoài ra, tôi cũng phải sử dụng cờ '-glnx86' khi tôi đang sử dụng Phiên bản sinh viên trên hệ thống 64 bit, nhưng điều đó cũng hoạt động tốt.

Sau đó tôi đã có được một biểu tượng từ trang web này .

Điều này sau đó có thể được đặt trong menu ứng dụng và kéo xuống trình khởi chạy. Điều duy nhất có một chút kỳ lạ là khi tôi nhấp vào nó, một biểu tượng MATLAB khác xuất hiện trong trình khởi chạy thay vì chỉ sử dụng biểu tượng đã có ở đó. Nếu bất cứ ai có thể tìm ra cách giải quyết điều này thì đó sẽ là điều tuyệt vời ... nhưng tôi có thể sống với nó như hiện tại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.