Cách truyền tệp dưới dạng đối số trong tệp .desktop cho ứng dụng rượu vang


11

Tôi thực sự muốn hỏi hai câu hỏi:

  1. Tôi có thể tìm thêm ở đâu về các phím tắt tham số / tham số có sẵn cho mục nhập Exec trong các tệp trên máy tính để bàn (như% U,% u,% f ...)

  2. Câu hỏi chính, làm thế nào để vượt qua tệp làm đối số trên launcher .desktop cho ứng dụng rượu vang?

Tôi thấy việc tìm kiếm ở đây gợi ý này: z:%fkhông có ích gì cho tôi, vì nếu tôi chỉ chạy tệp .desktop mà không truyền tệp trên đó, nó giả sử rằng đối số là z:và bắt đầu quét z:"ổ đĩa"


Thí dụ:

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

Tôi muốn thả tệp XML trên trình khởi chạy .desktop tùy chỉnh của mình cho ứng dụng rượu này và tôi có thể theo cách này. Vấn đề là nếu tôi nhấp vào biểu tượng trình khởi chạy để gợi lên chương trình này, đối số z:luôn được truyền vào nó và điều đó không được chấp nhận


Bạn đang cố gắng làm gì btw? Bạn có thể thêm một ví dụ?
Bruno Pereira

Này Bruno;) Tôi nghĩ rằng nó đã rõ ràng - Tôi đã tạo tệp máy tính để bàn (mục đích - trình khởi chạy) cho ứng dụng rượu vang và tôi muốn có thể truyền tệp trên đó. z:%fCách giải quyết trên là không tốt vì bất cứ khi nào tôi khởi chạy đối số ứng dụng rượu này z:đều được thông qua và tôi muốn tránh điều đó
zetah

Vì vậy, bạn có một chương trình windows được gọi là (tức là) application.exemà bạn muốn truyền tệp đã chọn hiện tại trong nautilus cho nó tức là file.txt?
Bruno Pereira

Xin lỗi tôi nên đã thêm ví dụ trong bài viết đầu tiên của tôi. Tôi đã thêm nó ngay bây giờ
zetah

Tôi đã có một cái nhìn xung quanh điều này cho đến bây giờ và lựa chọn duy nhất khác cho điều này là một tập lệnh được đặt trong execdòng kiểm tra một %f, nếu nó tồn tại khởi chạy ứng dụng trên tệp, nếu không chỉ khởi chạy ứng dụng. Chăm sóc cho nó hay nó không phải là một lựa chọn?
Bruno Pereira

Câu trả lời:


8

Điều này là tốt nhất tôi có thể cho đến nay (ví dụ Notepad)

[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

Tôi mong đợi câu trả lời tốt hơn khi xem xét tôi là người mới bắt đầu


Xem cải tiến của tôi dưới đây để vượt qua nhiều tập tin.
Harvey


1

Một cải tiến về câu trả lời của zetah. Điều này hoạt động để truyền nhiều tập tin cho chương trình. % F được thay đổi thành% F (chữ hoa) để vượt qua tất cả các tệp bị bỏ, thay thế ^ (cho đầu dòng) với đủ tên đường dẫn để làm cho nó có nhiều khả năng là duy nhất, 'g' ở cuối của lệnh sed để thay thế lặp lại cho tất cả các tệp được truyền và cuối cùng là $ thay vì / để các ký tự thoát \ không cần thiết.

Exec=sh -c "echo %F | sed 's$/home$z:/home$g' | xargs wine /home/owner/.wine/dosdevices/c:/Progs/Boxer/b.exe"

Tôi cũng đã di chuyển chương trình để được thực thi đến một đường dẫn trong đó tên đường dẫn không có khoảng trắng, vì vậy tôi đã chuyển trình soạn thảo boxer của mình từ:

/home/owner/.wine/dosdevices/c:/Program Files/Boxer Text Editor/

đến:

/home/owner/.wine/dosdevices/c:/Progs/Boxer/

1

Có rất nhiều giải pháp hackish được đăng trong chủ đề này. Đây là một giải pháp tốt hơn nhiều liên quan đến nhiều tệp và khoảng trắng trong tên tệp.

Tạo tệp .desktop như bạn thường làm và chỉ cần sử dụng dòng Exec này:

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'"

Chỉnh sửa : Nếu ứng dụng của bạn có thể xử lý nhiều tệp trong một phiên bản (ví dụ: trình xem PDF nhiều tab) và bạn muốn phiên bản hiện tại được tự động tập trung bất cứ khi nào bạn khởi chạy một tệp mới thì bạn cần thực hiện như sau:

  • Thêm dòng này vào tệp .desktop: StartupWMClass=app.exe

  • Sử dụng lệnh Exec này:

    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

Một dòng Exec với một ống dẫn rượu đến xargs, được sử dụng với trích dẫn thích hợp và các tùy chọn -0 của chúng, hoạt động hoàn hảo trong Ubuntu 14.04 để mở các tệp đơn và nhiều tệp.

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

Đây là cách chỉ hoạt động với tôi trên hộp RHEL 6.3 sau một số thử nghiệm và lỗi và đọc Thông số kỹ thuật của Desktop Desktop. Nó không đặc trưng cho rượu với các đối số nhưng nó sẽ hoạt động với một cái gì đó như Exec=wine \"filename.exe\".

Hy vọng nó sẽ giúp được ai đó vì tôi phải mất một số tìm kiếm để làm cho nó hoạt động.

Tôi nghĩ rằng bạn phải sử dụng dấu ngoặc kép và thoát chúng cũng như bất kỳ ký tự đặc biệt nào sử dụng dấu gạch chéo ngược.

[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

Tôi vừa viết một tập lệnh Python nhỏ chuyển đổi các đường dẫn kiểu Unix thành định dạng đường dẫn Wine.

Tải xuống mã zip , giải nén Wine-launcher.py vào thư mục nhà của bạn và chỉnh sửa tệp .desktop của bạn như thế này:

Exec=python ~/wine-launcher.py "program.exe" %F
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.