Unverified Commit 8715bddc authored by Mikhail Tergoev's avatar Mikhail Tergoev Committed by GitHub

Merge branch 'devel' into added-main-menu1

parents b67bf2bd 7b5b381a
<div align="center"> <div style="text-align: center;">
<img src="https://raw.githubusercontent.com/Castro-Fidel/PortWINE/master/data_from_portwine/img/gui/portproton.svg" width="64"> <img src="https://raw.githubusercontent.com/Castro-Fidel/PortWINE/master/data_from_portwine/img/gui/portproton.svg" width="64">
<h1 align="center">PortProton</h1> <h1 style="text-align: center;">PortProton</h1>
<a href="https://github.com/Castro-Fidel/PortWINE/blob/master/LICENSE"> <a href="https://github.com/Castro-Fidel/PortWINE/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/Castro-Fidel/PortWine?logo=github" alt="GitHub License"> <img src="https://img.shields.io/github/license/Castro-Fidel/PortWine?logo=github" alt="GitHub License">
</a> </a>
...@@ -10,22 +10,24 @@ ...@@ -10,22 +10,24 @@
</a> </a>
<img src="https://img.shields.io/youtube/channel/subscribers/UCbI8OJx2D3q-4QKt4LffXTw?style=flat&logo=youtube" alt="YouTube Channel Subscribers"> <img src="https://img.shields.io/youtube/channel/subscribers/UCbI8OJx2D3q-4QKt4LffXTw?style=flat&logo=youtube" alt="YouTube Channel Subscribers">
<br/> <br/>
<p align="center"> <p style="text-align: center;">
Проект, призванный сделать запуск Windows-игр в Linux простым и удобным как для начинающих, так и для опытных пользователей.<br> Проект, призванный сделать запуск Windows-игр в Linux простым и удобным как для начинающих, так и для опытных пользователей.<br>
Проект стремится сделать запуск игр (и другого программного обеспечения) максимально простым, но в то же время предоставляет гибкие настройки для опытных пользователей. Проект стремится сделать запуск игр (и другого программного обеспечения) максимально простым, но в то же время предоставляет гибкие настройки для опытных пользователей.
</p> </p>
</div> </div>
# **Язык README** # **Язык README**
**Русский** - [English](README.md) **Русский** - [English](README.md)
## Внимание ## Внимание
**Официальный сайт проекта** с сентября 2022 года: https://linux-gaming.ru. **Любой другой сайт - фальшивка!** **Официальный сайт проекта** с сентября 2022 года: https://linux-gaming.ru. **Любой другой сайт - фальшивка!**
## Особенности ## Особенности
- Основан на версии WINE от Valve (Proton) и ее модификациях (Proton GE). - Основан на версии WINE от Valve (Proton) и ее модификациях (Proton GE).
Включает набор скриптов, объединенных с самим wine-proton, контейнер Steam Runtime Sniper с добавлением портированных версий MANGOHUD (вывод полезной информации в окно игры: FPS, FrameTime, CPU, GPU и т.д.) и vkBasalt (улучшение графики в играх, очень хорош в связке с FSR, DLSS) + множество уже настроенных оптимизаций для максимальной производительности. Включает набор скриптов, объединенных с самим wine-proton, контейнер Steam Runtime Sniper с добавлением портированных версий MANGOHUD (вывод полезной информации в окно игры: FPS, FrameTime, CPU, GPU и т.д.) и vkBasalt (улучшение графики в играх, очень хорош в связке с FSR, DLSS) + множество уже настроенных оптимизаций для максимальной производительности.
- Реализована автоматическая установка одним щелчком мыши (на вкладке АВТОУСТАНОВКА) популярных лаунчеров, таких как: WGC, Epic Games, Battle.net, Origin, EVE Online, RockStar, Ubisoft connect , League of Legends и многие другие. - Реализована автоматическая установка одним щелчком мыши (на вкладке АВТОУСТАНОВКА) популярных лаунчеров, таких как: WGC, Epic Games, Battle.net, Origin, EVE Online, RockStar, Ubisoft connect , League of Legends и многие другие.
...@@ -37,7 +39,7 @@ ...@@ -37,7 +39,7 @@
* WINE-PROTON: https://github.com/ValveSoftware/Proton * WINE-PROTON: https://github.com/ValveSoftware/Proton
* WINE-PROTON-GE: https://github.com/GloriousEggroll/proton-ge-custom/ * WINE-PROTON-GE: https://github.com/GloriousEggroll/proton-ge-custom
## Установка с помощью пакетов ## Установка с помощью пакетов
...@@ -55,6 +57,7 @@ exit ...@@ -55,6 +57,7 @@ exit
``` ```
`Вариант установки с помощью eepm`: `Вариант установки с помощью eepm`:
```sh ```sh
su - su -
...@@ -66,13 +69,13 @@ exit ...@@ -66,13 +69,13 @@ exit
``` ```
* **Ubuntu 24.04**, **Debian 12**, **Linux Mint 21.x** **Deepin** : * **Ubuntu 24.04**, **Debian 12**, **Linux Mint 21.x** **Deepin** :
[portproton_1.4-1_amd64.deb](https://github.com/Castro-Fidel/PortProton_dpkg/releases/download/portproton_1.4-1_amd64/portproton_1.4-1_amd64.deb) [portproton_1.7-2_amd64.deb](https://github.com/Castro-Fidel/PortProton_dpkg/releases/download/portproton_1.7-2_amd64/portproton_1.7-2_amd64.deb)
* **Arch Linux** и производные (Manjaro, Garuda, и т.д.) : * **Arch Linux** и производные (Manjaro, Garuda, и т.д.) :
[AUR](https://aur.archlinux.org/packages/portproton) [AUR](https://aur.archlinux.org/packages/portproton)
* **OpenSuse**: * **openSUSE**:
[OBS](https://software.opensuse.org/download/package?package=portproton&project=home%3ABoria138%3APortProton) [OBS](https://software.opensuse.org/download/package?package=portproton&project=home%3ABoria138%3APortProton)
* **ROSA Linux** устанавливается с помощью этой команды: * **ROSA Linux** устанавливается с помощью этой команды:
...@@ -194,6 +197,7 @@ sudo eopkg it curl file bubblewrap curl icoutils tar zstd cabextract xdg-utils ...@@ -194,6 +197,7 @@ sudo eopkg it curl file bubblewrap curl icoutils tar zstd cabextract xdg-utils
``` ```
* **Void** * **Void**
```sh ```sh
sudo xbps-install -Su void-repo-multilib sudo xbps-install -Su void-repo-multilib
......
<div align="center"> <div style="text-align: center;">
<img src="https://raw.githubusercontent.com/Castro-Fidel/PortWINE/master/data_from_portwine/img/gui/portproton.svg" width="64"> <img src="https://raw.githubusercontent.com/Castro-Fidel/PortWINE/master/data_from_portwine/img/gui/portproton.svg" width="64">
<h1 align="center">PortProton</h1> <h1 style="text-align: center;">PortProton</h1>
<a href="https://github.com/Castro-Fidel/PortProton_ALT/blob/main/LICENSE"> <a href="https://github.com/Castro-Fidel/PortProton_ALT/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/Castro-Fidel/PortWINE" alt="GitHub License"> <img src="https://img.shields.io/github/license/Castro-Fidel/PortWINE" alt="GitHub License">
</a> </a>
...@@ -10,40 +10,45 @@ ...@@ -10,40 +10,45 @@
</a> </a>
<img src="https://img.shields.io/youtube/channel/subscribers/UCbI8OJx2D3q-4QKt4LffXTw?style=flat&logo=youtube" alt="YouTube Channel Subscribers"> <img src="https://img.shields.io/youtube/channel/subscribers/UCbI8OJx2D3q-4QKt4LffXTw?style=flat&logo=youtube" alt="YouTube Channel Subscribers">
<br/> <br/>
<p align="center"> <p style="text-align: center;">
A project designed to make running Windows games on Linux easy and convenient for both beginners and advanced users.<br> A project designed to make running Windows games on Linux easy and convenient for both beginners and advanced users.<br>
The project aims to simplify the process of launching games (and other software) while also providing flexible settings for experienced users. The project aims to simplify the process of launching games (and other software) while also providing flexible settings for experienced users.
</p> </p>
</div> </div>
# **Readme Language** # **Readme Language**
**English** - [Русский](README-RU.md) **English** - [Русский](README-RU.md)
## Attention ## Attention
The **official website of the project** since September 2022: https://linux-gaming.ru. **Any other site is fake!**
The **official website of the project** since September 2022 is: https://linux-gaming.ru. **Any other site is fake!**
## Features ## Features
- Based on the version of WINE from Valve (Proton) and its modifications (Proton GE). - Based on the version of WINE from Valve (Proton) and its modifications (Proton GE).
Includes a set of scripts combined with wine-proton itself, a Steam Runtime Sniper container with the addition of ported versions of MANGOHUD (output useful information over the game window: FPS, FrameTime, CPU, GPU, etc) and vkBasalt (improvement of graphics in games, very good in in conjunction with FSR, DLSS) + many already configured optimizations for maximum performance. Includes a set of scripts combined with wine-proton itself, a Steam Runtime Sniper container with the addition of
ported mangoHud (output useful information over the game window: FPS, frametime, CPU, GPU, etc.),
- Implemented one-click auto-installation (in the AUTOINSTALL tab ) of popular launchers such as: WGC, Epic Games, Battle.net, Origin, EVE Online, RockStar, Ubisoft connect , League of Legends and many others. vkBasalt (improvement of graphics in games, great alongside FSR or DLSS) versions,
and many already configured optimizations for maximum performance.
- Implemented one-click auto-installation (in the AUTOINSTALL tab) of popular launchers such as WGC, Epic Games, Battle.net, Origin, EVE Online, Rockstar, Ubisoft Connect, League of Legends, and many others.
- For fans of console games, there are many console emulators to choose from (in the EMULATORS tab ): PPSSPP, Citra, Cemu, ePSXe, MAME and many others. - For fans of console games, there are many console emulators to choose from (in the EMULATORS tab): PPSSPP, Citra, Cemu, ePSXe, MAME, and many others.
**PLEASE DO NOT REPORT BUGS ENCOUNTERED WITH THIS AT WINEHQ OR VALVE SOFTWARE!** **PLEASE DON'T REPORT BUGS ENCOUNTERED WITH THIS AT WINEHQ OR VALVE SOFTWARE!**
## **Wine sources used in PortWINE:** ## **Wine sources used in PortWINE:**
* WINE-PROTON: https://github.com/ValveSoftware/Proton * WINE-PROTON: https://github.com/ValveSoftware/Proton
* WINE-PROTON-GE: https://github.com/GloriousEggroll/proton-ge-custom/ * WINE-PROTON-GE: https://github.com/GloriousEggroll/proton-ge-custom
## Installation using packages ## Installation using packages
* **Alt Linux** (package in the official repository) is installed with the command: * **Alt Linux** (package in the official repository) is installed with the command:
`apt-get`: `apt-get`:
```sh ```sh
su - su -
...@@ -55,6 +60,7 @@ exit ...@@ -55,6 +60,7 @@ exit
``` ```
`epm`: `epm`:
```sh ```sh
su - su -
...@@ -71,14 +77,14 @@ exit ...@@ -71,14 +77,14 @@ exit
sudo urpmi portproton sudo urpmi portproton
``` ```
* **Ubuntu 24.04**, **Debian 12**, **Linux Mint 21.x** **Deepin** : * **Ubuntu 24.04**, **Debian 12**, **Linux Mint 21.x**, and **Deepin**:
[portproton_1.4-1_amd64.deb](https://github.com/Castro-Fidel/PortProton_dpkg/releases/download/portproton_1.4-1_amd64/portproton_1.4-1_amd64.deb) [portproton_1.7-2_amd64.deb](https://github.com/Castro-Fidel/PortProton_dpkg/releases/download/portproton_1.7-2_amd64/portproton_1.7-2_amd64.deb)
* **Arch Linux** and derivatives (Manjaro, Garuda, etc.) : * **Arch Linux** and derivatives (Manjaro, Garuda, etc.):
[AUR](https://aur.archlinux.org/packages/portproton) [AUR](https://aur.archlinux.org/packages/portproton)
* **OpenSuse**: * **openSUSE**:
[OBS](https://software.opensuse.org/download/package?package=portproton&project=home%3ABoria138%3APortProton) [OBS](https://software.opensuse.org/download/package?package=portproton&project=home%3ABoria138%3APortProton)
* **Fedora 38+** and **Nobara**: * **Fedora 38+** and **Nobara**:
...@@ -88,7 +94,7 @@ sudo dnf copr enable boria138/portproton ...@@ -88,7 +94,7 @@ sudo dnf copr enable boria138/portproton
sudo dnf install portproton sudo dnf install portproton
``` ```
* **FlatHub** * **Flathub**
```sh ```sh
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
...@@ -97,7 +103,7 @@ flatpak install flathub ru.linux_gaming.PortProton ...@@ -97,7 +103,7 @@ flatpak install flathub ru.linux_gaming.PortProton
## Universal (manual) installation ## Universal (manual) installation
**ATTENTION** : with the universal method of installing PortProton, dependencies must be installed manually! **ATTENTION**: with the universal method of installing PortProton, dependencies must be installed manually!
```sh ```sh
wget -c "https://github.com/Castro-Fidel/PortProton_ALT/raw/main/portproton" && sh portproton wget -c "https://github.com/Castro-Fidel/PortProton_ALT/raw/main/portproton" && sh portproton
...@@ -107,7 +113,7 @@ wget -c "https://github.com/Castro-Fidel/PortProton_ALT/raw/main/portproton" && ...@@ -107,7 +113,7 @@ wget -c "https://github.com/Castro-Fidel/PortProton_ALT/raw/main/portproton" &&
* **NVIDIA graphics card users** * **NVIDIA graphics card users**
If you have a video card from NVIDIA and a proprietary driver is installed, then you need to check if lib32-nvidia-utils is installed (no 32-bit game will work without it) If you have a video card from NVIDIA and a proprietary driver is installed, then you need to check if lib32-nvidia-utils is installed (32-bit games don't work without it)
* **Ubuntu / Linux Mint / Pop!_OS** * **Ubuntu / Linux Mint / Pop!_OS**
...@@ -196,6 +202,7 @@ sudo eopkg it curl file bubblewrap curl icoutils tar zstd cabextract xdg-utils o ...@@ -196,6 +202,7 @@ sudo eopkg it curl file bubblewrap curl icoutils tar zstd cabextract xdg-utils o
``` ```
* **Void** * **Void**
```sh ```sh
sudo xbps-install -Su void-repo-multilib sudo xbps-install -Su void-repo-multilib
......
...@@ -2,6 +2,29 @@ You can help us in the development of the project on the website: https://linux- ...@@ -2,6 +2,29 @@ You can help us in the development of the project on the website: https://linux-
---------------------------------------- ----------------------------------------
Changelog: Changelog:
###Scripts version 2328### / Date: 25.07.2024 / Download update size: 4 megabytes
* updated icon for setup files (thanks to Dervart)
* fixed interface alignment for KDE
* added automatic creation of shortcuts by checking "create shortcut" in the installer itself (thanks to Boria138 and Htylol)
* settings file editor switched to yad (thanks to Htylol)
###Scripts version 2327### / stable / Date: 25.07.2024 / Download update size: 4 megabytes
* cumulative update to the stable version of PortProton scripts
###Scripts version 2326### / Date: 24.07.2024 / Download update size: 4 megabytes
* updated README.md (thanks Kazevic)
* user.conf editor switched to yad (thanks to Htylol)
* fixed disk mounting in dosdevice (thanks to Boria138)
* added drive S which always links to the directory with games in STEAM (for easy installing mods in games from the STEAM library)
###Scripts version 2325### / Date: 22.07.2024 / Download update size: 4 megabytes
* updated Caliber auto-installation
* fixed Yabause icon display
* fixed adding icons when creating a shortcut to the steam library (thanks to Boria138)
* updated gamescope settings window (thanks to Htylol)
* updated language selection function (thanks to Htylol)
* fix icon creation on systems using SELinux (thanks to Boria138)
###Scripts version 2324### / Date: 18.07.2024 / Download update size: 4 megabytes ###Scripts version 2324### / Date: 18.07.2024 / Download update size: 4 megabytes
* updated Russian translation (thanks to Eljeyna) * updated Russian translation (thanks to Eljeyna)
......
...@@ -2,6 +2,29 @@ ...@@ -2,6 +2,29 @@
----------------------------------------- -----------------------------------------
История изменений: История изменений:
###Scripts version 2328### / Дата: 25.07.2024 / Размер скачиваемого обновления: 4 мегабайта
* обновлена иконка для setup файлов (спасибо Dervart)
* исправлена центровка интерфейса для KDE
* добавлено автоматическое создание ярлыков галочкой "создать ярлык" в самом установщике (спасибо Boria138 и Htylol)
* редактор файлов настроек переключен на yad (спасибо Htylol)
###Scripts version 2327### / stable / Дата: 25.07.2024 / Размер скачиваемого обновления: 4 мегабайта
* кумулятивное обновление стабильной версии скриптов PortProton
###Scripts version 2326### / Дата: 24.07.2024 / Размер скачиваемого обновления: 4 мегабайта
* обновлен README.md (спасибо Kazevic)
* редактор user.conf переключен на yad (спасибо Htylol)
* исправлена работа монтирования дисков в dosdevice (спасибо Boria138)
* добавлен диск S который всегда ссылается на каталог с играми в STEAM (для удобства установки русификаторов и модов в игры из библиотеки STEAM)
###Scripts version 2325### / Дата: 22.07.2024 / Размер скачиваемого обновления: 4 мегабайта
* обновлена автоустановка Caliber
* исправлено отображение иконки Yabause
* исправлено добавление иконок при создании ярлыка в библиотеку steam (спасибо Boria138)
* обновлено окно настроек gamescope (спасибо Htylol)
* обновлена функция выбора языка (спасибо Htylol)
* исправление создания иконок в системах использующих SELinux (спасибо Boria138)
###Scripts version 2324### / Дата: 18.07.2024 / Размер скачиваемого обновления: 4 мегабайта ###Scripts version 2324### / Дата: 18.07.2024 / Размер скачиваемого обновления: 4 мегабайта
* доработана русская локализация (спасибо Eljeyna) * доработана русская локализация (спасибо Eljeyna)
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48"
version="1.1"
height="48"
viewBox="0 0 48 48"
id="svg1"
sodipodi:docname="duplicate.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="11.313709"
inkscape:cx="37.388269"
inkscape:cy="23.511299"
inkscape:window-width="2991"
inkscape:window-height="1194"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" /><defs
id="defs5455"><linearGradient
id="linearGradient4256"><stop
style="stop-color:#8cbdf8"
id="stop4258" /><stop
offset="1"
style="stop-color:#d5e8ff"
id="stop4260" /></linearGradient><linearGradient
id="linearGradient4232"><stop
style="stop-color:#3889e9"
id="stop4234-0" /><stop
offset="1"
style="stop-color:#5ea5fb"
id="stop4236" /></linearGradient><linearGradient
id="a"
x1="300"
x2="300"
y1="44"
y2="556"
gradientUnits="userSpaceOnUse"><stop
offset="0"
stop-color="#46bac6"
id="stop1" /><stop
offset="1"
stop-color="#1497a5"
id="stop2" /></linearGradient><linearGradient
id="linearGradient4194"><stop
style="stop-color:#b5006a"
id="stop4196" /><stop
offset="1"
style="stop-color:#c70073"
id="stop4198" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient848"
id="linearGradient854"
gradientUnits="userSpaceOnUse"
x1="203.3689"
y1="55.640129"
x2="244.86897"
y2="55.640129" /><linearGradient
inkscape:collect="always"
id="linearGradient848"><stop
style="stop-color:#4b8bd4;stop-opacity:1"
offset="0"
id="stop844" /><stop
style="stop-color:#3b6ca7;stop-opacity:1"
offset="1"
id="stop846" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient848"
id="linearGradient1004"
gradientUnits="userSpaceOnUse"
x1="387.57144"
y1="505.798"
x2="445.57141"
y2="505.798"
gradientTransform="matrix(1.3888828,0,0,1,-172.49732,0)" /><linearGradient
id="linearGradient4301"><stop
style="stop-color:#f10000;stop-opacity:1"
offset="0"
id="stop4303" /><stop
style="stop-color:#b20000;stop-opacity:1"
offset="1"
id="stop4305" /></linearGradient><linearGradient
id="linearGradient4305"><stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4307" /><stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop4309" /></linearGradient><linearGradient
id="linearGradient4428"
y1="4.7160001"
x1="17.483"
y2="39.833"
x2="37.757999"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.99376,-0.00423,0.00423,0.98887,47.823,2.34)"><stop
stop-color="#3fc380"
id="stop4430"
style="stop-color:#3cc6ae;stop-opacity:1" /><stop
offset="1"
stop-color="#3f8ed3"
id="stop4432"
style="stop-color:#3f7ad3;stop-opacity:1" /></linearGradient><linearGradient
id="a-2"
y1="543.79999"
y2="503.79999"
x2="0"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-384.57,-499.8)"><stop
stop-color="#2a2c2f"
id="stop7" /><stop
offset="1"
stop-color="#424649"
id="stop9" /></linearGradient><linearGradient
id="b"
y1="532.79999"
y2="506.79999"
x2="0"
gradientUnits="userSpaceOnUse"><stop
stop-color="#989a9b"
id="stop12" /><stop
offset="1"
stop-color="#f6f6f7"
id="stop14" /></linearGradient><linearGradient
id="c"
y1="522.79999"
x1="403.57001"
y2="534.79999"
x2="413.26001"
gradientUnits="userSpaceOnUse"><stop
stop-color="#020303"
id="stop17" /><stop
offset="1"
stop-color="#424649"
stop-opacity="0"
id="stop19" /></linearGradient><linearGradient
xlink:href="#c"
id="d"
y1="521.79999"
x1="400.76999"
y2="533.59998"
gradientUnits="userSpaceOnUse"
x2="412.57001" /><path
fill-rule="evenodd"
id="e"
d="m 426.57,529.8 -16,11 -8,-8 -2,-9 17,-5 z" /><linearGradient
gradientUnits="userSpaceOnUse"
x2="0"
y2="503.79999"
y1="543.79999"
id="a-3"><stop
id="stop4268"
stop-color="#2a2c2f" /><stop
id="stop4270"
stop-color="#424649"
offset="1" /></linearGradient><linearGradient
gradientUnits="userSpaceOnUse"
x2="0"
y2="506.79999"
y1="532.79999"
id="b-6"><stop
id="stop4273"
stop-color="#989a9b" /><stop
id="stop4275"
stop-color="#f6f6f7"
offset="1" /></linearGradient><path
d="m 426.57,529.8 -16,11 -8,-8 -2,-9 17,-5 z"
id="e-5"
fill-rule="evenodd" /><linearGradient
gradientTransform="matrix(-0.99376,-0.00423,0.00423,0.98887,47.823,2.34)"
gradientUnits="userSpaceOnUse"
x2="37.757999"
y2="39.833"
x1="17.483"
y1="4.7160001"
id="a-35"><stop
id="stop4339"
stop-color="#3fc380" /><stop
id="stop4341"
stop-color="#3f8ed3"
offset="1" /></linearGradient><linearGradient
gradientTransform="matrix(-0.99376,-0.00423,0.00423,0.98887,97.823,31.34)"
gradientUnits="userSpaceOnUse"
x2="37.757999"
y2="39.833"
x1="17.483"
y1="4.7160001"
id="b-62"
xlink:href="#a-35" /><linearGradient
gradientTransform="matrix(-0.99376,-0.00423,0.00423,0.98887,97.823,16.34)"
gradientUnits="userSpaceOnUse"
x2="37.757999"
y2="39.833"
x1="17.483"
y1="4.7160001"
id="c-9"
xlink:href="#a-35" /><linearGradient
gradientTransform="matrix(-0.99376,-0.0067,0.00423,1.56572,47.823,12.372)"
gradientUnits="userSpaceOnUse"
x2="37.757999"
y2="39.833"
x1="17.483"
y1="4.7160001"
id="d-1"><stop
id="stop4346"
stop-color="#148e76" /><stop
id="stop4348"
stop-color="#218059"
offset="1" /></linearGradient><linearGradient
gradientTransform="translate(0,-2)"
gradientUnits="userSpaceOnUse"
x2="43"
y2="31"
x1="4"
y1="18"
id="e-2"><stop
id="stop4351"
stop-color="#292c2f"
style="stop-color:#000000;stop-opacity:1" /><stop
id="stop4353"
stop-opacity="0"
offset="1"
style="stop-color:#000000;stop-opacity:0.32644629" /></linearGradient><linearGradient
gradientTransform="translate(0,14)"
gradientUnits="userSpaceOnUse"
x2="44"
y2="28"
x1="30.625"
y1="14"
id="f"
xlink:href="#e-2" /><linearGradient
gradientTransform="matrix(0.99376,0.0067,-0.00423,-1.56572,50.177,5.628)"
gradientUnits="userSpaceOnUse"
x2="37.757999"
y2="39.833"
x1="17.483"
y1="4.7160001"
id="g"
xlink:href="#d-1" /><linearGradient
x1="428.81601"
gradientTransform="translate(-384.57,-499.8)"
gradientUnits="userSpaceOnUse"
x2="388.86499"
y2="499.67899"
y1="547.63397"
id="a-9"><stop
id="stop7-3"
stop-color="#2a2c2f" /><stop
id="stop9-6"
stop-color="#536161"
offset="1" /></linearGradient><linearGradient
x1="36"
gradientUnits="userSpaceOnUse"
x2="14"
y2="12"
y1="44"
id="b-0"><stop
style="stop-color:#bfc9c9;stop-opacity:1"
id="stop12-6"
stop-color="#536161" /><stop
style="stop-color:#fbfbfb;stop-opacity:1"
id="stop14-2"
stop-color="#f4f5f5"
offset="1" /></linearGradient><linearGradient
gradientTransform="translate(-384.57,-499.8)"
gradientUnits="userSpaceOnUse"
x2="419.974"
y2="539.82501"
x1="418.57001"
y1="529.79999"
id="c-61"><stop
id="stop17-8"
stop-color="#292c2f" /><stop
id="stop19-7"
stop-opacity="0"
offset="1" /></linearGradient><style
type="text/css"
id="current-color-scheme">.ColorScheme-Text { color: #fcfcfc; } </style><linearGradient
gradientTransform="translate(-404.99,-523.8)"
gradientUnits="userSpaceOnUse"
x2="419.974"
y2="539.82501"
x1="406.50101"
y1="527.01398"
id="c-6"><stop
id="stop17-7"
stop-color="#292c2f" /><stop
id="stop19-5"
stop-opacity="0"
offset="1" /></linearGradient><linearGradient
xlink:href="#linearGradient4428"
id="linearGradient4408-1"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.99376,-0.00423,0.00423,0.98887,43.823,-1.66)"
x1="9.875"
y1="-2.3239999"
x2="44.278"
y2="42.318001" /><linearGradient
id="a-8"><stop
id="stop4631"
stop-opacity=".742"
stop-color="#dcedfe" /><stop
id="stop4633"
stop-opacity="0"
stop-color="#dcedfe"
offset="1" /></linearGradient><linearGradient
gradientTransform="translate(15.653,1.018)"
x2="40.709"
gradientUnits="userSpaceOnUse"
y2="30.416"
x1="10.972"
y1="-0.017999999"
id="b-4"><stop
id="stop4636" /><stop
id="stop4638"
stop-opacity="0"
offset="1" /></linearGradient><linearGradient
gradientTransform="translate(23.03,5.02)"
x2="29.129999"
gradientUnits="userSpaceOnUse"
y2="22.129999"
x1="11"
y1="4"
id="c-5"
xlink:href="#b-4" /><linearGradient
gradientTransform="translate(-99.4835,-40.4835)"
x2="30.347"
gradientUnits="userSpaceOnUse"
y2="45.981998"
x1="7.3470001"
y1="6.9819999"
id="d-0"><stop
id="stop4642"
stop-color="#eeeeee" /><stop
id="stop4644"
stop-color="#cccccc"
offset="1" /></linearGradient><linearGradient
gradientTransform="matrix(1,0,0,1.0091,-110.9855,-40.7775)"
x2="0"
gradientUnits="userSpaceOnUse"
y2="32"
y1="36"
id="e-3"><stop
id="stop4647"
stop-color="#c58c00" /><stop
id="stop4649"
stop-color="#ffc318"
offset="1" /></linearGradient><linearGradient
gradientTransform="matrix(1,0,0,1.25,-111.4835,-50.4855)"
x2="19"
gradientUnits="userSpaceOnUse"
y2="33"
x1="23.219999"
y1="42.986"
id="f-6"><stop
id="stop4652"
stop-color="#70431c" /><stop
id="stop4654"
stop-color="#be8c5a"
offset="1" /></linearGradient><linearGradient
gradientTransform="translate(-106.4835,-44.4855)"
x2="21"
gradientUnits="userSpaceOnUse"
y2="46"
x1="13.98"
y1="38.957001"
id="g-1"
xlink:href="#b-4" /><linearGradient
gradientUnits="userSpaceOnUse"
x2="0"
y2="2.987"
y1="43.922001"
id="h"
gradientTransform="translate(-122.5135,-45.5035)"><stop
id="stop4658"
stop-color="#22a7f0" /><stop
id="stop4660"
stop-color="#19b5fe"
offset="1" /></linearGradient><linearGradient
gradientUnits="userSpaceOnUse"
x2="0"
y2="34.040001"
y1="43.922001"
id="i"><stop
id="stop4663"
stop-color="#c8e3fe" /><stop
id="stop4665"
stop-color="#e4f1fe"
offset="1" /></linearGradient><linearGradient
gradientUnits="userSpaceOnUse"
x2="27"
x1="19"
y2="44"
y1="33.998001"
id="j"><stop
id="stop4668"
stop-color="#383e51" /><stop
id="stop4670"
stop-opacity="0"
stop-color="#655c6f"
offset="1" /></linearGradient><radialGradient
gradientTransform="matrix(0.59169,-0.93256,2.10028,1.33257,-80.07,8.555)"
gradientUnits="userSpaceOnUse"
r="16"
id="k"
xlink:href="#a-8"
cy="48.672001"
cx="31.01" /><radialGradient
gradientTransform="matrix(0.53188,-0.49081,0.78529,0.851,-19.809,-0.579)"
gradientUnits="userSpaceOnUse"
r="16"
id="l"
xlink:href="#a-8"
cy="38.130001"
cx="30.299999" /><linearGradient
gradientUnits="userSpaceOnUse"
x2="0"
y2="503.79999"
y1="543.79999"
id="a-0"><stop
id="stop4858"
stop-color="#2a2c2f" /><stop
id="stop4860"
stop-color="#424649"
offset="1" /></linearGradient><linearGradient
gradientUnits="userSpaceOnUse"
x2="0"
y2="506.79999"
y1="532.79999"
id="b-63"><stop
id="stop4863"
stop-color="#989a9b" /><stop
id="stop4865"
stop-color="#f6f6f7"
offset="1" /></linearGradient><path
d="m 426.57,529.8 -16,11 -8,-8 -2,-9 17,-5 z"
id="e-0"
fill-rule="evenodd" /><linearGradient
xlink:href="#linearGradient4305"
id="linearGradient4311"
x1="16.75"
y1="-4.5"
x2="36"
y2="32"
gradientUnits="userSpaceOnUse" /><radialGradient
xlink:href="#linearGradient4301"
id="radialGradient4309"
cx="20.853001"
cy="17.349001"
fx="20.853001"
fy="17.349001"
r="8.1289997"
gradientTransform="matrix(-0.01162882,1.1950891,-1.274916,-0.0124056,46.239569,-9.6229889)"
gradientUnits="userSpaceOnUse" /><linearGradient
gradientTransform="translate(-384.57,-499.8)"
gradientUnits="userSpaceOnUse"
x2="0"
y2="503.79999"
y1="543.79999"
id="a-09"><stop
id="stop7-36"
stop-color="#2a2c2f" /><stop
id="stop9-0"
stop-color="#424649"
offset="1" /></linearGradient><linearGradient
gradientUnits="userSpaceOnUse"
x2="0"
y2="506.79999"
y1="532.79999"
id="b-626"><stop
id="stop12-1"
stop-color="#989a9b" /><stop
id="stop14-8"
stop-color="#f6f6f7"
offset="1" /></linearGradient><path
d="m 426.57,529.8 -16,11 -8,-8 -2,-9 17,-5 z"
id="e-02"
fill-rule="evenodd" /><linearGradient
id="a-3-3"
y1="543.79999"
y2="503.79999"
x2="0"
gradientUnits="userSpaceOnUse"><stop
stop-color="#2a2c2f"
id="stop4268-7" /><stop
offset="1"
stop-color="#424649"
id="stop4270-5" /></linearGradient><linearGradient
id="b-6-9"
y1="532.79999"
y2="506.79999"
x2="0"
gradientUnits="userSpaceOnUse"><stop
stop-color="#989a9b"
id="stop4273-2" /><stop
offset="1"
stop-color="#f6f6f7"
id="stop4275-2" /></linearGradient><path
fill-rule="evenodd"
id="e-5-8"
d="m 426.57,529.8 -16,11 -8,-8 -2,-9 17,-5 z" /><style
id="current-color-scheme-8"
type="text/css">
.ColorScheme-Text { color:#4d4d4d; }
</style><linearGradient
id="e-3-3"
y1="36"
y2="32"
gradientUnits="userSpaceOnUse"
x2="0"
gradientTransform="matrix(1,0,0,1.0091,-110.9855,-40.7775)"><stop
stop-color="#c58c00"
id="stop4647-2" /><stop
offset="1"
stop-color="#ffc318"
id="stop4649-0" /></linearGradient><linearGradient
gradientTransform="translate(-122.5135,-45.5035)"
id="h-5"
y1="43.922001"
y2="2.987"
x2="0"
gradientUnits="userSpaceOnUse"><stop
stop-color="#22a7f0"
id="stop4658-5" /><stop
offset="1"
stop-color="#19b5fe"
id="stop4660-4" /></linearGradient><linearGradient
id="i-7"
y1="43.922001"
y2="34.040001"
x2="0"
gradientUnits="userSpaceOnUse"><stop
stop-color="#c8e3fe"
id="stop4663-6" /><stop
offset="1"
stop-color="#e4f1fe"
id="stop4665-5" /></linearGradient><radialGradient
cx="31.01"
cy="48.672001"
xlink:href="#a-8"
id="k-3"
r="16"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.59169,-0.93256,2.10028,1.33257,-80.07,8.555)" /><radialGradient
cx="30.299999"
cy="38.130001"
xlink:href="#a-8"
id="l-7"
r="16"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.53188,-0.49081,0.78529,0.851,-19.809,-0.579)" /><linearGradient
id="a-0-4"
y1="543.79999"
y2="503.79999"
x2="0"
gradientUnits="userSpaceOnUse"><stop
stop-color="#2a2c2f"
id="stop4858-5" /><stop
offset="1"
stop-color="#424649"
id="stop4860-2" /></linearGradient><linearGradient
id="b-63-5"
y1="532.79999"
y2="506.79999"
x2="0"
gradientUnits="userSpaceOnUse"><stop
stop-color="#989a9b"
id="stop4863-4" /><stop
offset="1"
stop-color="#f6f6f7"
id="stop4865-7" /></linearGradient><path
fill-rule="evenodd"
id="e-0-4"
d="m 426.57,529.8 -16,11 -8,-8 -2,-9 17,-5 z" /></defs><metadata
id="metadata5458" /><g
id="g7"
transform="translate(-0.03125,-0.789875)"><path
id="rect2"
style="display:inline;fill:#09bec8;fill-opacity:1;fill-rule:evenodd;stroke-width:0"
d="m 5.1127156,6.046875 c -2.8151291,0 -5.0814656,2.2298671 -5.0814656,4.999696 v 27.486608 c 0,2.769829 2.2663365,4.999696 5.0814656,4.999696 H 8.135791 c -2.8151294,0 -5.081466,-2.229867 -5.081466,-4.999696 V 11.046571 c 0,-2.7698289 2.2663366,-4.999696 5.081466,-4.999696 z" /><path
id="rect3"
style="display:inline;fill:#09bec8;fill-opacity:1;fill-rule:evenodd;stroke-width:0"
d="m 10.136618,6.046875 c -2.8151294,0 -5.0814659,2.2298671 -5.0814659,4.999696 v 27.486608 c 0,2.769829 2.2663365,4.999696 5.0814659,4.999696 h 32.813167 c 2.815128,0 5.081465,-2.229867 5.081465,-4.999696 V 11.046571 c 0,-2.7698289 -2.266337,-4.999696 -5.081465,-4.999696 z m 16.619965,7.308149 c 0.267194,-0.0088 0.532193,0.06855 0.764205,0.238267 l 12.225291,8.353008 a 1.0163947,1.0000391 0 0 1 0.0059,0.0039 c 0.313439,0.218003 0.524025,0.586665 0.524025,0.988221 0,0.396498 -0.218153,0.770983 -0.514101,0.982362 a 1.0163947,1.0000391 0 0 1 -0.01588,0.01367 l -12.253081,8.370584 0.0258,-0.01953 c -0.373344,0.273043 -0.834162,0.31037 -1.248531,0.130852 -0.415872,-0.18103 -0.764076,-0.631707 -0.740386,-1.146415 v -3.794691 h -1.29617 c -1.600985,10e-7 -3.129285,0.56137 -4.229923,1.523345 -1.100607,0.961954 -1.691176,2.231281 -1.691176,3.540801 -0.0023,1.371524 0.458891,2.71787 1.34778,3.880623 A 1.0163947,1.0000391 0 0 1 18.364165,37.9004 c -1.345089,-0.717505 -2.520949,-1.663886 -3.457729,-2.79084 a 1.0163947,1.0000391 0 0 1 -0.01786,-0.02148 c -1.392729,-1.778012 -2.123977,-3.91735 -2.07427,-6.097285 0.003,-3.139936 1.128598,-5.837783 3.152097,-7.70461 2.026225,-1.869343 4.900125,-2.882637 8.26532,-2.882637 h 1.296172 v -3.841567 l 0.002,0.05078 c -0.02696,-0.534259 0.323248,-0.968975 0.75031,-1.15032 0.154618,-0.06583 0.316073,-0.102146 0.476388,-0.107416 z m 0.803903,2.699055 v 2.843577 c 0,0.432769 -0.203866,0.837647 -0.510131,1.105401 -0.309621,0.270657 -0.691048,0.400366 -1.083782,0.400366 h -1.734844 c -2.954668,0 -5.279942,0.869306 -6.875858,2.341655 -1.595914,1.472348 -2.510958,3.571465 -2.510958,6.257431 a 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 1.0163947,1.0000391 0 0 0 0,0.002 c -0.04163,1.711208 0.526311,3.3917 1.647507,4.827831 0.0032,0.0039 0.0086,0.006 0.01191,0.0098 -0.07478,-0.443541 -0.225065,-0.87352 -0.2243,-1.326091 5.93e-4,-1.905637 0.874063,-3.723874 2.373998,-5.03485 1.500413,-1.311382 3.500971,-2.02722 5.579688,-2.02722 h 1.732858 c 0.392874,1e-6 0.774277,0.129918 1.083782,0.400366 0.306455,0.267845 0.512117,0.67279 0.512117,1.105402 v 2.841624 l 10.073608,-6.882394 z" /></g></svg>
...@@ -3,14 +3,14 @@ ...@@ -3,14 +3,14 @@
# based on https://github.com/sonic2kk/steamtinkerlaunch/blob/master/steamtinkerlaunch # based on https://github.com/sonic2kk/steamtinkerlaunch/blob/master/steamtinkerlaunch
PROGNAME="PortProton" PROGNAME="PortProton"
name_desktop_png="${name_desktop// /_}"
NOSTAPPNAME="$name_desktop" NOSTAPPNAME="$name_desktop"
NOSTEXEPATH="\"${STEAM_SCRIPTS}/${name_desktop}.sh\"" NOSTEXEPATH="\"${STEAM_SCRIPTS}/${name_desktop}.sh\""
# NOSTSTDIR="\"${PATH_TO_GAME}\"" # NOSTSTDIR="\"${PATH_TO_GAME}\""
if [[ -z "${NOSTSTDIR}" ]] ; then if [[ -z "${NOSTSTDIR}" ]] ; then
NOSTSTDIR="\"${STEAM_SCRIPTS}\"" NOSTSTDIR="\"${STEAM_SCRIPTS}\""
fi fi
NOSTICONPATH="${PORT_WINE_PATH}/data/img/${name_desktop}.png" NOSTICONPATH="${PORT_WINE_PATH}/data/img/$name_desktop_png.png"
BASESTEAMGRIDDBAPI="https://www.steamgriddb.com/api/v2" BASESTEAMGRIDDBAPI="https://www.steamgriddb.com/api/v2"
## How Non-Steam AppIDs work, because it took me almost a year to figure this out ## How Non-Steam AppIDs work, because it took me almost a year to figure this out
......
...@@ -40,19 +40,15 @@ fatal () { ...@@ -40,19 +40,15 @@ fatal () {
change_locale () { change_locale () {
if [[ -f "${PORT_WINE_TMP_PATH}/PortProton_loc" ]] ; then if [[ -f "${PORT_WINE_TMP_PATH}/PortProton_loc" ]] ; then
LANGUAGE=$(<"${PORT_WINE_TMP_PATH}/PortProton_loc") LANGUAGE=$(<"${PORT_WINE_TMP_PATH}/PortProton_loc")
fi # TODO: drop legacy check language after 01.01.2025
if [[ "$LANGUAGE" == "RUS" ]] ; then
if [[ "$LANGUAGE" == "RUS" ]] ; then LANGUAGE="ru"
LANGUAGE="ru" echo "ru" > "${PORT_WINE_TMP_PATH}/PortProton_loc"
echo "ru" > "${PORT_WINE_TMP_PATH}/PortProton_loc" elif [[ "$LANGUAGE" == "ENG" ]] ; then
elif [[ "$LANGUAGE" == "ENG" ]] ; then LANGUAGE="en"
LANGUAGE="en" echo "en" > "${PORT_WINE_TMP_PATH}/PortProton_loc"
echo "en" > "${PORT_WINE_TMP_PATH}/PortProton_loc" fi
fi else
if [[ ! -z "${LANGUAGE}" ]] \
&& [[ ! -f "${PORT_WINE_TMP_PATH}/PortProton_loc" ]]
then
[[ ! -f "${pw_yad}" ]] && pw_yad="yad" [[ ! -f "${pw_yad}" ]] && pw_yad="yad"
SET_LANG=( SET_LANG=(
"${pw_yad}" --list "${pw_yad}" --list
...@@ -67,7 +63,7 @@ change_locale () { ...@@ -67,7 +63,7 @@ change_locale () {
) )
out=$("${SET_LANG[@]}") out=$("${SET_LANG[@]}")
[ -n "$out" ] || return [ -n "$out" ] || fatal "Language is not set!"
SET_LANG=$(echo "$out" | cut -d'|' -f2) SET_LANG=$(echo "$out" | cut -d'|' -f2)
echo "${SET_LANG}" > "${PORT_WINE_TMP_PATH}/PortProton_loc" echo "${SET_LANG}" > "${PORT_WINE_TMP_PATH}/PortProton_loc"
...@@ -472,7 +468,7 @@ unpack () { ...@@ -472,7 +468,7 @@ unpack () {
if [[ "$silent" != "true" ]] ; then if [[ "$silent" != "true" ]] ; then
set -o pipefail set -o pipefail
pw_start_progress_bar_cover_block "${COVERS_PATH}/unpacking_${LANGUAGE_GIF}.gif" pw_start_progress_bar_cover_block "${COVERS_PATH}/unpacking_${LANGUAGE_GIF}.gif"
$command "$1" -C "$2" $command "$1" -C "$2" 2>/dev/null
pw_stop_progress_bar_cover_block pw_stop_progress_bar_cover_block
[ "${PIPESTATUS[0]}" != 0 ] && print_error "File $1 unpacking error." && return 1 || return 0 [ "${PIPESTATUS[0]}" != 0 ] && print_error "File $1 unpacking error." && return 1 || return 0
else else
...@@ -588,7 +584,7 @@ pw_reinstall_pp () { ...@@ -588,7 +584,7 @@ pw_reinstall_pp () {
try_remove_file "${PORT_WINE_TMP_PATH}/scripts_ver" try_remove_file "${PORT_WINE_TMP_PATH}/scripts_ver"
echo echo
print_info "Restarting PP for reinstall files..." print_info "Restarting PP for reinstall files..."
export SKIP_CHECK_UPDATES=0 export SKIP_CHECK_UPDATES="0"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -998,6 +994,7 @@ stop_portwine () { ...@@ -998,6 +994,7 @@ stop_portwine () {
if [[ ! -z "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" ]] ; then if [[ ! -z "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" ]] ; then
kill -s SIGUSR1 "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" 2>/dev/null kill -s SIGUSR1 "$(pgrep -a yad_gui_pp | grep "\--notification" | awk '{print $1}')" 2>/dev/null
fi fi
pw_auto_create_shortcut
add_in_stop_portwine add_in_stop_portwine
unset SKIP_CHECK_UPDATES unset SKIP_CHECK_UPDATES
exit 0 exit 0
...@@ -1229,6 +1226,12 @@ check_dirs_and_files_in_pfx () { ...@@ -1229,6 +1226,12 @@ check_dirs_and_files_in_pfx () {
[ ! -d "${WINEPREFIX}/dosdevices/z:" ] && try_force_link_dir "/" "${WINEPREFIX}/dosdevices/z:" [ ! -d "${WINEPREFIX}/dosdevices/z:" ] && try_force_link_dir "/" "${WINEPREFIX}/dosdevices/z:"
[ ! -d "${WINEPREFIX}/dosdevices/h:" ] && try_force_link_dir "$HOME" "${WINEPREFIX}/dosdevices/h:" [ ! -d "${WINEPREFIX}/dosdevices/h:" ] && try_force_link_dir "$HOME" "${WINEPREFIX}/dosdevices/h:"
if [ ! -d "${WINEPREFIX}/dosdevices/s:" ] \
&& [ -d "$HOME/.local/share/Steam/steamapps/common/" ]
then
try_force_link_dir "$HOME/.local/share/Steam/steamapps/common/" "${WINEPREFIX}/dosdevices/s:"
fi
create_new_dir "${WINEPREFIX}/drive_c/windows/Fonts/" create_new_dir "${WINEPREFIX}/drive_c/windows/Fonts/"
LN_FONTS="arialbd.ttf courbd.ttf georgia.ttf micross.ttf msyh.ttf simsun.ttc arial.ttf cour.ttf malgun.ttf msgothic.ttc nirmala.ttf times.ttf" LN_FONTS="arialbd.ttf courbd.ttf georgia.ttf micross.ttf msyh.ttf simsun.ttc arial.ttf cour.ttf malgun.ttf msgothic.ttc nirmala.ttf times.ttf"
for link_font in $LN_FONTS ; do for link_font in $LN_FONTS ; do
...@@ -1259,25 +1262,42 @@ check_dirs_and_files_in_pfx () { ...@@ -1259,25 +1262,42 @@ check_dirs_and_files_in_pfx () {
then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Local" "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data" then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Local" "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data"
fi fi
find "${WINEPREFIX}/dosdevices" -xtype l -maxdepth 1 2>/dev/null -exec rm {} \; DRIVES=(d e f g i j k l m n o p q r t u v w x y)
DEF_MOUNT_DIRS=('/media' '/mnt' '/run/media')
MOUNT_DIRS=($(find "${DEF_MOUNT_DIRS[@]}" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | sort -u))
rm -f "${WINEPREFIX}/dosdevices/com"*
rm -f "${WINEPREFIX}/dosdevices/"*:: rm -f "${WINEPREFIX}/dosdevices/"*::
DRIVES=(d e f g i j k l m n o p q r s t u v w x y)
DEF_MOUNT_DIRS=('/media' "/media/$USER" '/mnt' '/run/media' "/run/media/$USER") for drive in "${DRIVES[@]}"; do
MOUNT_DIRS=($(find "${DEF_MOUNT_DIRS[@]}" -maxdepth 1 -type d 2>/dev/null | sort -u)) rm -f "${WINEPREFIX}/dosdevices/${drive}:"
done
for drive_dir in "${MOUNT_DIRS[@]}" ; do for drive_dir in "${MOUNT_DIRS[@]}" ; do
if [[ ! "${DEF_MOUNT_DIRS[@]}" =~ "$drive_dir" ]] \ if mountpoint -q "$drive_dir" ; then
&& ! realpath "${WINEPREFIX}/dosdevices"/*: | grep "$drive_dir" &>/dev/null ; then if ! realpath "${WINEPREFIX}/dosdevices"/*: | grep -w "$drive_dir$" &>/dev/null ; then
drive_num=0 drive_num=0
while [[ "$drive_num" -lt "${#DRIVES[@]}" ]] ; do while [[ "$drive_num" -lt "${#DRIVES[@]}" ]] ; do
drive_path="${WINEPREFIX}/dosdevices/${DRIVES[$drive_num]}:" drive_path="${WINEPREFIX}/dosdevices/${DRIVES[$drive_num]}:"
if [ ! -d "$drive_path" ] ; then mount_point=$(df -P "$drive_dir" | awk 'NR==2 {print $1}')
ln -sf "$drive_dir" "$drive_path" mount_name=$(lsblk -no pkname "$mount_point" 2>/dev/null)
break
else if [[ ! -L "$drive_path" ]] ; then
((drive_num++)) if [[ $(cat "/sys/class/block/$mount_name/removable") != "1" ]] 2>/dev/null ; then
fi if [[ ! $(echo "$mount_point" | grep "mmc") ]] 2>/dev/null ; then
done ln -sf "$drive_dir" "$drive_path"
break
else
((drive_num++))
fi
else
((drive_num++))
fi
else
((drive_num++))
fi
done
fi
fi fi
done done
} }
...@@ -1294,6 +1314,177 @@ check_nvidia_rtx () { ...@@ -1294,6 +1314,177 @@ check_nvidia_rtx () {
return 1 return 1
} }
create_shortcut_from_link () {
PORTPROTON_NAME="$link_name"
PW_RESIZE_TO=128
try_remove_file "${PORT_WINE_PATH}/data/img/launcher.png"
try_remove_file "${PORT_WINE_PATH}/data/img/Launcher.png"
if [[ ! -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] ; then
if command -v sestatus &>/dev/null && sestatus | grep "Current mode: *enforcing" ; then
SESTATUS="1"
else
SESTATUS="0"
fi
if command -v exe-thumbnailer &>/dev/null && [[ "${SESTATUS}" == "0" ]] ; then
exe-thumbnailer -s 128 "$(readlink -f "${exe_path}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
else
env PYTHONPATH="${PW_PLUGINS_PATH}/portable/lib/python3.9/site-packages/" \
LD_LIBRARY_PATH="${PW_PLUGINS_PATH}/portable/lib/lib64" \
"${PW_WINELIB}/runtime/files/bin/python3.9" \
"${PW_PLUGINS_PATH}/portable/bin/exe-thumbnailer" -s 128 "$(readlink -f "${exe_path}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
fi
fi
if [[ -f "${PORT_WINE_PATH}/${PORTPROTON_NAME}.desktop" ]] ; then
if ! grep -i "${exe_path}" "${PORT_WINE_PATH}/${PORTPROTON_NAME}.desktop" &>/dev/null ; then
create_new_dir "${PORT_WINE_PATH}/duplicate"
if [[ "$(ls -A "${PORT_WINE_PATH}/duplicate/${PORTPROTON_NAME} - ${prefix_name}"* 2>/dev/null)" ]] ; then
if ! grep -i "${exe_path}" "${PORT_WINE_PATH}/duplicate/${PORTPROTON_NAME} - ${prefix_name}"* &>/dev/null ; then
number_duplication="$(ls "${PORT_WINE_PATH}/duplicate"/ 2>/dev/null)"
number_duplication="${number_duplication//${PORTPROTON_NAME} - ${prefix_name}/}"
number_duplication="${number_duplication//].desktop/}"
number_duplication=(${number_duplication//[/})
dup_prev="0"
for dup_num in ${number_duplication[@]} ; do
dup_num_list="$(("$dup_num" - 1))"
if [[ "$dup_num_list" != "$dup_prev" ]] ; then
dup_num_list_new+="$dup_num_list "
fi
dup_prev="$dup_num"
done
if [[ -z "$dup_num_list_new" ]] ; then
number_duplication="${dup_prev}"
else
dup_helper="$(echo ${dup_num_list_new} | awk '{print $1}')"
for dup in ${number_duplication[@]} ; do
if (( "$dup_helper" > "$dup" )) ; then
dup_helper_new+="$dup "
fi
done
number_duplication="$(echo ${dup_helper_new} | awk '{print $NF}')"
fi
number_duplication="$(("$number_duplication" + 1))"
else
exit 0
fi
else
number_duplication="1"
fi
PW_NAME_DESKTOP="${PORT_WINE_PATH}/duplicate/${PORTPROTON_NAME} - ${prefix_name} [$number_duplication].desktop"
SHORTCUT_DUPLICATE="true"
else
exit 0
fi
else
PW_NAME_DESKTOP="${PORT_WINE_PATH}/${PORTPROTON_NAME}.desktop"
SHORTCUT_DUPLICATE=""
fi
echo "[Desktop Entry]" > "${PW_NAME_DESKTOP}"
echo "Name=${PORTPROTON_NAME}" >> "${PW_NAME_DESKTOP}"
if [[ ! -z "$link_cmd" ]] ; then
if check_flatpak
then echo "Exec=flatpak run ru.linux_gaming.PortProton \"${exe_path}\" \"${link_cmd}\"" >> "${PW_NAME_DESKTOP}"
else echo "Exec=env \"${PORT_SCRIPTS_PATH}/start.sh\" \"${exe_path}\" \"${link_cmd}\"" >> "${PW_NAME_DESKTOP}"
fi
else
if check_flatpak
then echo "Exec=flatpak run ru.linux_gaming.PortProton \"${exe_path}\"" >> "${PW_NAME_DESKTOP}"
else echo "Exec=env \"${PORT_SCRIPTS_PATH}/start.sh\" \"${exe_path}\"" >> "${PW_NAME_DESKTOP}"
fi
fi
{
echo "Type=Application"
echo "Categories=Game"
echo "StartupNotify=true"
echo "Path=${PORT_SCRIPTS_PATH}/"
echo "Icon=${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
} >> "${PW_NAME_DESKTOP}"
chmod u+x "${PW_NAME_DESKTOP}"
[[ -z "${PW_SHORTCUT_DESKTOP}" ]] && PW_SHORTCUT_DESKTOP="TRUE"
if [[ "$DESKTOP_SESSION" =~ "gnome" ]] ; then
try_remove_file "${HOME}/.local/share/applications/${PORTPROTON_NAME}.desktop"
cp -f "${PW_NAME_DESKTOP}" "${HOME}/.local/share/applications/"
else
if [[ ${PW_SHORTCUT_DESKTOP} == "TRUE" ]] ; then
if [[ -d "${HOME}/Desktop" ]] ; then
cp -f "${PW_NAME_DESKTOP}" "${HOME}/Desktop/"
elif [[ -d "${HOME}/Рабочий стол" ]] ; then
cp -f "${PW_NAME_DESKTOP}" "${HOME}/Рабочий стол/"
elif [[ $(xdg-user-dir DESKTOP) ]] ; then
cp -f "${PW_NAME_DESKTOP}" "$(xdg-user-dir DESKTOP)"
fi
fi
fi
}
pw_auto_create_shortcut () {
[[ "${PW_CHECK_AUTOINSTALL}" == 1 ]] && return 0
unset LINKS
orig_IFS="$IFS" && IFS=$'\n'
for link_file in "${PORT_WINE_PATH}"/prefixes/*/drive_c/users/steamuser/Desktop/*.lnk
do
if echo "$link_file" | grep "\*.lnk" &>/dev/null
then continue
else LINKS+=("$link_file")
fi
done
IFS="$orig_IFS"
[[ -z "$LINKS" ]] && return 0
for link_file in "${LINKS[@]}"; do
if timeout 3 exiftool "$link_file" 2>/dev/null > "${PW_TMPFS_PATH}/exiftool.tmp" ; then
prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
if fix_icon_name=$(grep -i "Icon File Name" "${PW_TMPFS_PATH}/exiftool.tmp" 2>/dev/null) \
&& [[ "${fix_icon_name//*.exe/true}" == "true" ]] ; then
link_drive=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
link_path=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
else
link_drive=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
link_path=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
fi
link_name=$(sed -n 's/^File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|\.lnk||')
link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
else
if ! command -v exiftool &>/dev/null ; then
print_warning "use portable exiftool"
env PERL5LIB="${PW_PLUGINS_PATH}/portable/lib/perl5" "${PW_PLUGINS_PATH}/portable/bin/exiftool" "$link_file" 2>/dev/null > "${PW_TMPFS_PATH}/exiftool.tmp"
prefix_name=$(echo "$link_file" | awk -F"/prefixes/" '{print $2}' | awk -F"/" '{print $1}')
if fix_icon_name=$(grep -i "Icon File Name" "${PW_TMPFS_PATH}/exiftool.tmp" 2>/dev/null) \
&& [[ "${fix_icon_name//*.exe/true}" == "true" ]] ; then
link_drive=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
link_path=$(sed -n 's/^Icon File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
else
link_drive=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | cut -d: -f1 | awk '{print tolower($0)}')
link_path=$(sed -n 's/^Local Base Path\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|%ProgramFiles(x86)%|C:\\Program Files (x86)|gi;s|%ProgramFiles%|C:\\Program Files|gi' | sed "s|^.|${PORT_WINE_PATH}/data/prefixes/$prefix_name/dosdevices/$link_drive|g" | sed 's/\\/\//g')
fi
link_name=$(sed -n 's/^File Name\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp" | sed 's|\.lnk||')
link_cmd=$(sed -n 's/^Command Line Arguments\s*:\s*//p' "${PW_TMPFS_PATH}/exiftool.tmp")
else
yad_error "exiftool - broken!"
fi
fi
try_remove_file "$link_file"
if ! exe_path="$(realpath "${link_path}")" ; then
print_warning "Removed broken link for: $link_name"
else
if [[ "${SHORTCUT_DUPLICATE}" == "true" ]] ; then
print_info "Created link for duplicate: $link_name - $prefix_name [$number_duplication]"
else
print_info "Created link for: $link_name"
fi
create_shortcut_from_link
fi
done
}
pw_init_db () { pw_init_db () {
if [[ -f "${portwine_exe}" ]] ; then if [[ -f "${portwine_exe}" ]] ; then
PORTWINE_DB="$(basename "${portwine_exe}" .exe)" PORTWINE_DB="$(basename "${portwine_exe}" .exe)"
...@@ -1356,7 +1547,7 @@ pw_init_db () { ...@@ -1356,7 +1547,7 @@ pw_init_db () {
else else
if [[ "${PW_DISABLED_CREATE_DB}" != 1 ]] ; then if [[ "${PW_DISABLED_CREATE_DB}" != 1 ]] ; then
if [[ ! -z "${PORTWINE_DB}" ]] ; then if [[ ! -z "${PORTWINE_DB}" ]] ; then
export PORTWINE_DB_FILE=$(grep -il "\#${PORTWINE_DB}.exe" "${PORT_SCRIPTS_PATH}/portwine_db"/*) export PORTWINE_DB_FILE=$(grep -il "#${PORTWINE_DB}.exe" "${PORT_SCRIPTS_PATH}/portwine_db"/*)
if [[ -z "${PORTWINE_DB_FILE}" ]] ; then if [[ -z "${PORTWINE_DB_FILE}" ]] ; then
{ {
echo "#!/usr/bin/env bash" echo "#!/usr/bin/env bash"
...@@ -1463,11 +1654,13 @@ pw_port_update () { ...@@ -1463,11 +1654,13 @@ pw_port_update () {
xcsd=$("${pw_yad}" --title "$(gettext "Update scripts:") v.(${scripts_install_ver}${BRANCH_VERSION})" --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ xcsd=$("${pw_yad}" --title "$(gettext "Update scripts:") v.(${scripts_install_ver}${BRANCH_VERSION})" --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--form --separator='%%%' --width=1000 --height=500 \ --form --separator='%%%' --width=1000 --height=500 \
--field=":TXT" "${CHANGLOG_NEWS}" \ --field=":TXT" "${CHANGLOG_NEWS}" \
--button="$(gettext "EXIT")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":252 \
--button="$(gettext "DO NOT REMIND ME")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":16 \ --button="$(gettext "DO NOT REMIND ME")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":16 \
--button="$(gettext "REMIND ME LATER")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":18 \ --button="$(gettext "REMIND ME LATER")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":18 \
--button="$(gettext "UPDATING NOW")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":20 2>/dev/null) --button="$(gettext "UPDATING NOW")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":20 2>/dev/null)
YAD_STATUS="$?" YAD_STATUS="$?"
# --button="$(gettext "EXIT")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":252 \
case "${YAD_STATUS}" in case "${YAD_STATUS}" in
1|252) exit 0 ;; 1|252) exit 0 ;;
16) xcsd="$(gettext "DO NOT REMIND ME")" ;; 16) xcsd="$(gettext "DO NOT REMIND ME")" ;;
...@@ -1579,6 +1772,11 @@ edit_user_conf_from_gui () { ...@@ -1579,6 +1772,11 @@ edit_user_conf_from_gui () {
} }
pw_create_gui_png () { pw_create_gui_png () {
if echo "$(basename "${portwine_exe}")" | grep -i "setup\|install" &>/dev/null ; then
export PW_ICON_FOR_YAD="${PORT_WINE_PATH}/data/img/setup.png"
return 0
fi
if [[ -z "$PORTPROTON_NAME" ]] \ if [[ -z "$PORTPROTON_NAME" ]] \
|| [[ "$PW_NO_RESTART_PPDB" == "1" ]] || [[ "$PW_NO_RESTART_PPDB" == "1" ]]
then then
...@@ -1612,12 +1810,15 @@ pw_create_gui_png () { ...@@ -1612,12 +1810,15 @@ pw_create_gui_png () {
edit_db_from_gui PORTPROTON_NAME edit_db_from_gui PORTPROTON_NAME
fi fi
PW_RESIZE_TO="128" PW_RESIZE_TO="128"
try_remove_file "${PORT_WINE_PATH}/data/img/setup.png"
try_remove_file "${PORT_WINE_PATH}/data/img/Setup.png"
try_remove_file "${PORT_WINE_PATH}/data/img/launcher.png" try_remove_file "${PORT_WINE_PATH}/data/img/launcher.png"
try_remove_file "${PORT_WINE_PATH}/data/img/Launcher.png" try_remove_file "${PORT_WINE_PATH}/data/img/Launcher.png"
if [[ ! -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] ; then if [[ ! -f "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" ]] ; then
if command -v exe-thumbnailer &>/dev/null ; then if command -v sestatus &>/dev/null && sestatus | grep "Current mode: *enforcing" ; then
SESTATUS="1"
else
SESTATUS="0"
fi
if command -v exe-thumbnailer &>/dev/null && [[ "${SESTATUS}" == "0" ]] ; then
exe-thumbnailer -s "${PW_RESIZE_TO}" "$(readlink -f "${portwine_exe}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png" exe-thumbnailer -s "${PW_RESIZE_TO}" "$(readlink -f "${portwine_exe}")" "${PORT_WINE_PATH}/data/img/${PORTPROTON_NAME}.png"
else else
env PYTHONPATH="${PW_PLUGINS_PATH}/portable/lib/python3.9/site-packages/" \ env PYTHONPATH="${PW_PLUGINS_PATH}/portable/lib/python3.9/site-packages/" \
...@@ -1665,7 +1866,7 @@ pw_find_exe () { ...@@ -1665,7 +1866,7 @@ pw_find_exe () {
YAD_STATUS="$?" YAD_STATUS="$?"
if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then
if [[ -z "${PW_SET_FIND_EXE}" ]] ; then if [[ -z "${PW_SET_FIND_EXE}" ]] ; then
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
print_info "Restarting..." print_info "Restarting..."
fi fi
...@@ -1676,12 +1877,54 @@ pw_find_exe () { ...@@ -1676,12 +1877,54 @@ pw_find_exe () {
if [[ ! -z "${PW_SET_FIND_EXE}" ]] ; then if [[ ! -z "${PW_SET_FIND_EXE}" ]] ; then
portwine_exe="${PW_PATH_FOR_FIND}$(echo "${PW_SET_FIND_EXE}" | awk -F'|' '{print $1}')" portwine_exe="${PW_PATH_FOR_FIND}$(echo "${PW_SET_FIND_EXE}" | awk -F'|' '{print $1}')"
portwine_create_shortcut silent portwine_create_shortcut silent
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
fi fi
} }
pw_duplicate () {
export USE_DUPLICATE_GUI="1"
orig_IFS="$IFS" && IFS=$'\n'
PW_DESKTOP_D="$(ls "${PORT_WINE_PATH}"/duplicate/ | grep .desktop)"
for PW_DESKTOP_FILES_D in ${PW_DESKTOP_D} ; do
PW_NAME_D_ICON_D="$(grep Icon "${PORT_WINE_PATH}/duplicate/${PW_DESKTOP_FILES_D}" | awk -F= '{print $2}')"
PW_NAME_D_ICON_48_D="${PW_NAME_D_ICON_D//".png"/"_48.png"}"
if [[ ! -f "${PW_NAME_D_ICON_48_D}" ]] \
&& [[ -f "${PW_NAME_D_ICON_D}" ]] \
&& command -v "convert" 2>/dev/null
then
convert "${PW_NAME_D_ICON_D}" -resize 48x48 "${PW_NAME_D_ICON_48_D}"
fi
PW_DESKTOP_HELPER_D="${PW_DESKTOP_FILES_D// /@_@}"
PW_GENERATE_BUTTONS_D+="--field= ${PW_DESKTOP_FILES_D//".desktop"/""}!${PW_NAME_D_ICON_48_D}!:FBTN%@bash -c \"run_desktop_b_click "${PW_DESKTOP_HELPER_D}"\"%"
done
IFS="$orig_IFS"
old_IFS=$IFS && IFS="%"
"${pw_yad}" --width="${PW_DUPLICATE_SIZE_W}" --height="${PW_DUPLICATE_SIZE_H}" \
--columns="$MAIN_GUI_COLUMNS" --homogeneous-column --form \
--gui-type-layout=${MAIN_MENU_GUI_TYPE_LAYOUT} \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" \
--align-buttons --scroll --separator=" " ${PW_GENERATE_BUTTONS_D} \
--button="$(gettext "MAIN MENU")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png" 2>/dev/null
IFS="$orig_IFS"
pw_yad_set_form
case "$PW_YAD_SET" in
*.desktop)
run_desktop_b_click
;;
pw_duplicate)
export SKIP_CHECK_UPDATES=1
/usr/bin/env bash -c ${pw_full_command_line[*]} &
print_info "Restarting..."
exit 0
;;
esac
}
pw_create_unique_exe () { pw_create_unique_exe () {
BASEDIR_GAME="$(dirname "$portwine_exe")" BASEDIR_GAME="$(dirname "$portwine_exe")"
if [[ -d "$BASEDIR_GAME" ]] ; then if [[ -d "$BASEDIR_GAME" ]] ; then
...@@ -1851,6 +2094,7 @@ start_portwine () { ...@@ -1851,6 +2094,7 @@ start_portwine () {
pw_wineboot -r pw_wineboot -r
fi fi
fi fi
rm -f "${PORT_WINE_PATH}"/prefixes/*/drive_c/users/*/Desktop/*.lnk
echo "${PW_WINE_USE}" > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver" echo "${PW_WINE_USE}" > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.wine_ver"
...@@ -3176,11 +3420,14 @@ pw_start_progress_bar_install_game () { ...@@ -3176,11 +3420,14 @@ pw_start_progress_bar_install_game () {
} }
pw_stop_progress_bar () { pw_stop_progress_bar () {
sleep 0.1
for PW_KILL_YAD_PID in "$PW_YAD_PID_PROGRESS_BAR_BLOCK" "$PW_YAD_PID_PROGRESS_BAR_CS" \ for PW_KILL_YAD_PID in "$PW_YAD_PID_PROGRESS_BAR_BLOCK" "$PW_YAD_PID_PROGRESS_BAR_CS" \
"$PW_YAD_PID_PFX_COVER_UI" "$PW_YAD_PID_PROGRESS_BAR_COVER" "$PW_YAD_PID_PFX_COVER_UI" "$PW_YAD_PID_PROGRESS_BAR_COVER"
do do
kill -s SIGUSR1 "$PW_KILL_YAD_PID" &>/dev/null kill -s SIGUSR1 "$PW_KILL_YAD_PID" &>/dev/null
done done
unset PW_YAD_PID_PROGRESS_BAR_BLOCK PW_YAD_PID_PROGRESS_BAR_CS \
PW_YAD_PID_PFX_COVER_UI PW_YAD_PID_PROGRESS_BAR_COVER
return 0 return 0
} }
export -f pw_stop_progress_bar export -f pw_stop_progress_bar
...@@ -3199,10 +3446,24 @@ export -f pw_stop_progress_bar_cover_block ...@@ -3199,10 +3446,24 @@ export -f pw_stop_progress_bar_cover_block
open_changelog () { open_changelog () {
[[ "$LANGUAGE" == ru ]] && local PW_CHANGELOG_FILE="changelog_ru" || local PW_CHANGELOG_FILE="changelog_en" [[ "$LANGUAGE" == ru ]] && local PW_CHANGELOG_FILE="changelog_ru" || local PW_CHANGELOG_FILE="changelog_en"
"${pw_yad}" --title="$(gettext "CHANGELOG")" --no-buttons --text-align=center \ "${pw_yad}" --title="$(gettext "CHANGELOG")" --no-buttons \
--text-info --show-uri --wrap --width=1200 --height=700 --uri-color=red \ --text-info --show-uri --wrap --width=1200 --height=700 --uri-color=red \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--filename="${PORT_WINE_PATH}/data/${PW_CHANGELOG_FILE}" &>/dev/null --filename="${PORT_WINE_PATH}/data/${PW_CHANGELOG_FILE}" &>/dev/null
YAD_STATUS="$?"
if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] && [[ -z "$WINEPREFIX" ]] ; then
export SKIP_CHECK_UPDATES="1"
if [[ -z "${PW_ALL_DF}" ]] ; then
export TAB_MAIN_MENU="4"
else
export TAB_MAIN_MENU="5"
fi
/usr/bin/env bash -c ${pw_full_command_line[*]} &
print_info "Restarting..."
exit 0
else
exit 0
fi
} }
export -f open_changelog export -f open_changelog
...@@ -3316,7 +3577,7 @@ gui_proton_downloader () { ...@@ -3316,7 +3577,7 @@ gui_proton_downloader () {
if [[ -z "${PROTON_PW_GIT}" ]] ; then if [[ -z "${PROTON_PW_GIT}" ]] ; then
yad_error "$(gettext "Error: check wine.")" yad_error "$(gettext "Error: check wine.")"
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
fi fi
...@@ -3395,7 +3656,7 @@ gui_proton_downloader () { ...@@ -3395,7 +3656,7 @@ gui_proton_downloader () {
--button="$(gettext "OK")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":0 2>/dev/null --button="$(gettext "OK")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":0 2>/dev/null
YAD_WINE_STATUS="$?" YAD_WINE_STATUS="$?"
if [[ "$YAD_WINE_STATUS" == "1" || "$YAD_WINE_STATUS" == "252" ]] ; then if [[ "$YAD_WINE_STATUS" == "1" || "$YAD_WINE_STATUS" == "252" ]] ; then
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
fi fi
...@@ -3410,7 +3671,7 @@ gui_proton_downloader () { ...@@ -3410,7 +3671,7 @@ gui_proton_downloader () {
&& [[ -z "${VERSION_INSTALLED_WINE}" ]] && [[ -z "${VERSION_INSTALLED_WINE}" ]]
then then
print_info "Nothing to do." print_info "Nothing to do."
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
fi fi
...@@ -3499,7 +3760,10 @@ gui_edit_db () { ...@@ -3499,7 +3760,10 @@ gui_edit_db () {
if check_wayland_session ; then if check_wayland_session ; then
rm_from_var PW_EDIT_DB_LIST "PW_USE_US_LAYOUT" rm_from_var PW_EDIT_DB_LIST "PW_USE_US_LAYOUT"
else
rm_from_var PW_EDIT_DB_LIST "PW_USE_NATIVE_WAYLAND"
fi fi
if check_flatpak ; then if check_flatpak ; then
rm_from_var PW_EDIT_DB_LIST "PW_USE_RUNTIME" rm_from_var PW_EDIT_DB_LIST "PW_USE_RUNTIME"
fi fi
...@@ -3665,7 +3929,7 @@ A brief instruction: ...@@ -3665,7 +3929,7 @@ A brief instruction:
--button="$(gettext "OPEN THE SETTINGS FILE")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(gettext "Open the <b>.ppdb</b> settings file in a system text editor to view and change variables manually")":150 \ --button="$(gettext "OPEN THE SETTINGS FILE")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(gettext "Open the <b>.ppdb</b> settings file in a system text editor to view and change variables manually")":150 \
--button="$(gettext "SAVE CHANGES")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(gettext "Save the current changes, and go to the previous menu")":0 2>/dev/null --button="$(gettext "SAVE CHANGES")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"$(gettext "Save the current changes, and go to the previous menu")":0 2>/dev/null
YAD_STATUS="$?" YAD_STATUS="$?"
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
case "$YAD_STATUS" in case "$YAD_STATUS" in
1|252) 1|252)
...@@ -3731,8 +3995,8 @@ A brief instruction: ...@@ -3731,8 +3995,8 @@ A brief instruction:
exit 0 exit 0
;; ;;
150) 150)
xdg-open "${PORTWINE_DB_FILE}" & print_info "Restarting PP after update ppdb file..."
exit 0 gui_edit_db_file
;; ;;
esac esac
} }
...@@ -3848,7 +4112,7 @@ fi ...@@ -3848,7 +4112,7 @@ fi
YAD_VKBASALT_STATUS="$?" YAD_VKBASALT_STATUS="$?"
case "${YAD_VKBASALT_STATUS}" in case "${YAD_VKBASALT_STATUS}" in
1|252) 1|252)
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 ;; exit 0 ;;
180) 180)
...@@ -3878,7 +4142,7 @@ fi ...@@ -3878,7 +4142,7 @@ fi
else export PW_VKBASALT_FFX_CAS="0.$YAD_CAS_SET" else export PW_VKBASALT_FFX_CAS="0.$YAD_CAS_SET"
fi fi
edit_db_from_gui PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PW_VKBASALT edit_db_from_gui PW_VKBASALT_EFFECTS PW_VKBASALT_FFX_CAS PW_VKBASALT
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -4015,14 +4279,14 @@ fi ...@@ -4015,14 +4279,14 @@ fi
YAD_MANGOHUD_STATUS="$?" YAD_MANGOHUD_STATUS="$?"
case "${YAD_MANGOHUD_STATUS}" in case "${YAD_MANGOHUD_STATUS}" in
1|252) 1|252)
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
182) 182)
export PW_MANGOHUD=0 export PW_MANGOHUD=0
edit_db_from_gui PW_MANGOHUD FPS_LIMIT edit_db_from_gui PW_MANGOHUD FPS_LIMIT
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
...@@ -4096,7 +4360,7 @@ fi ...@@ -4096,7 +4360,7 @@ fi
gui_mangohud gui_mangohud
fi fi
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -4214,7 +4478,7 @@ fi ...@@ -4214,7 +4478,7 @@ fi
YAD_DGV2_STATUS="$?" YAD_DGV2_STATUS="$?"
case "${YAD_DGV2_STATUS}" in case "${YAD_DGV2_STATUS}" in
1|252) 1|252)
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
...@@ -4222,14 +4486,14 @@ fi ...@@ -4222,14 +4486,14 @@ fi
sed -i '/PW_DGV2/d' "$portwine_exe".ppdb sed -i '/PW_DGV2/d' "$portwine_exe".ppdb
export PW_DGVOODOO2=0 export PW_DGVOODOO2=0
edit_db_from_gui PW_DGVOODOO2 edit_db_from_gui PW_DGVOODOO2
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
164) 164)
export PW_DGVOODOO2=0 export PW_DGVOODOO2=0
edit_db_from_gui PW_DGVOODOO2 edit_db_from_gui PW_DGVOODOO2
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
...@@ -4269,7 +4533,7 @@ fi ...@@ -4269,7 +4533,7 @@ fi
PW_DGV2_FPS_LIMIT PW_DGV2_BIT_DEPTH PW_DGV2_BRIGHTNESS PW_DGV2_COLOR PW_DGV2_CONTRAST PW_DGV2_VIDEOCARD PW_DGV2_DISPLAY_ROI \ PW_DGV2_FPS_LIMIT PW_DGV2_BIT_DEPTH PW_DGV2_BRIGHTNESS PW_DGV2_COLOR PW_DGV2_CONTRAST PW_DGV2_VIDEOCARD PW_DGV2_DISPLAY_ROI \
PW_DGV2_CURSOR_SCALE PW_DGV2_RESAMPLING PW_DGV2_CURSOR_SCALE PW_DGV2_RESAMPLING
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -4376,7 +4640,7 @@ fi ...@@ -4376,7 +4640,7 @@ fi
old_IFS=$IFS old_IFS=$IFS
IFS="%" IFS="%"
"${pw_yad}" --plug=$KEY_GS_GUI --tabnum="1" --form --columns=3 --separator=" " --text-align=center --text "$GAMESCOPE_NEED_INSTALL" \ "${pw_yad}" --plug=$KEY_GS_GUI --tabnum="1" --form --columns=4 --separator=" " --text-align=center --text "$GAMESCOPE_NEED_INSTALL" \
--gui-type-text=${GAMESCOPE_GUI_TYPE_TEXT_UP} --gui-type-layout=${GAMESCOPE_GUI_TYPE_LAYOUT_UP} $YAD_TEXT_SELECTION \ --gui-type-text=${GAMESCOPE_GUI_TYPE_TEXT_UP} --gui-type-layout=${GAMESCOPE_GUI_TYPE_LAYOUT_UP} $YAD_TEXT_SELECTION \
${ADD_CHK_BOX_GS} \ ${ADD_CHK_BOX_GS} \
1> "${PW_TMPFS_PATH}/tmp_yad_gs_set" 2>/dev/null & 1> "${PW_TMPFS_PATH}/tmp_yad_gs_set" 2>/dev/null &
...@@ -4384,7 +4648,7 @@ fi ...@@ -4384,7 +4648,7 @@ fi
GAMESCOPE_XRANDR="$(grep -e '[0-9]x' "${PW_TMPFS_PATH}/xrandr.tmp" | awk '{print $1}' | sort -rVu | grep "^[1-2]" | tr '\n' '!' | sed 's/.$//')" GAMESCOPE_XRANDR="$(grep -e '[0-9]x' "${PW_TMPFS_PATH}/xrandr.tmp" | awk '{print $1}' | sort -rVu | grep "^[1-2]" | tr '\n' '!' | sed 's/.$//')"
"${pw_yad}" --plug=$KEY_GS_GUI --tabnum="2" --form --columns=3 --separator="%" --homogeneous-row \ "${pw_yad}" --plug=$KEY_GS_GUI --tabnum="2" --form --columns=2 --separator="%" --homogeneous-row \
--gui-type-text=${GAMESCOPE_GUI_TYPE_TEXT_DOWN} --gui-type-layout=${GAMESCOPE_GUI_TYPE_LAYOUT_DOWN} \ --gui-type-text=${GAMESCOPE_GUI_TYPE_TEXT_DOWN} --gui-type-layout=${GAMESCOPE_GUI_TYPE_LAYOUT_DOWN} \
--field="${CHKBOX_SPACE}$(gettext "Show resolution")!$(gettext "Set the resolution used by gamescope. Resizing the gamescope window will update these settings. Defaults to 1280x720.") :${GS_CBE}" "$(combobox_fix_disabled "${PW_GS_SHOW_RESOLUTION}" "${GAMESCOPE_XRANDR}")" \ --field="${CHKBOX_SPACE}$(gettext "Show resolution")!$(gettext "Set the resolution used by gamescope. Resizing the gamescope window will update these settings. Defaults to 1280x720.") :${GS_CBE}" "$(combobox_fix_disabled "${PW_GS_SHOW_RESOLUTION}" "${GAMESCOPE_XRANDR}")" \
--field="${CHKBOX_SPACE}$(gettext "Internal resolution")!$(gettext "Scale internal resolution (0.0 is unused)") :${GS_NUMN}" "${PW_GS_INTERNAL_RESOLUTION}:!0..2" \ --field="${CHKBOX_SPACE}$(gettext "Internal resolution")!$(gettext "Scale internal resolution (0.0 is unused)") :${GS_NUMN}" "${PW_GS_INTERNAL_RESOLUTION}:!0..2" \
...@@ -4416,7 +4680,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate." ...@@ -4416,7 +4680,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate."
YAD_GAMESCOPE_STATUS="$?" YAD_GAMESCOPE_STATUS="$?"
case "${YAD_GAMESCOPE_STATUS}" in case "${YAD_GAMESCOPE_STATUS}" in
1|252) 1|252)
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
...@@ -4424,14 +4688,14 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate." ...@@ -4424,14 +4688,14 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate."
sed -i '/PW_GS/d' "$portwine_exe".ppdb sed -i '/PW_GS/d' "$portwine_exe".ppdb
export PW_GAMESCOPE=0 export PW_GAMESCOPE=0
edit_db_from_gui PW_GAMESCOPE edit_db_from_gui PW_GAMESCOPE
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
164) 164)
export PW_GAMESCOPE=0 export PW_GAMESCOPE=0
edit_db_from_gui PW_GAMESCOPE edit_db_from_gui PW_GAMESCOPE
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
;; ;;
...@@ -4471,8 +4735,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate." ...@@ -4471,8 +4735,7 @@ relaxed - Same as fifo but allows tearing when below the monitors refresh rate."
PW_GS_UPSCALE_SHARPNESS PW_GS_MAX_SCALE_FACTOR PW_GS_MOUSE_SENSITIVITY \ PW_GS_UPSCALE_SHARPNESS PW_GS_MAX_SCALE_FACTOR PW_GS_MOUSE_SENSITIVITY \
PW_GS_SDR_CONTENT_NITS PW_GS_ITM_SDR_NITS PW_GS_ITM_TARGET_NITS PW_GS_SDR_CONTENT_NITS PW_GS_ITM_SDR_NITS PW_GS_ITM_TARGET_NITS
export SKIP_CHECK_UPDATES="1"
export SKIP_CHECK_UPDATES=1
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -4528,13 +4791,9 @@ portwine_create_shortcut () { ...@@ -4528,13 +4791,9 @@ portwine_create_shortcut () {
fi fi
name_desktop="$(echo "${name_desktop}" | sed "s/\`//g" | sed "s/\"//g" | sed "s/'//g")" name_desktop="$(echo "${name_desktop}" | sed "s/\`//g" | sed "s/\"//g" | sed "s/'//g")"
name_desktop_png="${name_desktop// /_}" name_desktop_png="${name_desktop// /_}"
create_menu_desktop_shortcut=$(echo "$OUTPUT" | awk -F'|' '{print $2}') PW_SHORTCUT_MENU=$(echo "$OUTPUT" | awk -F'|' '{print $2}')
create_desktop_desktop_shortcut=$(echo "$OUTPUT" | awk -F'|' '{print $3}') PW_SHORTCUT_DESKTOP=$(echo "$OUTPUT" | awk -F'|' '{print $3}')
create_menu_steam_shortcut=$(echo "$OUTPUT" | awk -F'|' '{print $4}') PW_SHORTCUT_STEAM=$(echo "$OUTPUT" | awk -F'|' '{print $4}')
PW_SHORTCUT_MENU="$create_menu_desktop_shortcut"
PW_SHORTCUT_DESKTOP="$create_desktop_desktop_shortcut"
PW_SHORTCUT_STEAM="$create_menu_steam_shortcut"
edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM edit_user_conf_from_gui PW_SHORTCUT_MENU PW_SHORTCUT_DESKTOP PW_SHORTCUT_STEAM
...@@ -4559,12 +4818,12 @@ portwine_create_shortcut () { ...@@ -4559,12 +4818,12 @@ portwine_create_shortcut () {
} >> "${PORT_WINE_PATH}/${name_desktop}.desktop" } >> "${PORT_WINE_PATH}/${name_desktop}.desktop"
chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop" chmod u+x "${PORT_WINE_PATH}/${name_desktop}.desktop"
if [[ "${create_menu_desktop_shortcut}" == "TRUE" ]] ; then if [[ "${PW_SHORTCUT_MENU}" == "TRUE" ]] ; then
try_remove_file "${HOME}/.local/share/applications/${name_desktop}.desktop" try_remove_file "${HOME}/.local/share/applications/${name_desktop}.desktop"
cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "${HOME}/.local/share/applications/" cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "${HOME}/.local/share/applications/"
fi fi
if [[ "${create_desktop_desktop_shortcut}" == "TRUE" ]] ; then if [[ "${PW_SHORTCUT_DESKTOP}" == "TRUE" ]] ; then
if [[ -d "${HOME}/Desktop" ]] ; then if [[ -d "${HOME}/Desktop" ]] ; then
cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "${HOME}/Desktop/" cp -f "${PORT_WINE_PATH}/${name_desktop}.desktop" "${HOME}/Desktop/"
elif [[ -d "${HOME}/Рабочий стол" ]] ; then elif [[ -d "${HOME}/Рабочий стол" ]] ; then
...@@ -4574,7 +4833,7 @@ portwine_create_shortcut () { ...@@ -4574,7 +4833,7 @@ portwine_create_shortcut () {
fi fi
fi fi
if [[ "${create_menu_steam_shortcut}" == "TRUE" ]] ; then if [[ "${PW_SHORTCUT_STEAM}" == "TRUE" ]] ; then
export STEAM_SCRIPTS="${PORT_WINE_PATH}/steam_scripts" export STEAM_SCRIPTS="${PORT_WINE_PATH}/steam_scripts"
create_new_dir "${STEAM_SCRIPTS}" create_new_dir "${STEAM_SCRIPTS}"
echo "#!/usr/bin/env bash" > "${STEAM_SCRIPTS}/${name_desktop}.sh" echo "#!/usr/bin/env bash" > "${STEAM_SCRIPTS}/${name_desktop}.sh"
...@@ -4611,7 +4870,7 @@ portwine_create_shortcut () { ...@@ -4611,7 +4870,7 @@ portwine_create_shortcut () {
if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then if [[ "$PW_NO_RESTART_PPDB" != "1" ]] ; then
print_info "Restarting PP..." print_info "Restarting PP..."
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
fi fi
...@@ -4621,6 +4880,7 @@ portwine_create_shortcut () { ...@@ -4621,6 +4880,7 @@ portwine_create_shortcut () {
portwine_delete_shortcut () { portwine_delete_shortcut () {
rm -f "$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop)" &>/dev/null rm -f "$(grep -il "${portwine_exe}" "${HOME}/.local/share/applications"/*.desktop)" &>/dev/null
rm -f "$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop)" &>/dev/null rm -f "$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}"/*.desktop)" &>/dev/null
rm -f "$(grep -il "${portwine_exe}" "${PORT_WINE_PATH}/duplicate"/*.desktop)" &>/dev/null
# rm -f "$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh)" &>/dev/null # rm -f "$(grep -il "${portwine_exe}" "${STEAM_SCRIPTS}"/*.sh)" &>/dev/null
if [[ -d "${HOME}/Desktop" ]] ; then if [[ -d "${HOME}/Desktop" ]] ; then
rm -f "$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop)" &>/dev/null rm -f "$(grep -il "${portwine_exe}" "${HOME}/Desktop"/*.desktop)" &>/dev/null
...@@ -5013,6 +5273,11 @@ pw_autoinstall_from_db () { ...@@ -5013,6 +5273,11 @@ pw_autoinstall_from_db () {
} }
gui_credits () { gui_credits () {
if [[ -z "${PW_ALL_DF}" ]] ; then
export TAB_MAIN_MENU="4"
else
export TAB_MAIN_MENU="5"
fi
. "${PORT_SCRIPTS_PATH}/credits" . "${PORT_SCRIPTS_PATH}/credits"
} }
export -f gui_credits export -f gui_credits
...@@ -5036,18 +5301,27 @@ export -f button_click_start ...@@ -5036,18 +5301,27 @@ export -f button_click_start
run_desktop_b_click () { run_desktop_b_click () {
[[ ! -z "$1" ]] && echo "$1" > "${PW_TMPFS_PATH}/tmp_yad_form" [[ ! -z "$1" ]] && echo "$1" > "${PW_TMPFS_PATH}/tmp_yad_form"
if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_gui_pp) ]] ; then if [[ "${USE_DUPLICATE_GUI}" == "1" ]] ; then
kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1 if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_gui_pp) ]] ; then
fi kill -s SIGUSR1 $(pgrep -a yad | grep "\--width="${PW_DUPLICATE_SIZE_W}" \--height="${PW_DUPLICATE_SIZE_H}"" | awk '{print $1}') > /dev/null 2>&1
fi
if check_flatpak if check_flatpak
then PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')" then PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/duplicate/${PW_YAD_SET//@_@/ }" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')"
else PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | awk -F"=env " '{print $2}')" else PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/duplicate/${PW_YAD_SET//@_@/ }" | head -n 1 | awk -F"=env " '{print $2}')"
fi
else
if [[ ! -z $(pidof -s yad) ]] || [[ ! -z $(pidof -s yad_gui_pp) ]] ; then
kill -s SIGUSR1 $(pgrep -a yad | grep "\--key=${KEY} \--notebook" | awk '{print $1}') > /dev/null 2>&1
fi
if check_flatpak
then PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | sed 's|flatpak run ru.linux_gaming.PortProton|\"${PORT_SCRIPTS_PATH}/start.sh\"|' | awk -F'=' '{print $2}')"
else PW_EXEC_FROM_DESKTOP="$(grep Exec "${PORT_WINE_PATH}/${PW_YAD_SET//@_@/ }" | head -n 1 | awk -F"=env " '{print $2}')"
fi
fi fi
print_info "Restarting PP after choose desktop file..." print_info "Restarting PP after choose desktop file..."
# stop_portwine # stop_portwine
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c "${PW_EXEC_FROM_DESKTOP}" & /usr/bin/env bash -c "${PW_EXEC_FROM_DESKTOP}" &
exit 0 exit 0
} }
...@@ -5057,7 +5331,7 @@ gui_clear_pfx () { ...@@ -5057,7 +5331,7 @@ gui_clear_pfx () {
if yad_question "$(gettext "Do you want to clear prefix in PortProton?")" ; then if yad_question "$(gettext "Do you want to clear prefix in PortProton?")" ; then
pw_clear_pfx pw_clear_pfx
print_info "Restarting PP after clearing prefix..." print_info "Restarting PP after clearing prefix..."
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
fi fi
...@@ -5079,7 +5353,7 @@ export -f gui_rm_portproton ...@@ -5079,7 +5353,7 @@ export -f gui_rm_portproton
gui_pw_update () { gui_pw_update () {
try_remove_file "${PORT_WINE_TMP_PATH}/scripts_update_notifier" try_remove_file "${PORT_WINE_TMP_PATH}/scripts_update_notifier"
print_info "Restarting PP for check update..." print_info "Restarting PP for check update..."
export SKIP_CHECK_UPDATES=0 export SKIP_CHECK_UPDATES="0"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -5088,7 +5362,7 @@ export -f gui_pw_update ...@@ -5088,7 +5362,7 @@ export -f gui_pw_update
change_loc () { change_loc () {
try_remove_file "${PORT_WINE_TMP_PATH}/PortProton_loc" try_remove_file "${PORT_WINE_TMP_PATH}/PortProton_loc"
print_info "Restarting PP for change language..." print_info "Restarting PP for change language..."
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -5103,7 +5377,7 @@ change_mirror () { ...@@ -5103,7 +5377,7 @@ change_mirror () {
yad_info "$(gettext "Mirror changed to:") <b>CDN</b>" yad_info "$(gettext "Mirror changed to:") <b>CDN</b>"
fi fi
print_info "Restarting PP for change mirror..." print_info "Restarting PP for change mirror..."
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -5138,7 +5412,7 @@ change_gui_start () { ...@@ -5138,7 +5412,7 @@ change_gui_start () {
yad_info "$(gettext "Gui start changed to:") NOTEBOOK" yad_info "$(gettext "Gui start changed to:") NOTEBOOK"
fi fi
print_info "Restarting PP for change gui start..." print_info "Restarting PP for change gui start..."
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
...@@ -5151,10 +5425,64 @@ gui_wine_uninstaller () { ...@@ -5151,10 +5425,64 @@ gui_wine_uninstaller () {
export -f gui_wine_uninstaller export -f gui_wine_uninstaller
gui_open_user_conf () { gui_open_user_conf () {
xdg-open "${PORT_WINE_PATH}/data/user.conf" PW_USERCONF_GUI="$("${pw_yad}" --title="$(gettext "EDIT USER CONFIG")" \
--text-info --editable --width=800 --height=600 \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--button="$(gettext "MAIN MENU")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":1 \
--button="$(gettext "SAVE")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":2 \
--filename="${PORT_WINE_PATH}/data/user.conf" 2>/dev/null)"
YAD_STATUS="$?"
case "${YAD_STATUS}" in
1|252)
export SKIP_CHECK_UPDATES="1"
if [[ -z "${PW_ALL_DF}" ]] ; then
export TAB_MAIN_MENU="4"
else
export TAB_MAIN_MENU="5"
fi
/usr/bin/env bash -c ${pw_full_command_line[*]} &
print_info "Restarting..."
exit 0
;;
2)
echo "${PW_USERCONF_GUI}" > "${PORT_WINE_PATH}/data/user.conf"
export SKIP_CHECK_UPDATES="1"
if [[ -z "${PW_ALL_DF}" ]] ; then
export TAB_MAIN_MENU="4"
else
export TAB_MAIN_MENU="5"
fi
/usr/bin/env bash -c ${pw_full_command_line[*]} &
print_info "Restarting..."
exit 0
;;
esac
} }
export -f gui_open_user_conf export -f gui_open_user_conf
gui_edit_db_file () {
GUI_EDIT_DB_FILE="$("${pw_yad}" --title="$(gettext "EDIT DB")" \
--text-info --editable --width=800 --height=600 \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--button="$(gettext "SETTINGS")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":1 \
--button="$(gettext "SAVE")"!"$PW_GUI_ICON_PATH/$BUTTON_SIZE.png"!"":2 \
--filename="${PORTWINE_DB_FILE}" 2>/dev/null)"
YAD_STATUS="$?"
case "$YAD_STATUS" in
1|252)
/usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0
;;
2)
echo "${GUI_EDIT_DB_FILE}" > "${PORTWINE_DB_FILE}"
/usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0
;;
esac
}
gui_open_scripts_from_backup () { gui_open_scripts_from_backup () {
cd "${PORT_WINE_TMP_PATH}/scripts_backup/" || fatal cd "${PORT_WINE_TMP_PATH}/scripts_backup/" || fatal
PW_SCRIPT_FROM_BACKUP=$("${pw_yad}" --file --width=650 --height=500 \ PW_SCRIPT_FROM_BACKUP=$("${pw_yad}" --file --width=650 --height=500 \
...@@ -5164,7 +5492,7 @@ gui_open_scripts_from_backup () { ...@@ -5164,7 +5492,7 @@ gui_open_scripts_from_backup () {
unpack "$PW_SCRIPT_FROM_BACKUP" "${PORT_WINE_PATH}/data/" unpack "$PW_SCRIPT_FROM_BACKUP" "${PORT_WINE_PATH}/data/"
echo "0" > "${PORT_WINE_TMP_PATH}/scripts_update_notifier" echo "0" > "${PORT_WINE_TMP_PATH}/scripts_update_notifier"
print_info "Restarting PP after backup..." print_info "Restarting PP after backup..."
export SKIP_CHECK_UPDATES=1 export SKIP_CHECK_UPDATES="1"
/usr/bin/env bash -c ${pw_full_command_line[*]} & /usr/bin/env bash -c ${pw_full_command_line[*]} &
exit 0 exit 0
} }
......
...@@ -6,5 +6,5 @@ ...@@ -6,5 +6,5 @@
export PW_VULKAN_USE="2" export PW_VULKAN_USE="2"
export PW_WINE_USE="PROTON_LG" export PW_WINE_USE="PROTON_LG"
export PW_PREFIX_NAME="CALIBER" export PW_PREFIX_NAME="CALIBER"
export DISABLE_CP_DEFPFX=1 # export DISABLE_CP_DEFPFX="1"
export WINEDLLOVERRIDES="xaudio2_7=n,b" export WINEDLLOVERRIDES="xaudio2_7=n,b"
#!/usr/bin/env bash #!/usr/bin/env bash
#Author: linux-gaming.ru #Author: linux-gaming.ru
#setup.exe #setup.exe
#Setup.exe
#SETUP.exe
#.msi #.msi
#Rating=5 #Rating=5
################################################ ################################################
export PW_DISABLED_CREATE_DB=1 export PW_DISABLED_CREATE_DB=1
export PW_ICON_FOR_YAD="${PORT_WINE_PATH}/data/img/setup.png"
export PW_VULKAN_USE=1 export PW_VULKAN_USE=1
export PW_MANGOHUD=0 export PW_MANGOHUD=0
export PW_NO_FSYNC=1 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support. export PW_NO_FSYNC=1 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
...@@ -17,7 +14,3 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1 # Force Wine to enable the LARGE_ ...@@ -17,7 +14,3 @@ export PW_FORCE_LARGE_ADDRESS_AWARE=1 # Force Wine to enable the LARGE_
export PW_DLL_INSTALL="" export PW_DLL_INSTALL=""
# export WINEDLLOVERRIDES="mscoree,mshtml=" # export WINEDLLOVERRIDES="mscoree,mshtml="
export PW_WINE_USE=WINE_LG export PW_WINE_USE=WINE_LG
add_in_stop_portwine () {
pw_find_exe news
}
...@@ -4,12 +4,10 @@ ...@@ -4,12 +4,10 @@
export PW_PREFIX_NAME="CALIBER" export PW_PREFIX_NAME="CALIBER"
export LAUNCH_PARAMETERS=("/VERYSILENT" "/CLOSEAPPLICATIONS") export LAUNCH_PARAMETERS=("/VERYSILENT" "/CLOSEAPPLICATIONS")
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/CaliberSetup.exe" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/CaliberSetup.exe"
export PW_WINE_USE=PROTON_LG export PW_WINE_USE="PROTON_LG"
export DISABLE_CP_DEFPFX=1 # export DISABLE_CP_DEFPFX="1"
export PORTWINE_CREATE_SHORTCUT_NAME="CALIBER" export PORTWINE_CREATE_SHORTCUT_NAME="CALIBER"
gui_proton_downloader silent "${PW_WINE_USE}"
start_portwine start_portwine
if try_download "https://cdn.playcaliber.com/caliber-s3/p1/a88c3b70f76a0e56b1e08b62c9895cfe/launcher/setup/CaliberSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://cdn.playcaliber.com/caliber-s3/p1/a88c3b70f76a0e56b1e08b62c9895cfe/launcher/setup/CaliberSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
######################################################################## ########################################################################
export LAUNCH_PARAMETERS=("/S" "/D=c:\Program Files (x86)\Ubisoft Game Launcher") export LAUNCH_PARAMETERS=("/S" "/D=c:\Program Files (x86)\Ubisoft Game Launcher")
export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/UbisoftConnectInstaller.exe" export PW_AUTOINSTALL_EXE="${PW_USER_TEMP}/UbisoftConnectInstaller.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Ubisoft Connect"
start_portwine start_portwine
if try_download "https://ubistatic3-a.akamaihd.net/orbit/launcher_installer/UbisoftConnectInstaller.exe" "${PW_AUTOINSTALL_EXE}" no_mirror if try_download "https://ubistatic3-a.akamaihd.net/orbit/launcher_installer/UbisoftConnectInstaller.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then then
......
...@@ -87,7 +87,7 @@ unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_T ...@@ -87,7 +87,7 @@ unset CHK_SYMLINK_FILE PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL PATH_T
unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY unset PW_PREFIX_NAME WINEPREFIX VULKAN_MOD PW_WINE_VER PW_ADD_TO_ARGS_IN_RUNTIME PW_GAMEMODERUN_SLR AMD_VULKAN_ICD PW_WINE_CPU_TOPOLOGY
unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48 unset PW_NAME_D_NAME PW_NAME_D_ICON PW_NAME_D_EXEC PW_EXEC_FROM_DESKTOP PW_ALL_DF PW_GENERATE_BUTTONS PW_NAME_D_ICON PW_NAME_D_ICON_48
unset MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR unset MANGOHUD_CONFIG FPS_LIMIT PW_WINE_USE WINEDLLPATH WINE WINEDIR WINELOADER WINESERVER PW_USE_RUNTIME PORTWINE_CREATE_SHORTCUT_NAME MIRROR
unset PW_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START PW_AUTOINSTALL_EXE NOSTSTDIR unset PW_LOCALE_SELECT PW_SETTINGS_INDICATION PW_GUI_START PW_AUTOINSTALL_EXE NOSTSTDIR USE_DUPLICATE_GUI
export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp" export PORT_WINE_TMP_PATH="${PORT_WINE_PATH}/data/tmp"
rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}* rm -f "$PORT_WINE_TMP_PATH"/*{exe,msi,tar}*
...@@ -172,8 +172,9 @@ then ...@@ -172,8 +172,9 @@ then
else else
# shellcheck source=/dev/null # shellcheck source=/dev/null
source "$PW_GUI_THEMES_PATH/default.pptheme" source "$PW_GUI_THEMES_PATH/default.pptheme"
echo 'export GUI_THEME="default"' >> "$USER_CONF" echo 'export GUI_THEME="default"' >> "$USER_CONF"
fi fi
[[ "$XDG_SESSION_DESKTOP" == "KDE" ]] && export YAD_OPTIONS+="--center"
# choose branch # choose branch
if [[ -z "$BRANCH" ]] ; then if [[ -z "$BRANCH" ]] ; then
...@@ -551,7 +552,7 @@ if [[ -f "${portwine_exe}" ]] ; then ...@@ -551,7 +552,7 @@ if [[ -f "${portwine_exe}" ]] ; then
export TAB_START="1" export TAB_START="1"
fi fi
"${pw_yad}" --key=$KEY_START --notebook --active-tab=${TAB_START} \ "${pw_yad}" --key=$KEY_START --notebook --active-tab="${TAB_START}" \
--gui-type="settings-notebook" \ --gui-type="settings-notebook" \
--width="${PW_START_SIZE_W}" --tab-pos="${PW_TAB_POSITON}" --center \ --width="${PW_START_SIZE_W}" --tab-pos="${PW_TAB_POSITON}" --center \
--title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" --expand \ --title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" --expand \
...@@ -636,14 +637,17 @@ else ...@@ -636,14 +637,17 @@ else
else PW_GUI_SORT_TABS=(2 3 4 5 1) else PW_GUI_SORT_TABS=(2 3 4 5 1)
fi fi
PW_GENERATE_BUTTONS="--field= $(gettext "Create shortcut...")!${PW_GUI_ICON_PATH}/find_48.svg!:FBTN%@bash -c \"button_click pw_find_exe\"%" PW_GENERATE_BUTTONS="--field= $(gettext "Create shortcut...")!${PW_GUI_ICON_PATH}/find_48.svg!:FBTN%@bash -c \"button_click pw_find_exe\"%"
if grep -i "[Desktop Entry]" "${PORT_WINE_PATH}/duplicate"/* &>/dev/null ; then
PW_GENERATE_BUTTONS+="--field= $(gettext "Duplicates")!${PW_GUI_ICON_PATH}/duplicate.svg!:FBTN%@bash -c \"button_click pw_duplicate\"%"
fi
for PW_DESKTOP_FILES in ${PW_ALL_DF} ; do for PW_DESKTOP_FILES in ${PW_ALL_DF} ; do
PW_NAME_D_ICON="$(grep Icon "${PORT_WINE_PATH}/${PW_DESKTOP_FILES}" | awk -F= '{print $2}')" PW_NAME_D_ICON="$(grep Icon "${PORT_WINE_PATH}/${PW_DESKTOP_FILES}" | awk -F= '{print $2}')"
PW_NAME_D_ICON_48="${PW_NAME_D_ICON//".png"/"_48.png"}" PW_NAME_D_ICON_48="${PW_NAME_D_ICON//".png"/"_48.png"}"
if [[ ! -f "${PW_NAME_D_ICON_48}" ]] \ if [[ ! -f "${PW_NAME_D_ICON_48}" ]] \
&& [[ -f "${PW_NAME_D_ICON}" ]] \ && [[ -f "${PW_NAME_D_ICON}" ]] \
&& command -v "convert" 2>/dev/null && command -v "convert" &>/dev/null
then then
convert "${PW_NAME_D_ICON}" -resize 48x48 "${PW_NAME_D_ICON_48}" convert "${PW_NAME_D_ICON}" -resize 48x48 "${PW_NAME_D_ICON_48}" &>/dev/null
fi fi
PW_DESKTOP_HELPER="${PW_DESKTOP_FILES// /@_@}" PW_DESKTOP_HELPER="${PW_DESKTOP_FILES// /@_@}"
PW_GENERATE_BUTTONS+="--field= ${PW_DESKTOP_FILES//".desktop"/""}!${PW_NAME_D_ICON_48}!:FBTN%@bash -c \"run_desktop_b_click "${PW_DESKTOP_HELPER}"\"%" PW_GENERATE_BUTTONS+="--field= ${PW_DESKTOP_FILES//".desktop"/""}!${PW_NAME_D_ICON_48}!:FBTN%@bash -c \"run_desktop_b_click "${PW_DESKTOP_HELPER}"\"%"
...@@ -749,11 +753,14 @@ else ...@@ -749,11 +753,14 @@ else
# --field=" Bethesda.net Launcher"!"$PW_GUI_ICON_PATH/bethesda.png"!"":"FBTN" '@bash -c "button_click PW_BETHESDA"' # --field=" Bethesda.net Launcher"!"$PW_GUI_ICON_PATH/bethesda.png"!"":"FBTN" '@bash -c "button_click PW_BETHESDA"'
# --field=" League of Legends"!"$PW_GUI_ICON_PATH/lol.png"!"":"FBTN" '@bash -c "button_click PW_LOL"' # --field=" League of Legends"!"$PW_GUI_ICON_PATH/lol.png"!"":"FBTN" '@bash -c "button_click PW_LOL"'
export START_FROM_PP_GUI=1 export START_FROM_PP_GUI="1"
if [[ -z ${TAB_MAIN_MENU} ]] ; then
export TAB_MAIN_MENU="1"
fi
if [[ -z "${PW_ALL_DF}" ]] ; then if [[ -z "${PW_ALL_DF}" ]] ; then
"${pw_yad}" --key=$KEY --notebook --expand \ "${pw_yad}" --key=$KEY --notebook --expand \
--gui-type="settings-notebook" \ --gui-type="settings-notebook" --active-tab="${TAB_MAIN_MENU}" \
--width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons \ --width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" \ --title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" \
...@@ -766,7 +773,7 @@ else ...@@ -766,7 +773,7 @@ else
YAD_STATUS="$?" YAD_STATUS="$?"
else else
"${pw_yad}" --key=$KEY --notebook --expand \ "${pw_yad}" --key=$KEY --notebook --expand \
--gui-type="settings-notebook" \ --gui-type="settings-notebook" --active-tab="${TAB_MAIN_MENU}" \
--width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons \ --width="${PW_MAIN_SIZE_W}" --height="${PW_MAIN_SIZE_H}" --no-buttons \
--window-icon="$PW_GUI_ICON_PATH/portproton.svg" \ --window-icon="$PW_GUI_ICON_PATH/portproton.svg" \
--title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" \ --title "PortProton-${install_ver} (${scripts_install_ver}${BRANCH_VERSION})" \
...@@ -778,11 +785,12 @@ else ...@@ -778,11 +785,12 @@ else
--tab="$(gettext "PORTPROTON SETTINGS")"!"$PW_GUI_ICON_PATH/$TAB_SIZE.png"!"" 2>/dev/null --tab="$(gettext "PORTPROTON SETTINGS")"!"$PW_GUI_ICON_PATH/$TAB_SIZE.png"!"" 2>/dev/null
YAD_STATUS="$?" YAD_STATUS="$?"
fi fi
unset TAB_MAIN_MENU
if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then exit 0 ; fi if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then exit 0 ; fi
pw_yad_set_form pw_yad_set_form
pw_yad_form_vulkan pw_yad_form_vulkan
export PW_DISABLED_CREATE_DB=1 export PW_DISABLED_CREATE_DB="1"
fi fi
case "${VULKAN_MOD}" in case "${VULKAN_MOD}" in
...@@ -832,6 +840,7 @@ fi ...@@ -832,6 +840,7 @@ fi
gui_credits) gui_credits ;; gui_credits) gui_credits ;;
pw_start_cont_xterm) pw_start_cont_xterm ;; pw_start_cont_xterm) pw_start_cont_xterm ;;
pw_find_exe) pw_find_exe ;; pw_find_exe) pw_find_exe ;;
pw_duplicate) pw_duplicate ;;
PW_*) pw_autoinstall_from_db ;; PW_*) pw_autoinstall_from_db ;;
*.desktop) run_desktop_b_click ;; *.desktop) run_desktop_b_click ;;
1|252|*) exit 0 ;; 1|252|*) exit 0 ;;
......
#!/usr/bin/env bash #!/usr/bin/env bash
#Author: Castro-Fidel (linux-gaming.ru) #Author: Castro-Fidel (linux-gaming.ru)
#SCRIPTS_NEXT_VERSION=2324 #SCRIPTS_NEXT_VERSION=2328
#SCRIPTS_STABLE_VERSION=2320 #SCRIPTS_STABLE_VERSION=2327
######################################################################## ########################################################################
export LANGUAGES_LIST="ru es" export LANGUAGES_LIST="ru es"
export PW_VKBASALT="0" export PW_VKBASALT="0"
......
...@@ -23,6 +23,9 @@ export TAB_SIZE=28 ...@@ -23,6 +23,9 @@ export TAB_SIZE=28
export PW_MAIN_SIZE_W=1100 export PW_MAIN_SIZE_W=1100
export PW_MAIN_SIZE_H=350 export PW_MAIN_SIZE_H=350
export PW_DUPLICATE_SIZE_W=1100
export PW_DUPLICATE_SIZE_H=350
export PW_START_SIZE_W=600 export PW_START_SIZE_W=600
export PW_START_SIZE_H=350 export PW_START_SIZE_H=350
export PW_TAB_POSITON=top export PW_TAB_POSITON=top
......
...@@ -11,7 +11,6 @@ export YAD_OPTIONS="--css=$THEME_PATH/style.css \ ...@@ -11,7 +11,6 @@ export YAD_OPTIONS="--css=$THEME_PATH/style.css \
--keep-icon-size \ --keep-icon-size \
--buttons-layout=expand \ --buttons-layout=expand \
--class=PortProton \ --class=PortProton \
--center \
--gui-type-height=2 \ --gui-type-height=2 \
--gui-type-width=2 \ --gui-type-width=2 \
" "
...@@ -24,10 +23,13 @@ export BUTTON_SIZE=32 # 24, 28, 32, 36, 40 ...@@ -24,10 +23,13 @@ export BUTTON_SIZE=32 # 24, 28, 32, 36, 40
export TAB_SIZE=32 # 24, 28, 32, 36, 40 export TAB_SIZE=32 # 24, 28, 32, 36, 40
export PW_MAIN_SIZE_W=1 export PW_MAIN_SIZE_W=500
export PW_MAIN_SIZE_H=350 export PW_MAIN_SIZE_H=350
export PW_START_SIZE_W=1 export PW_DUPLICATE_SIZE_W=1000
export PW_DUPLICATE_SIZE_H=350
export PW_START_SIZE_W=500
export PW_START_SIZE_H=350 export PW_START_SIZE_H=350
export PW_TAB_POSITON=top export PW_TAB_POSITON=top
......
/*Глобальные правила*/ /*Глобальные правила*/
arrow {margin: 3px 5px} /*выравнивание стрелок комбобоксов*/
separator {margin: 0px 0px 0px 0px; background-size:0px; padding-bottom: 0px} /*скрываем сепаратор*/ /*выравнивание стрелок комбобоксов*/
check {min-height: 24px; min-width: 24px} /*увеличиваем чекбоксы*/ arrow {
cellview,entry {min-height: 26px} /*высота комбобоксов, т.к. некоторые темы их делают меньше и вёрстка съезжает*/ margin: 3px 5px
switch {margin: 5px 10px 0px 10px} /*переключатели mangohud и т.д. (в дефолтных темах gtk отступы необходимы. В то время как в некоторых темах выглядит больше, чем нужно. Пример qogir)*/ }
/*скрываем сепаратор*/
separator {
margin: 0px 0px 0px 0px;
background-size: 0px;
padding-bottom: 0px
}
/*увеличиваем чекбоксы*/
check {
min-height: 24px;
min-width: 24px
}
/*высота комбобоксов, т.к. некоторые темы их делают меньше и вёрстка съезжает*/
cellview, entry {
min-height: 26px
}
/*переключатели mangohud и т.д. (в дефолтных темах gtk отступы необходимы. В то время как в некоторых темах выглядит больше, чем нужно. Пример qogir)*/
switch {
margin: 5px 10px 0px 10px
}
/*Правила для окон*/ /*Правила для окон*/
window>box>grid {padding: 5px} /*отступы в расширенных настройках*/
window>box>box>image {padding: 0px 0px 5px 0px;} /*иконка запуска ярлыка*/
window>box>box>box>image {margin-top: 5px} /*иконка в создании ярлыка*/
window>box>box>grid {padding: 0px 5px 5px 0px} /*комбобоксы в запуске ярлыка*/
window>box>label {background: @theme_selected_bg_color; color: @theme_text_color; margin:3px 0px 3px 0px; padding: 5px} /*текст запуска ярлыка*/
window>box>box>label {background: @theme_selected_bg_color; color: @theme_text_color; margin:3px 0px 0px 0px; padding: 5px} /*текст при создании ярлыка и в настройках*/
/*отступы в расширенных настройках*/
window > box > grid {
padding: 5px
}
/*иконка запуска ярлыка*/
window > box > box > image {
padding: 0px 0px 5px 0px;
}
/*иконка в создании ярлыка*/
window > box > box > box > image {
margin-top: 5px
}
/*комбобоксы в запуске ярлыка*/
window > box > box > grid {
padding: 0px 5px 5px 0px
}
/*текст запуска ярлыка*/
window > box > label {
background: @theme_selected_bg_color;
color: @theme_text_color;
margin: 3px 0px 3px 0px;
padding: 5px
}
/*текст при создании ярлыка и в настройках*/
window > box > box > label {
background: @theme_selected_bg_color;
color: @theme_text_color;
margin: 3px 0px 0px 0px;
padding: 5px
}
...@@ -31,9 +31,13 @@ export BUTTON_SIZE=28 # 24, 28, 32, 36, 40 ...@@ -31,9 +31,13 @@ export BUTTON_SIZE=28 # 24, 28, 32, 36, 40
export TAB_SIZE=32 # 24, 28, 32, 36, 40 export TAB_SIZE=32 # 24, 28, 32, 36, 40
# размер главного меню # размер главного меню
export PW_MAIN_SIZE_W=1 export PW_MAIN_SIZE_W=500
export PW_MAIN_SIZE_H=330 export PW_MAIN_SIZE_H=330
# размер окна для дубликатов
export PW_DUPLICATE_SIZE_W=1000
export PW_DUPLICATE_SIZE_H=330
# размер меню запуска и положения табов # размер меню запуска и положения табов
export PW_START_SIZE_W=800 export PW_START_SIZE_W=800
export PW_START_SIZE_H=330 export PW_START_SIZE_H=330
......
/*Глобальные правила*/ /*Глобальные правила*/
arrow {margin: 3px 5px} /*выравнивание стрелок комбобоксов*/
separator {margin: 0px 0px 0px 0px; background-size:0px; padding-bottom: 0px} /*скрываем сепаратор*/ /*выравнивание стрелок комбобоксов*/
check {min-height: 24px; min-width: 24px} /*увеличиваем чекбоксы*/ arrow {
cellview,entry {min-height: 26px} /*высота комбобоксов, т.к. некоторые темы их делают меньше и вёрстка съезжает*/ margin: 3px 5px
switch {margin: 5px 10px 0px 10px} /*переключатели mangohud и т.д. (в дефолтных темах gtk отступы необходимы. В то время как в некоторых темах выглядит больше, чем нужно. Пример qogir)*/ }
/*скрываем сепаратор*/
separator {
margin: 0px 0px 0px 0px;
background-size: 0px;
padding-bottom: 0px
}
/*увеличиваем чекбоксы*/
check {
min-height: 24px;
min-width: 24px
}
/*высота комбобоксов, т.к. некоторые темы их делают меньше и вёрстка съезжает*/
cellview, entry {
min-height: 26px
}
/*переключатели mangohud и т.д. (в дефолтных темах gtk отступы необходимы. В то время как в некоторых темах выглядит больше, чем нужно. Пример qogir)*/
switch {
margin: 5px 10px 0px 10px
}
/*Правила для окон*/ /*Правила для окон*/
window>box>grid {padding: 5px} /*отступы в расширенных настройках*/
window>box>box>image {padding: 0px 0px 5px 0px;} /*иконка запуска ярлыка*/ /*отступы в расширенных настройках*/
window>box>box>box>image {margin-top: 5px} /*иконка в создании ярлыка*/ window > box > grid {
window>box>box>grid {padding: 0px 5px 5px 0px} /*комбобоксы в запуске ярлыка*/ padding: 5px
}
/*иконка запуска ярлыка*/
window > box > box > image {
padding: 0px 0px 5px 0px;
}
/*иконка в создании ярлыка*/
window > box > box > box > image {
margin-top: 5px
}
/*комбобоксы в запуске ярлыка*/
window > box > box > grid {
padding: 0px 5px 5px 0px
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment