Прозоро запускайте винні програми


9

Коли я хочу запустити винну програму, я повинен набрати напр

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

Чи можна було б бігати безпосередньо TextAloudMP3? Я маю на увазі не тільки з командного рядка (я можу створити псевдонім), але й у цілому графічному середовищі. Я запускаю програми з dmenu.

Відповіді:


10

Я думаю, ви мали намір запустити програми exe з вином безпосередньо, тому скажіть ядру запускати файли win32 з вином,

  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

Оце Так! Я не знав, що ядро ​​може це зробити. Цей конкретний випадок використання відчуває зло. Але мені подобається, що навіть при відкритті цієї двері файлові
файли

@xralf: Як ви намагаєтесь редагувати файл? ехо має працювати, але деякі (більшість / усі?) редактори можуть не працювати, оскільки це не реальний файл, який можна редагувати, це віртуальний файл файлової системи 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?
Аарон Франке

3

Крок 0

Встановіть для свого користувача бінарний PATH. Запустіть mkdir ~/binі додайте цей каталог у свій PATH.

Як це зробити, може залежати від оболонки та середовища на робочому столі, яке ви використовуєте.

Тут ви можете дізнатися, як змінити свій 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Шлях , де програма буде працювати (в цьому каталозі). Деякі програми можуть вимагати запускати їх у певному каталозі. Якщо у вас виникли проблеми з цим, встановіть туди цей каталог (як правило, той самий, де знаходиться виконуваний файл). Ви можете не бажати цього рядка в деяких випадках.
  • Ці 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/icons, тому обов'язково знайдіть милу піктограму для вашої програми та розмістіть її там із назвою textaloud.png.

Як тільки ви це зробили, у середовищі робочого столу слід знайти файл ярлика та мати змогу запускати програму зі сценарієм. Якщо ні, перезавантажте або перезавантажте.


Дякую, я спробував ваш путівник, але останній крок не працює. Я не бачу textaloudв dmenuпусковій установці.
xralf

Крок 2 спрямований на настільні комп'ютери, такі як GNOME, KDE або XFCE. Здається, dmenu не переймається файлами .desktop, тому з кроком 1 вам слід добре. Це працювало з терміналу? Якщо це сталося, але все ще не працює, перегляньте Крок 0. Можливо, ви використовуєте, ~/.xsessionщоб отримати свій X11 сеанс? Спробуйте додати туди export PATH="$HOME/bin:$PATH"перед рядком, який ви використовуєте для запуску dwm та перезапуску X11.
Алісія

У роботах з терміналу без проблем. PATH в порядку. Тільки питання, щоб бути повним, я хотів би опрацювати його з dmenu.
xralf

Я казав тобі. У вас є ~/.xsession? Пам’ятайте, що PATH вашого терміналу може не дорівнювати PATH вашого сеансу X11.
Алісія

$@повинні бути у подвійних лапках для безпеки. так би стало exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@".
Wyatt8740

1

Ви думали про те, щоб спробувати PlayOnLinux? Він може подбати про все, що вам потрібно, і навіть ви можете налаштувати деякі файли для відкриття винних програм.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.