เรียกใช้โปรแกรมไวน์อย่างโปร่งใส


9

เมื่อฉันต้องการเรียกใช้โปรแกรมไวน์ฉันต้องพิมพ์เช่น

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

มันจะเป็นไปได้ที่จะเรียกใช้โดยตรงTextAloudMP3? ฉันหมายถึงไม่เพียง แต่จากบรรทัดคำสั่ง (ฉันสามารถสร้างนามแฝง) แต่ในสภาพแวดล้อมกราฟิกทั้งหมด dmenuฉันกับการเปิดตัวโปรแกรม

คำตอบ:


10

ฉันคิดว่าคุณตั้งใจจะเปิดโปรแกรม exe ด้วยไวน์โดยตรงดังนั้นบอกให้เคอร์เนลรัน win32 binaries with wine โดย

  1. เมานต์ binfmt fs เพิ่มบรรทัด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

ว้าว! ฉันไม่รู้ว่าเคอร์เนลสามารถทำเช่นนั้นได้ กรณีการใช้งานนี้โดยเฉพาะรู้สึกแย่ แต่ผมชอบว่าแม้เมื่อเปิดที่ประตูชื่อไฟล์ที่เป็นส่วนขยายไม่ได้ว่าในขณะที่ระบบปฏิบัติการอื่น ๆ ... : D
Bananguin

@xralf: คุณพยายามแก้ไขไฟล์อย่างไร echo ควรใช้งานได้ แต่บรรณาธิการ (ส่วนใหญ่ / ทั้งหมด?) อาจไม่ทำงานเนื่องจากไม่ใช่ไฟล์ที่แก้ไขได้จริงจึงเป็นเสมือนภายในระบบไฟล์ proc
chmeee

@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 ...textaloud จะไม่ปรากฏใน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
อาจต้องการเพิ่ม$@หลังจากชื่อโปรแกรมเพื่อให้ส่งผ่านอาร์กิวเมนต์ทั้งหมด และฉันมักจะใส่สคริปต์ดังกล่าวใน ~ / bin (หลังจากตรวจสอบให้แน่ใจว่ามันอยู่ใน PATH ของคุณแล้ว)
Wyatt8740

คุณไม่สามารถกำหนดนามแฝงได้ด้วย~/.bash_aliasesใช่ไหม
Aaron Franke

3

ขั้นตอนที่ 0

ตั้งค่าเส้นทางไบนารีสำหรับผู้ใช้ของคุณ เรียกใช้mkdir ~/binและเพิ่มไดเรกทอรีนี้ลงใน PATH ของคุณ

วิธีการทำอาจแตกต่างกันไปขึ้นอยู่กับสภาพแวดล้อมของเชลล์และเดสก์ท็อปที่คุณใช้

ที่นี่คุณสามารถพบวิธีการเปลี่ยนเส้นทางของคุณในความหลากหลายของเปลือกหอย

ตรวจสอบคำถามนี้ถ้าแก้ไขสภาพแวดล้อมเดสก์ทอปของคุณไม่สนใจเกี่ยวกับรายละเอียดเปลือกของคุณและอดีตทำงานจากสถานี แต่ไม่ได้มาจากสภาพแวดล้อมเดสก์ทอป

ขั้นตอนที่ 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เส้นทางที่โปรแกรมจะถูกเรียกใช้ (ซึ่งใน directory) บางโปรแกรมอาจต้องการให้คุณเรียกใช้ในไดเรกทอรีเฉพาะ หากคุณมีปัญหาในการตั้งค่าให้มีไดเรกทอรีนั้น (โดยปกติจะเป็นที่เดียวกับที่ตั้งของไฟล์ปฏิบัติการ) คุณอาจใช้บรรทัดนี้ในบางกรณี
  • execคำสั่งบอกทุบตีที่จะแปรเปลี่ยนเป็นไวน์ที่มีการขัดแย้งต่อไปดังนั้นนี่คือไม่มีทุบตีทำงานอีกต่อไปไวน์ แต่กระบวนการทุบตีกลายเป็นไวน์ PID ยังคงอยู่ คุณไม่ได้มีสองกระบวนการทำงาน
  • $@ถูกแทนที่มีข้อโต้แย้งที่คุณวิ่งสคริปต์ในกรณีใด ๆ ดังนั้นสิ่งเหล่านี้จะถูกส่งผ่านไปยังโปรแกรมไวน์ของคุณ

ตอนนี้คุณสามารถรันโปรแกรมจากเชลล์อย่าง ...

textaloud

ขั้นตอนที่ 2

สร้างตัวเรียกใช้งานแอปพลิเคชัน ทุกวันนี้ไฟล์เหล่านี้แยกออกจากกันเป็น.desktopไฟล์และสภาพแวดล้อมบนเดสก์ท็อปจำนวนมากมีเครื่องมือกราฟิกในการสร้าง

นี่คือตัวอย่างโครงกระดูกที่คุณสามารถใช้เขียนมันเอง คุณอาจต้องการระบุไอคอน (มักจะเป็น PNG, SVG หรือ XPM)

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

~/.local/share/applications/TextAloud.desktopวางแฟ้มนี้ใน ไอคอนที่จะค้นหา (ในสถานที่อื่น ๆ ) ในเพื่อให้แน่ใจว่าคุณจะพบกับไอคอนน่ารักสำหรับโปรแกรมประยุกต์ของคุณและวางไว้ที่นั่นด้วยชื่อ~/.local/share/iconstextaloud.png

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


ขอบคุณฉันลองใช้แนวทางของคุณแล้ว แต่ขั้นตอนสุดท้ายไม่ได้ผล ฉันไม่สามารถมองเห็นtextaloudในdmenuตัวเปิด
xralf

ขั้นตอนที่ 2 ถูกนำไปยังเดสก์ท็อปอย่าง GNOME, KDE หรือ XFCE ดูเหมือนว่า dmenu จะไม่สนใจไฟล์. เดสก์ท็อปดังนั้นด้วยขั้นตอนที่ 1 คุณควรจะปรับ ใช้งานได้จากเทอร์มินัลหรือไม่ หากยังใช้งานได้ แต่ยังใช้งานไม่ได้ให้ทบทวนขั้นตอนที่ 0 คุณอาจใช้~/.xsessionเพื่อรับ X11 sesion ของคุณหรือไม่ ลองเพิ่มที่นั่นexport PATH="$HOME/bin:$PATH"ก่อนบรรทัดที่คุณใช้เพื่อรัน dwm และรีสตาร์ท X11
Alicia

ในการทำงานจากสถานีโดยไม่มีปัญหา เส้นทางตกลง เฉพาะคำถามที่จะทำให้สมบูรณ์ฉันต้องการทำงานจาก dmenu
xralf

ฉันบอกคุณ. คุณมี~/.xsession? ระวังเส้นทางของเทอร์มินัลของคุณอาจไม่เท่ากับ PATH ของเซสชั่น X11 ของคุณ
Alicia

$@ควรอยู่ในเครื่องหมายคำพูดคู่เพื่อความปลอดภัย exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@"ดังนั้นมันจะกลายเป็น
Wyatt8740

1

คุณลองใช้ PlayOnLinux แล้วหรือยัง? มันสามารถดูแลเรื่องทั้งหมดให้คุณได้และแม้กระทั่งคุณสามารถกำหนดค่าไฟล์บางประเภทที่จะเปิดโดยโปรแกรมไวน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.