วิธีส่งไฟล์เป็นอาร์กิวเมนต์ในไฟล์. desktop สำหรับแอปพลิเคชันไวน์


11

ฉันอยากถามคำถามสองข้อจริง:

  1. ฉันจะหาข้อมูลเพิ่มเติมเกี่ยวกับทางลัดอาร์กิวเมนต์ / พารามิเตอร์ที่มีอยู่สำหรับรายการ Exec ในไฟล์เดสก์ท็อปได้อย่างไร (เช่น% U,% u,% f ... )

  2. คำถามหลักวิธีส่งไฟล์เป็นอาร์กิวเมนต์ใน .desktop launcher สำหรับแอปพลิเคชันไวน์

ฉันพบการค้นหาคำแนะนำที่นี่: z:%fซึ่งไม่มีประโยชน์สำหรับฉันราวกับว่าฉันเพียงแค่เรียกใช้ไฟล์. เดสก์ท็อปโดยไม่ผ่านไฟล์บนมันจะถือว่าอาร์กิวเมนต์นั้นเป็นz:และเริ่มการสแกนz:"ไดรฟ์"


ตัวอย่าง:

[Desktop Entry]
Name=Some Windows program
Exec=wine "program.exe" z:%f
Type=Application
Terminal=false
MimeType=application/docbook+xml

ฉันต้องการวางไฟล์ XML บน launcher .toptop แบบกำหนดเองของฉันสำหรับแอปพลิเคชันไวน์นี้และฉันก็ทำได้ด้วยวิธีนี้ ปัญหาคือถ้าฉันคลิกที่ไอคอนตัวเรียกใช้เพื่อเรียกใช้โปรแกรมนี้อาร์กิวเมนต์z:จะถูกส่งผ่านเสมอและไม่ยอมรับ


คุณพยายามทำ btw อะไร? คุณสามารถเพิ่มตัวอย่างได้หรือไม่
Bruno Pereira

เฮ้บรูโน;) ฉันคิดว่ามันชัดเจน - ฉันสร้างไฟล์บนเดสก์ท็อป (จุดประสงค์ - ตัวเรียกใช้) สำหรับแอปพลิเคชันไวน์และฉันต้องการให้สามารถส่งไฟล์ได้ z:%fวิธีแก้ปัญหาข้างต้นไม่ดีเท่าที่ฉันเปิดตัวอาร์กิวเมนต์แอปพลิเคชั่นไวน์z:นี้ผ่านไปแล้วและฉันต้องการหลีกเลี่ยงปัญหานั้น
zetah

ดังนั้นคุณมีโปรแกรม windows ชื่อ (เช่น) application.exeที่คุณต้องการส่งไฟล์ที่เลือกในปัจจุบันใน nautilus ไปfile.txtหรือไม่
Bruno Pereira

ขออภัยฉันควรเพิ่มตัวอย่างในโพสต์แรกของฉัน ฉันเพิ่มตอนนี้
zetah

ฉันได้ดูรอบนี้จนถึงขณะนี้และตัวเลือกอื่นเท่านั้นสำหรับนี้คือสคริปต์ที่อยู่ในexecบรรทัดที่ตรวจสอบ%fถ้ามีอยู่เปิดโปรแกรมประยุกต์บนไฟล์ถ้าไม่เพียงแค่เปิดโปรแกรม สนใจหรือไม่มันเป็นตัวเลือก?
Bruno Pereira

คำตอบ:


8

นี่เป็นสิ่งที่ดีที่สุดที่ฉันทำได้ (ตัวอย่างเช่น Notepad)

[Desktop Entry]
Name=Notepad
Exec=sh -c "echo %f | sed 's/^\//z:\//' | xargs wine /home/zetah/.wine/drive_c/windows/notepad.exe"
Type=Application
Terminal=false
Categories=Wine
MimeType=text/plain

ฉันคาดหวังคำตอบที่ดีกว่าเพราะฉันเพิ่งเริ่มต้น


ดูการปรับปรุงด้านล่างของฉันสำหรับการส่งหลายไฟล์
ฮาร์วีย์


1

การปรับปรุงคำตอบของ zetah สิ่งนี้ใช้ได้สำหรับการส่งหลายไฟล์ไปยังโปรแกรม % f ถูกเปลี่ยนเป็น% F (ตัวพิมพ์ใหญ่) เพื่อส่งไฟล์ทั้งหมดที่ลดลงแทนที่ ^ (สำหรับจุดเริ่มต้นของบรรทัด) ด้วยชื่อพา ธ มากพอที่จะทำให้มีความเป็นเอกลักษณ์มากขึ้น 'g' ที่ส่วนท้าย ของคำสั่ง sed ที่จะทำให้การแทนที่ทำซ้ำสำหรับไฟล์ทั้งหมดที่ผ่านไปและสุดท้ายคือ $ แทน / ดังนั้นอักขระ \ escape จึงไม่จำเป็น

Exec=sh -c "echo %F | sed 's$/home$z:/home$g' | xargs wine /home/owner/.wine/dosdevices/c:/Progs/Boxer/b.exe"

ฉันยังย้ายโปรแกรมที่จะดำเนินการไปยังพา ธ ที่ชื่อพา ธ ไม่มีช่องว่างดังนั้นฉันจึงย้ายตัวแก้ไขบ็อกเซอร์ของฉันจาก:

/home/owner/.wine/dosdevices/c:/Program Files/Boxer Text Editor/

ถึง:

/home/owner/.wine/dosdevices/c:/Progs/Boxer/

1

มีคำตอบแฮ็คมากมายที่โพสต์ในกระทู้นี้ นี่คือทางออกที่ดีกว่าที่เกี่ยวกับไฟล์หลายไฟล์และมีช่องว่างในชื่อไฟล์

สร้างไฟล์ .desktop ตามปกติและใช้บรรทัด Exec นี้:

Exec=/usr/bin/env bash -c "printf 'z:%%q\\n' %F | WINEPREFIX='/home/<your username>/.wine' xargs wine 'C:\\Path\\to the executable\\app.exe'"

แก้ไข : หากแอปพลิเคชันของคุณสามารถจัดการไฟล์หลายไฟล์ในอินสแตนซ์เดียว (ตัวอย่างเช่นโปรแกรมดู PDF แบบหลายแท็บ) และคุณต้องการให้อินสแตนซ์ปัจจุบันเป็นออโต้โฟกัสเมื่อใดก็ตามที่คุณเปิดไฟล์ใหม่จากนั้นคุณต้องทำดังนี้

  • เพิ่มบรรทัดนี้ไปยังไฟล์ .desktop: StartupWMClass=app.exe

  • ใช้คำสั่ง Exec นี้:

    Exec=/usr/bin/env bash -c "(printf 'z:%%q\\n' %F | WINEPREFIX='/home/<your username>/.wine' xargs wine 'C:\\Path\\to the executable\\app.exe' &); xdotool windowactivate \$(xdotool search --sync --onlyvisible --class \"app.exe\")"
    

1

บรรทัด Exec พร้อมไพพ์ของwinepathถึง xargs ใช้กับการอ้างอิงที่เหมาะสมและตัวเลือก -0 ของพวกเขาทำงานได้อย่างไม่มีที่ติใน Ubuntu 14.04 สำหรับการเปิดไฟล์เดี่ยวและหลายไฟล์

Exec=/usr/bin/env sh -c "winepath -w -0 %F | WINEPREFIX='/home/your_user_name/.wine' xargs -0 wine 'C:\\\\Program Files\\\\Some Vendor\\\\SomeProgram.exe'"

0

นี่เป็นวิธีที่ใช้งานได้กับฉันในกล่อง RHEL 6.3 หลังจากการลองผิดลองถูกและอ่านข้อกำหนดรายการเดสก์ท็อป มันไม่ได้เฉพาะเจาะจงกับไวน์ที่มีข้อโต้แย้ง Exec=wine \"filename.exe\"แต่มันควรจะทำงานกับสิ่งที่ต้องการ

หวังว่ามันจะช่วยใครซักคนเพราะมันทำให้ฉันต้องค้นหาเพื่อให้มันใช้งานได้

ฉันคิดว่าคุณต้องใช้เครื่องหมายคำพูดคู่และหลบหนีรวมถึงอักขระพิเศษใด ๆ ที่ใช้แบ็กสแลช

[Desktop Entry]
Version=1.0
Name=Ansys User Lic Prefs 12.1
GenericName=Ansys User Lic Prefs 12.1
Comment=Ansys User License Prefs 12.1
Encoding=UTF-8
Exec=anslic_admin \"\-userprefs121\"
Icon=ansysLogo_16x16.png
Terminal=false
Type=Application
Categories=Ansys;

0

ฉันเพิ่งเขียนสคริปต์ Pythonขนาดเล็กที่แปลงเส้นทาง Unix ในรูปแบบ Wine path

ดาวน์โหลดzip , แตกwine-launcher.pyลงในโฮมโฟลเดอร์ของคุณและแก้ไขไฟล์ .desktop แบบนี้:

Exec=python ~/wine-launcher.py "program.exe" %F
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.