Przejrzyste programy winiarskie

9

Kiedy chcę uruchomić program do wina, muszę wpisać np

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

Czy można uruchomić bezpośrednio TextAloudMP3? Mam na myśli nie tylko z wiersza poleceń (mógłbym utworzyć alias), ale w całym środowisku graficznym. Uruchamiam programy za pomocą dmenu.

xralf
źródło

Odpowiedzi:

10

Myślę, że chciałeś uruchomić programy exe bezpośrednio z wine, więc powiedz kernelowi, aby uruchamiał binarki win32 z winem,

  1. Zamontuj binfmt fs, dodaj linię none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0do / etc / fstab, a mount -anastępnie uruchom

  2. echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register aby zarejestrować format binarny

Więc później wystarczy uruchomić plik exe /path/to/XX.exe

Pamiętaj, że powoduje to również problem bezpieczeństwa.

stokrotka
źródło
Nie mogę edytować /proc/sys/fs/binfmt_misc/register. Pisze /proc/sys/fs/binfmt_misc/register E667: Fsync failed. Próbowałem edytować także pod sudokontem użytkownika z kontem root i pod kontem root. Obaj piszą ten błąd.
xralf
Łał! Nie wiedziałem, że jądro to potrafi. Ten szczególny przypadek użycia jest jednak zły. Ale podoba mi się to nawet podczas otwierania tych drzwi, nazwy plików, czyli rozszerzenia, nie mają znaczenia, podczas gdy inne systemy operacyjne ...: D
Bananguin
@xralf: Jak próbujesz edytować plik? echo powinno działać, ale niektóre (większość / wszystkie?) edytory mogą nie działać, ponieważ nie jest to prawdziwy plik edytowalny, jest wirtualny w systemie plików proc.
chmeee,
@xralf nie edytuj za pomocą vim
daisy
@ warl0ck Muszę to zrobić na rootkoncie. Dodałem /path/to/do mojej $PATHzmiennej i mogę uruchomić XX.exez linii poleceń, ale nadal nie mogę jej uruchomić dmenu. Przepraszam, pomyliłem to z xmobarpytaniem.
xralf
3

Upewnij się, że wineznajduje się na twojej ścieżce i utwórz skrypt powłoki zawierający następujące elementy:

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

Pozwól sobie na wykonanie skryptu, uruchamiając chmod u+x SCRIPT_NAME.

Następnie po prostu uruchom ten skrypt ze swojego menedżera plików. Uruchomi się wine, które uruchomi TextAloudMP3.exe.

Społeczność
źródło
Stworzyłem skrypt o nazwie textaloudw /usr/local/binfolderze. Pierwsza linia to #! /bin/bashdruga linia to wine .... Textaloud nie pojawi się w programie xmobaruruchamiającym. Podczas działania sh textaloudpisze$ sh textaloud wine: cannot find '~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe'
xralf
Ups ~nie rozwija się do katalogu domowego użytkownika, gdy znajduje się w podwójnym cudzysłowie. Zmodyfikowałem swoją odpowiedź, aby $HOMEzamiast tego użyć zmiennej środowiskowej .
sh textaloudjuż działa, ale tylko z katalogu /usr/local/bini nadal nie jest widoczny w programie uruchamiającym xmobar.
xralf
1
może chcieć dodać $@po nazwie programu, aby przekazać wszystkie argumenty. I zwykle umieszczam takie skrypty w ~ / bin (oczywiście po upewnieniu się, że znajdują się w ŚCIEŻCE).
Wyatt8740
Nie możesz również zdefiniować aliasu w ~/.bash_aliases?
Aaron Franke
3

Krok 0

Ustaw ścieżkę binarną dla swojego użytkownika. Uruchom mkdir ~/bini dodaj ten katalog do ŚCIEŻKI.

Sposób wykonania tej czynności może się różnić w zależności od używanego środowiska powłoki i pulpitu.

Tutaj możesz znaleźć, jak zmienić ŚCIEŻKĘ w różnych powłokach .

Sprawdź to rozwiązane pytanie, jeśli środowisko pulpitu nie dba o profil powłoki, a ten pierwszy działa z poziomu terminala, ale nie ze środowiska pulpitu .

Krok 1

Po ustawieniu powłoki i środowiska pulpitu na przestrzeganie nowej ŚCIEŻKI możesz upuścić tam skrypty i uruchamiać je jako zwykłe polecenia bez wpisywania ścieżki.

Utwórz skrypt krótkiej powłoki, aby uruchomić program Wine w tym katalogu, tj . ~/bin/textaloud:

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

I daj mu zezwolenie na wykonanie.

chmod +x ~/bin/textaloud

W powyższym skrypcie należy zwrócić uwagę na trzy rzeczy:

  • cdŚcieżka gdzie program będzie działać (w tym katalogu). Niektóre programy mogą wymagać uruchomienia ich w określonym katalogu. Jeśli masz z tym problem, ustaw tam ten katalog (zwykle taki sam, w którym znajduje się plik wykonywalny). W niektórych przypadkach możesz zrezygnować z tej linii.
  • Te execpolecenia powiedzieć bash morph do wina z następujących argumentów, więc nie jest to już bash uruchomiony wino, ale proces bash staje wino. PID pozostaje. Nie masz uruchomionych dwóch procesów.
  • $@Jest podstawiony argumentów uruchomiono skrypt, jeżeli takie istnieją. Te są przekazywane do twojego programu win.

Teraz możesz uruchomić program z powłoki, jak ...

textaloud

Krok 2

Utwórz program uruchamiający aplikacje. Obecnie pliki te są znormalizowane jako .desktoppliki, a wiele środowisk pulpitu udostępnia narzędzia graficzne do ich tworzenia.

Oto przykładowy szkielet, którego możesz użyć do napisania go samodzielnie. Możesz podać ikonę (często w formacie PNG, SVG lub XPM).

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

Umieść ten plik w ~/.local/share/applications/TextAloud.desktop. Ikony są przeszukiwane (między innymi) ~/.local/share/icons, więc znajdź uroczą ikonę dla swojej aplikacji i umieść ją tam z nazwą textaloud.png.

Po wykonaniu tej czynności środowisko pulpitu powinno znaleźć plik skrótu i ​​być w stanie uruchomić program ze skryptem. Jeśli nie, załaduj go ponownie lub uruchom ponownie.

Alicia
źródło
Dziękuję, wypróbowałem Twój przewodnik, ale ostatni krok nie działa. Nie widzę textaloudw programie dmenuuruchamiającym.
xralf
Krok 2 dotyczy komputerów stacjonarnych takich jak GNOME, KDE lub XFCE. Wydaje się, że dmenu nie przejmuje się plikami .desktop, więc w kroku 1 wszystko powinno być w porządku. Czy to zadziałało z terminala? Jeśli zadziałało, ale nadal nie działa, przejrzyj krok 0. Może używasz, ~/.xsessionaby uzyskać sesję X11? Spróbuj dodać tam export PATH="$HOME/bin:$PATH"przed wierszem używanym do uruchomienia dwm i zrestartuj X11.
Alicia
W pracach z terminala bez problemów. ŚCIEŻKA jest OK. Tylko pytanie, które należy wypełnić, chciałbym rozwiązać z dmenu.
xralf
Mówiłem Ci. Czy masz ~/.xsession? Pamiętaj, że ŚCIEŻKA twojego terminala może nie być równa ŚCIEŻCE twojej sesji X11.
Alicia,
$@powinny być w podwójnych cudzysłowach dla bezpieczeństwa. tak by się stało exec wine "~/.wine/drive_c/Program Files/TextAloud/TextAloudMP3.exe" "$@".
Wyatt8740
1

Czy zastanawiałeś się nad wypróbowaniem PlayOnLinux? Może zająć się wszystkim za Ciebie, a nawet możesz skonfigurować niektóre typy plików, które będą otwierane przez programy do wina.

Bichoj
źródło