와인 응용 프로그램을 위해 .desktop 파일에서 인수로 파일을 전달하는 방법


11

실제로 두 가지 질문을하고 싶습니다.

  1. 데스크탑 파일에서 Exec 항목에 사용할 수있는 인수 / 매개 변수 바로 가기 (예 : % U, % u, % f ...)에 대한 자세한 정보는 어디에서 찾을 수 있습니까?

  2. 주요 질문, 와인 응용 프로그램을 위해 .desktop 실행기에 인수로 파일을 전달하는 방법은 무엇입니까?

여기서 제안하는 것을 발견했습니다. z:%f파일을 전달하지 않고 단순히 .desktop 파일을 실행하는 것처럼 아무 소용이 없습니다. 인수가 있다고 가정하고 "드라이브" z:스캔을 시작합니다.z:


예:

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

이 와인 응용 프로그램의 사용자 정의 .desktop 실행기에 XML 파일을 삭제하고 싶습니다. 문제는 시작 프로그램 아이콘을 클릭 하여이 프로그램을 호출하면 인수 z:가 항상 전달되어 받아 들일 수 없다는 것입니다


btw 무엇을하려고합니까? 예를 추가 할 수 있습니까?
Bruno Pereira

안녕 브루노;) 나는 그것이 분명하다고 생각했다-나는 와인 응용 프로그램을 위해 데스크탑 파일 (목적-발사기)을 만들었고 그것에 파일을 전달할 수 있기를 원합니다. 위의 z:%f해결 방법은이 와인 응용 프로그램 인수를 실행할 때마다 z:전달되지
않으므로

그래서 당신은 (즉)라는 application.exe노틸러스에서 현재 선택된 파일을 전달하고자 하는 Windows 프로그램을 가지고 있습니다 file.txt.
Bruno Pereira

첫 번째 게시물에 예제를 추가해야합니다. 나는 지금 그것을 추가
zetah

지금 까지이 문제를 살펴 보았으며 이것에 대한 유일한 다른 옵션은 exec줄을 확인 하여 스크립트 를 검사 %f하는 것입니다. 파일이 있으면 응용 프로그램을 시작하는 것이 아니라 파일에서 응용 프로그램을 시작하십시오. 그것을 돌보는가 아니면 선택이 아닌가?
Bruno Pereira

답변:


8

이것은 지금까지 할 수있는 최선입니다 (메모장 예)

[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

나는 초보자를 고려하면 더 나은 답변을 기대합니다


여러 파일을 전달하려면 아래 개선 사항을 참조하십시오.
Harvey


1

제타의 답변 개선. 이것은 여러 파일을 프로그램에 전달하는 데 효과적입니다. % f는 % F (대문자)로 변경되어 삭제 된 모든 파일을 전달하고 ^ (줄 시작의 경우)를 경로 이름으로 대체하여 끝에 고유 한 'g'를 더 고유하게 만듭니다. sed 명령을 사용하여 전달 된 모든 파일에 대해 대체를 반복하고 / 대신 $ 대신 \ 이스케이프 문자가 필요하지 않도록합니다.

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

적절한 인용 부호 와 -0 옵션과 함께 사용되는 xargs 에 winepath 파이프가있는 Exec 라인은 단일 및 다중 파일을 열기 위해 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 스크립트 를 작성했습니다 .

다운로드 우편 번호를 추출, wine-launcher.py 홈 폴더 및 편집이 같이 당신의 .desktop 파일에 :

Exec=python ~/wine-launcher.py "program.exe" %F
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.