Làm cách nào để thay đổi thiết bị đầu cuối mặc định để thực thi các tệp .desktop?

May 11 2020

Tôi đã cố gắng thực thi vim với alacritty làm mặc định. Tôi đã đặt alacritty làm trình mô phỏng thiết bị đầu cuối mặc định của mình và trong vim.desktop, tôi đã thay đổi exec=vim %Fbằng exec=alacritty -e vim %F. Vấn đề là khi tôi mở một tệp, nó thực hiện lệnh đầu tiên trong thiết bị đầu cuối gnome và sau đó khởi chạy vim trong alacritty, vấn đề là thiết bị đầu cuối gnome vẫn mở. Tôi cũng đã thử tạo một tập lệnh:

#!/bin/bash
alacritty -e vim & disown | exit

điều này không hoạt động ở tất cả. Tôi không biết phải làm gì khác và tôi không thể tìm thấy bất cứ điều gì trực tuyến. Cảm ơn trước!

Có thể thay đổi thiết bị đầu cuối mặc định chạy Exec=lệnh không? để chỉ bằng cách viết Exec=vim %Fsẽ chạy nó một cách an toàn

Trả lời

4 Wonky May 11 2020 at 14:05

Muru đã giúp tôi làm rõ những gì đang xảy ra, cảm ơn bạn! Vấn đề là tệp .desktop của tôi:

[Desktop Entry]
Name=Vim
GenericName=Text Editor
Comment=Edit text files
Comment[es]=Edita archivos de texto
TryExec=vim
Exec=alacritty -e vim %F
Terminal=true
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

Đã có đối số Terminal=true. Điều này làm là nó thực hiện Exec=lệnh trong một thiết bị đầu cuối, mở một thiết bị đầu cuối để thực hiện điều đó. Nếu bạn thiết lập Terminal=falseđiều này sẽ ngăn không cho bất kỳ thiết bị đầu cuối nào mở và nó sẽ chỉ thực hiện lệnh mà không cần mở thiết bị đầu cuối.

OliverLew Jun 29 2020 at 16:31

Chỉnh sửa: điều này đôi khi không hoạt động, tôi không biết điều gì đang kiểm soát trình giả lập thiết bị đầu cuối được sử dụng khi bạn mở vim.

Tôi vừa tìm thấy một giải pháp khác cho vấn đề này: tạo một liên kết tượng trưng có tên xtermtrong $PATHtrình mô phỏng thiết bị đầu cuối của bạn với riêng bạn. Tôi không thể đảm bảo điều này hoạt động cho tất cả mọi người.

Ưu điểm của công việc này là bạn không cần phải thay đổi bất kỳ tệp mục nhập máy tính nào. Tất cả .desktop với Terminal=truesẽ sử dụng trình giả lập đầu cuối mới.


Khi cố gắng thực thi một mục trên máy tính để bàn với exo-open(tương tự như xdg-open, từ xfce), có một thông báo cảnh báo

sh: line 0: exec: xterm: not found

Vì vậy, tôi đoán xtermđược mã hóa cứng trong chương trình để mở tệp .desktop. Sau đó, tôi đã cố gắng tạo liên kết biểu tượng này

ln -s /usr/bin/st ~/.local/bin/xterm

và nó hoạt động hoàn hảo.

Tuy nhiên, lệnh thực sự được tạo ra có thể dựa trên xtermcác đối số của ', vì vậy chỉ các trình giả lập đầu cuối sử dụng cùng một đối số để chỉ định lệnh khởi động mới hoạt động. Một ví dụ về bộ đếm là termite, vì nó yêu cầu toàn bộ lệnh phải được trích dẫn trong -etùy chọn.