Jalankan program anggur secara transparan


9

Ketika saya ingin menjalankan program anggur saya harus mengetik misalnya

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

Apakah mungkin dijalankan secara langsung TextAloudMP3? Maksud saya tidak hanya dari baris perintah (saya bisa membuat alias) tetapi di seluruh lingkungan grafis. Saya meluncurkan program dengan dmenu.

Jawaban:


10

Saya kira Anda bermaksud untuk meluncurkan program exe dengan anggur secara langsung, jadi beri tahu kernel untuk menjalankan win32 binari dengan anggur,

  1. Mount binfmt fs, tambahkan baris none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0ke / etc / fstab dan jalankan mount -asesudahnya

  2. echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register untuk mendaftarkan format biner

Jadi nanti, Anda cukup menjalankan file exe dengan /path/to/XX.exe

Perhatikan bahwa ini juga menimbulkan masalah keamanan.


Saya tidak bisa mengedit /proc/sys/fs/binfmt_misc/register. Itu menulis /proc/sys/fs/binfmt_misc/register E667: Fsync failed. Saya mencoba mengedit di bawah akun pengguna dengan sudodan di bawah akun root juga. Keduanya menulis kesalahan ini.
xralf

Wow! Saya tidak tahu kernel bisa melakukan itu. Kasus penggunaan khusus ini terasa jahat. Tapi saya seperti itu bahkan ketika membuka itu pintu, nama file, yaitu ekstensi, tidak peduli, sedangkan OS lainnya ...: D
Bananguin

@xralf: Bagaimana Anda mencoba mengedit file? gema harus bekerja, tetapi beberapa editor (sebagian besar / semua?) mungkin tidak berfungsi, karena itu bukan file yang dapat diedit, itu virtual dalam sistem file proc.
chmeee

@xralf jangan diedit dengan vim
daisy

@ warl0ck saya harus melakukannya dengan rootakun. Saya menambahkan /path/to/ke $PATHvariabel saya dan saya dapat menjalankan XX.exedari baris perintah tetapi masih tidak dapat menjalankannya dari dmenu. Maaf saya salah mengartikannya xmobardalam pertanyaan.
xralf

3

Pastikan wineada di jalur Anda dan buat skrip shell yang berisi berikut ini:

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

Beri diri Anda izin untuk menjalankan skrip dengan menjalankan chmod u+x SCRIPT_NAME.

Kemudian, jalankan skrip itu dari manajer file Anda. Ini akan memulai anggur, yang akan menjalankan TextAloudMP3.exe.


Saya membuat skrip bernama textalouddalam /usr/local/binfolder. Baris pertama adalah #! /bin/bashbaris kedua wine .... textaloud tidak akan muncul di xmobarpeluncur. Saat menjalankannya sh textaloudmenulis$ sh textaloud wine: cannot find '~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe'
xralf

Ups. ~tidak memperluas ke direktori home pengguna ketika berada dalam tanda kutip ganda. Saya telah memodifikasi jawaban saya untuk menggunakan variabel lingkungan $HOMEsebagai gantinya.

sh textaloudsudah berfungsi, tetapi hanya dari direktori /usr/local/bindan itu masih tidak terlihat di xmobar launcher.
xralf

1
mungkin ingin menambahkan $@setelah nama program sehingga melewati semua argumen. Dan saya biasanya meletakkan skrip seperti itu di ~ / bin (setelah memastikan itu ada di PATH Anda, tentu saja).
Wyatt8740

Tidak bisakah Anda juga mendefinisikan alias di ~/.bash_aliases?
Aaron Franke

3

Langkah 0

Tetapkan PATH biner untuk pengguna Anda. Jalankan mkdir ~/bindan tambahkan direktori ini ke PATH Anda.

Cara ini dilakukan dapat bervariasi tergantung pada shell dan lingkungan desktop yang Anda gunakan.

Di sini Anda dapat menemukan cara mengubah PATH Anda dalam berbagai kerang .

Periksa pertanyaan yang dipecahkan ini jika lingkungan desktop Anda tidak peduli dengan profil shell Anda dan yang pertama tidak bekerja dari terminal tetapi tidak dari lingkungan desktop .

Langkah 1

Setelah Anda mengatur shell dan lingkungan desktop Anda untuk menghormati PATH baru, Anda dapat meletakkan skrip di sana dan menjalankannya sebagai perintah biasa tanpa mengetikkan path mereka.

Buat skrip shell pendek untuk menjalankan program anggur Anda di direktori ini, yaitu ~/bin/textaloud:

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

Dan berikan izin eksekusi.

chmod +x ~/bin/textaloud

Ada tiga hal yang perlu diperhatikan tentang skrip di atas:

  • The cdpath adalah di mana program ini akan dijalankan (di mana direktori). Beberapa program mungkin mengharuskan Anda untuk menjalankannya pada direktori tertentu. Jika Anda memiliki masalah dengan ini, atur di sana direktori itu (biasanya sama di mana executable berada). Anda mungkin ingin membuka baris ini dalam beberapa kasus.
  • The execperintah memberitahu bash untuk morph menjadi anggur dengan argumen berikut, jadi ini tidak pesta lagi berjalan anggur, tetapi proses pesta menjadi anggur. PID tetap ada. Anda tidak memiliki dua proses yang berjalan.
  • Itu $@diganti dengan argumen Anda menjalankan skrip, jika ada. Jadi itu diteruskan ke program anggur Anda.

Sekarang Anda dapat menjalankan program Anda dari shell seperti ...

textaloud

Langkah 2

Buat peluncur aplikasi. Saat ini file-file ini distandarisasi sebagai .desktopfile dan banyak lingkungan desktop menyediakan alat grafis untuk membuatnya.

Ini contoh kerangka yang bisa Anda gunakan untuk menulisnya sendiri. Anda mungkin ingin memberikan ikon (sering dalam PNG, SVG atau XPM).

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

Tempatkan file ini di ~/.local/share/applications/TextAloud.desktop. Ikon dicari (antara tempat lain) di ~/.local/share/icons, jadi pastikan untuk menemukan ikon lucu untuk aplikasi Anda dan letakkan di sana dengan nama textaloud.png.

Setelah Anda selesai melakukannya, lingkungan desktop Anda akan menemukan file shortcut Anda dan dapat menjalankan program dengan skrip. Jika tidak, muat ulang atau mulai ulang.


Terima kasih, saya mencoba panduan Anda tetapi langkah terakhir tidak berhasil. Saya tidak bisa melihat textalouddi dmenupeluncur.
xralf

Langkah 2 diarahkan ke desktop seperti GNOME, KDE atau XFCE. dmenu tampaknya tidak peduli dengan file .desktop, jadi dengan Langkah 1 Anda harus baik-baik saja. Apakah itu bekerja dari terminal? Jika berhasil tetapi masih belum berfungsi, tinjau Langkah 0. Mungkin Anda menggunakan ~/.xsessionuntuk mendapatkan sesion X11 Anda? Coba tambahkan di sana export PATH="$HOME/bin:$PATH"sebelum baris yang Anda gunakan untuk menjalankan DWM dan restart X11.
Alicia

Dalam pekerjaan dari terminal tanpa masalah. PATH baik-baik saja. Hanya pertanyaan yang harus diselesaikan. Saya ingin mengerjakannya dari dmenu.
xralf

Aku sudah bilang. Apakah Anda memiliki ~/.xsession? Sadarilah PATH terminal Anda mungkin tidak sama dengan PATH sesi X11 Anda.
Alicia

$@harus dalam tanda kutip ganda untuk keselamatan. jadi itu akan menjadi exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@".
Wyatt8740

1

Sudahkah Anda mempertimbangkan untuk mencoba PlayOnLinux? Ini dapat menangani semuanya untuk Anda dan bahkan Anda dapat mengkonfigurasi beberapa tipe file untuk dibuka oleh program anggur.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.