मैं .desktop फ़ाइलों को निष्पादित करने के लिए डिफ़ॉल्ट टर्मिनल कैसे बदलूं?

May 11 2020

मैं डिफ़ॉल्ट रूप में alacritty के साथ विम निष्पादित करने की कोशिश कर रहा हूँ। मेरे पास पहले से ही मेरे डिफ़ॉल्ट टर्मिनल एमुलेटर के रूप में अलैक्रिटिक सेट है, और मेरे vim.desktop में मैं बदल exec=vim %Fगया exec=alacritty -e vim %F। समस्या यह है कि जब मैं एक फाइल खोलता हूं तो यह पहली बार gnome टर्मिनल में कमांड निष्पादित करता है और फिर alacritty में विम लॉन्च करता है, बात यह है कि gnome टर्मिनल खुला रहता है। मैंने एक स्क्रिप्ट बनाने की भी कोशिश की है:

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

यह बिल्कुल काम नहीं करता है। मुझे नहीं पता कि मुझे और क्या करना है और मुझे ऑनलाइन कुछ भी नहीं चाहिए। अग्रिम में धन्यवाद!

क्या Exec=कमांड चलाने वाले डिफ़ॉल्ट टर्मिनल को बदलना संभव है ? इतना है कि सिर्फ लिखने से Exec=vim %Fयह क्षार में चला जाएगा

जवाब

4 Wonky May 11 2020 at 14:05

muru ने मुझे स्पष्ट करने में मदद की कि क्या चल रहा है, धन्यवाद! समस्या यह थी कि मेरी .desktop फ़ाइल:

[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++;

तर्क था Terminal=true। यह क्या करता है कि यह Exec=एक टर्मिनल में कमांड निष्पादित करता है , ऐसा करने के लिए एक टर्मिनल खोल रहा है। यदि आप इसे सेट करते हैं तो Terminal=falseयह किसी भी टर्मिनल को खोलने से रोकेगा और यह टर्मिनल को खोले बिना कमांड को निष्पादित करेगा।

OliverLew Jun 29 2020 at 16:31

संपादित करें: यह कभी-कभी काम नहीं करता है, मुझे नहीं पता है कि जब आप vim खोलते हैं तो टर्मिनल एमुलेटर का उपयोग क्या नियंत्रित करता है।

मैंने इस समस्या के लिए बस एक और काम किया है: अपने स्वयं के टर्मिनल एमुलेटर xtermमें अपने नाम का एक सिमलिंक बनाएं $PATH। मैं हालांकि हर किसी के लिए इस काम की गारंटी नहीं दे सकता।

इस कार्य के आसपास का लाभ यह है कि आपको किसी भी डेस्कटॉप प्रविष्टि फ़ाइलों को बदलने की आवश्यकता नहीं है। सभी .desktop Terminal=trueनए टर्मिनल एमुलेटर का उपयोग करेंगे।


जब डेस्कटॉप प्रविष्टि exo-open( xdg-openxfce के समान ) से निष्पादित करने का प्रयास किया जाता है, तो एक चेतावनी संदेश होता है

sh: line 0: exec: xterm: not found

इसलिए मुझे लगता xtermहै कि .desktop फ़ाइलों को खोलने के लिए प्रोग्राम में हार्ड-कोडित है। फिर मैंने इस सिम्कलिन को बनाने की कोशिश की

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

और यह पूरी तरह से काम करता है।

हालाँकि, वास्तविक कमांड को संभवत: xtermतर्क पर आधारित किया गया है, इसलिए केवल टर्मिनल एमुलेटर जो स्टार्ट-अप कमांड कार्यों को निर्दिष्ट करने के लिए उसी तर्क का उपयोग करते हैं। एक काउंटर उदाहरण है termite, क्योंकि इसमें -eविकल्प में पूरे कमांड को उद्धृत करने की आवश्यकता होती है ।