पारदर्शी रूप से शराब कार्यक्रम चलाएं


9

जब मैं वाइन प्रोग्राम चलाना चाहता हूं तो मुझे ईजी टाइप करना होगा

$ wine ~/.wine/drive_c/Program\ Files/TextAloud/TextAloudMP3.exe

क्या इसे सीधे चलाना संभव होगा TextAloudMP3? मेरा मतलब केवल कमांड लाइन से नहीं है (मैं उपनाम बना सकता हूं) बल्कि पूरे ग्राफिकल वातावरण में। के साथ कार्यक्रम शुरू कर रहा हूं dmenu

जवाबों:


10

मुझे लगता है कि आप वाइन के साथ एक्सई कार्यक्रमों को सीधे लॉन्च करना चाहते हैं, इसलिए वाइन के साथ वाइन 32 बायनेरी चलाने के लिए कर्नेल को बताएं,

  1. माउंट बीएनएफएमटी एफएस, none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0/ etc / fstab में एक पंक्ति जोड़ें और mount -aबाद में निष्पादित करें

  2. echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register द्विआधारी प्रारूप को पंजीकृत करने के लिए

इसलिए बाद में, आप केवल exe फ़ाइल को चलाते हैं /path/to/XX.exe

ध्यान दें कि यह एक सुरक्षा समस्या भी पेश करता है।


मैं संपादित नहीं कर सकता /proc/sys/fs/binfmt_misc/register। यह लिखता है /proc/sys/fs/binfmt_misc/register E667: Fsync failed। मैंने उपयोगकर्ता sudoअकाउन्ट के साथ और रूट खाते के तहत भी संपादित करने की कोशिश की । दोनों इस त्रुटि को लिखते हैं।
xralf

वाह! मुझे पता नहीं था कि कर्नेल ऐसा कर सकता है। यह विशेष रूप से उपयोग के मामले को हालांकि बुराई लगता है। लेकिन मुझे यह पसंद है कि उस दरवाजे को खोलने पर भी , फ़ाइल नाम, वह एक्सटेंशन है, इससे कोई फर्क नहीं पड़ता, जबकि अन्य OSes ...: D
Bananguin

@xralf: आप फ़ाइल को कैसे संपादित कर रहे हैं? इको को काम करना चाहिए, लेकिन कुछ (अधिकांश / सभी?) संपादक काम नहीं कर सकते हैं, क्योंकि यह एक वास्तविक संपादन योग्य फ़ाइल नहीं है, यह proc फाइल सिस्टम के भीतर आभासी है।
चमीए

@xralf vim
daisy

@ warl0ck मुझे इसे rootखाते में करना होगा । मैंने /path/to/अपने $PATHवैरिएबल में जोड़ा और मैं XX.exeकमांड लाइन से चला सकता हूं लेकिन फिर भी इसे नहीं चला सकता dmenu। क्षमा करें, मैंने इसे xmobarप्रश्न में गलत माना है ।
xralf

3

सुनिश्चित करें कि wineहै अपने रास्ते में और निम्न युक्त एक खोल स्क्रिप्ट बनाने के लिए:

#!/bin/sh
wine "$HOME/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe"

स्क्रिप्ट चलाकर अपने आप को निष्पादित करने की अनुमति दें chmod u+x SCRIPT_NAME

फिर, अपने फ़ाइल प्रबंधक से बस उस स्क्रिप्ट को चलाएं। यह वाइन शुरू करेगा, जो TextAloudMP3.exe चलेगा।


मैं नामित कोई स्क्रिप्ट बनाने textaloudमें /usr/local/binफ़ोल्डर। पहली पंक्ति #! /bin/bashदूसरी पंक्ति है wine ...xmobarलांचर में टेक्स्टालॉड दिखाई नहीं देगा । sh textaloudइसे चलाते समय लिखते हैं$ sh textaloud wine: cannot find '~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe'
xralf

उफ़। ~जब यह दोहरे उद्धरण चिह्नों के भीतर होता है, तो उपयोगकर्ता के होम डायरेक्टरी में विस्तार नहीं करता है। मैंने $HOMEइसके बजाय पर्यावरण चर का उपयोग करने के लिए अपना उत्तर संशोधित किया है ।

sh textaloudपहले से ही काम करता है, लेकिन केवल निर्देशिका से /usr/local/binऔर यह अभी भी xmobar लांचर में दिखाई नहीं देता है।
xralf

1
$@प्रोग्राम के नाम के बाद जोड़ना चाह सकते हैं ताकि यह सभी तर्कों को पारित कर दे। और मैं आमतौर पर ~ / बिन में ऐसी स्क्रिप्ट लगाता हूं (यह सुनिश्चित करने के बाद कि यह आपके पेट में है, बिल्कुल)।
व्याट8740

क्या आप भी एक उपनाम को परिभाषित नहीं कर सकते ~/.bash_aliases?
आरोन फ्रेंके

3

चरण ०

अपने उपयोगकर्ता के लिए एक बाइनरी पैथ सेट करें। चलाएँ mkdir ~/binऔर इस निर्देशिका को अपने पथ में जोड़ें।

यह कैसे किया जाता है यह आपके द्वारा उपयोग किए जाने वाले शेल और डेस्कटॉप वातावरण के आधार पर भिन्न हो सकता है।

यहां आप पा सकते हैं कि विभिन्न प्रकार के गोले में अपने पैट को कैसे बदल सकते हैं

यदि आपका डेस्कटॉप वातावरण आपके शेल प्रोफ़ाइल की परवाह नहीं करता है और पूर्व टर्मिनल से काम करता है, लेकिन डेस्कटॉप वातावरण से नहीं, तो इस हल किए गए प्रश्न को देखें

चरण 1

एक बार जब आप अपने पथ और अपने डेस्कटॉप वातावरण को एक नए PATH का सम्मान करने के लिए सेट कर लेते हैं, तो आप स्क्रिप्ट को वहीं छोड़ सकते हैं और उन्हें अपने पथ को टाइप किए बिना नियमित कमांड के रूप में चला सकते हैं।

इस निर्देशिका में अपना वाइन प्रोग्राम चलाने के लिए एक छोटी शेल स्क्रिप्ट बनाएं, अर्थात ~/bin/textaloud:

#!/bin/bash
cd "~/.wine/drive_c"
exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@"

और इसे निष्पादित करने की अनुमति दें।

chmod +x ~/bin/textaloud

उपरोक्त लिपि के बारे में तीन बातें ध्यान देने योग्य हैं:

  • cdपथ जहाँ कार्यक्रम चलाया जा रहा है (जो निर्देशिका में) है। कुछ कार्यक्रमों के लिए आपको एक विशिष्ट निर्देशिका पर उन्हें चलाने की आवश्यकता हो सकती है। यदि आपको इससे परेशानी है, तो उस निर्देशिका को सेट करें (आमतौर पर वही जहां निष्पादन योग्य स्थित है)। आप कुछ मामलों में इस लाइन को अनसुना कर सकते हैं।
  • execआदेश, निम्नलिखित तर्क के साथ शराब में रूप के लिए बैश बताएं, ताकि यह अब बैश शराब चल रहा है, लेकिन बैश प्रक्रिया शराब बन गया। पीआईडी ​​बनी हुई है। आपके पास दो प्रक्रियाएँ नहीं हैं।
  • आपके $@द्वारा स्क्रिप्ट चलाने वाले तर्कों के साथ प्रतिस्थापित किया जाता है, यदि कोई हो। तो उन लोगों को आपके शराब कार्यक्रम में पारित किया जाता है।

अब आप अपने प्रोग्राम को शेल की तरह चला सकते हैं ...

textaloud

चरण 2

एप्लिकेशन लॉन्चर बनाएं। आजकल इन फाइलों को .desktopफाइलों के रूप में रखा जाता है और कई डेस्कटॉप वातावरण उन्हें बनाने के लिए चित्रमय उपकरण प्रदान करते हैं।

यहाँ एक उदाहरण कंकाल है जिसे आप स्वयं लिखने के लिए उपयोग कर सकते हैं। आप एक आइकन (अक्सर पीएनजी, एसवीजी या एक्सपीएम में) प्रदान करना चाह सकते हैं।

[Desktop Entry]
Type=Application
Name=TextAloud
Exec=textaloud
Icon=textaloud.png

इस फाइल को अंदर रखें ~/.local/share/applications/TextAloud.desktop। में (अन्य स्थानों के बीच) चिह्न खोजे जाते हैं ~/.local/share/icons, इसलिए अपने आवेदन के लिए एक प्यारा आइकन खोजना सुनिश्चित करें और इसे नाम के साथ वहां रखें textaloud.png

एक बार जब आप ऐसा कर लेते हैं, तो आपके डेस्कटॉप वातावरण को आपकी शॉर्टकट फ़ाइल मिलनी चाहिए और स्क्रिप्ट के साथ प्रोग्राम चलाने में सक्षम होना चाहिए। यदि नहीं, तो इसे पुनः लोड या पुनरारंभ करें।


धन्यवाद, मैंने आपका मार्गदर्शन करने की कोशिश की लेकिन अंतिम चरण काम नहीं करता है। मैं लांचर textaloudमें नहीं देख सकता dmenu
xralf

चरण 2 को GNOME, KDE या XFCE जैसे डेस्कटॉप पर निर्देशित किया जाता है। dmenu .desktop फ़ाइलों के बारे में परवाह नहीं करता है, इसलिए चरण 1 के साथ आपको ठीक होना चाहिए। क्या यह टर्मिनल से काम करता है? यदि यह किया गया था, लेकिन अभी भी काम नहीं करता है, तो चरण 0. की समीक्षा करें। हो सकता है कि आप ~/.xsessionअपने एक्स 11 सेशन प्राप्त करने के लिए उपयोग कर रहे हों ? export PATH="$HOME/bin:$PATH"Dwm चलाने और X11 को पुनरारंभ करने के लिए आपके द्वारा उपयोग की जाने वाली लाइन से पहले वहां जोड़ने का प्रयास करें ।
एलिसिया

समस्याओं के बिना टर्मिनल से काम करता है। पथ ठीक है। केवल सवाल पूरा होने के लिए मैं इसे dmenu से काम करना चाहूंगा।
xralf

मैंने तुमसे कहा है। क्या आपके पास है ~/.xsession? ध्यान रखें कि आपके टर्मिनल का पथ आपके X11 सत्र के पथ के बराबर नहीं हो सकता है।
एलिसिया

$@सुरक्षा के लिए दोहरे उद्धरण चिह्नों में होना चाहिए। तो यह बन जाएगा exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@"
व्याट8740

1

क्या आपने PlayOnLinux की कोशिश करने पर विचार किया है? यह आपके लिए पूरी बात का ख्याल रख सकता है और यहां तक ​​कि आप वाइन कार्यक्रमों द्वारा खोले जाने के लिए कुछ फाइलपेट को कॉन्फ़िगर कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.