mirror of
https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher.git
synced 2026-10-28 09:45:03 +00:00
[UX] Add proton-cachyos to the wine manager (#5463)
* [UX] Add proton-cachyos to the wine manager * Use "Proton-CachyOS" case everywhere user-facing
This commit is contained in:
1 parent
95c9fc7e64
commit
5ffb4fc1ad
9 files changed
+63
-5
No files matched your search
@@ -323,6 +323,7 @@ Heroic would not be possible without the work done in many other projects:
|
||||
- Nile: https://github.com/imLinguin/nile
|
||||
- Comet: https://github.com/imLinguin/comet
|
||||
- GE-Proton: https://github.com/GloriousEggroll/proton-ge-custom
|
||||
- Proton-cachyos: https://github.com/CachyOS/proton-cachyos
|
||||
- umu-launcher: https://github.com/Open-Wine-Components/umu-launcher
|
||||
- DXVK: https://github.com/doitsujin/dxvk
|
||||
- VKD3D: https://github.com/HansKristian-Work/vkd3d-proton
|
||||
|
||||
@@ -1199,6 +1199,7 @@
|
||||
},
|
||||
"wineExplanation": {
|
||||
"gpt": "Game Porting Toolkit is developed by Apple and it is recommended for Apple Silicon Macs with the M1+ chips and works best for newer games that use DX12.",
|
||||
"proton-cachyos": "Proton-CachyOS is a Proton variant maintaned by the CachyOS team. It includes extra tools like DXVK-Sarek and D7VK.",
|
||||
"proton-ge": "GE-Proton is a Proton variant created by Glorious Eggroll. It is meant to be used along with the umu launcher (default in Heroic).",
|
||||
"wine-crossover": "Wine-Crossover is based on the Crossover OpenSource Wine project and is recommended for Intel Macs and for DX11 or older games.",
|
||||
"wine-ge": "Wine-GE-Proton is a Wine variant created by Glorious Eggroll. It has been deprecated in favor of GE-Proton with the umu launcher.",
|
||||
|
||||
@@ -818,7 +818,7 @@ function getDxvkUrl(): string {
|
||||
}
|
||||
if (any_gpu_supports_version([1, 1, 0])) {
|
||||
logInfo(
|
||||
'The GPU(s) in this system only support Vulkan 1.1/1.2, falling back to DXVK 1.10.3',
|
||||
'The GPU(s) in this system only support Vulkan 1.1/1.2, falling back to DXVK 1.10.3 for Wine, or use DXVK-Sarek with proton-cachyos',
|
||||
LogPrefix.ToolInstaller
|
||||
)
|
||||
return 'https://api.github.com/repos/doitsujin/dxvk/releases/tags/v1.10.3'
|
||||
@@ -854,7 +854,7 @@ function getVkd3dUrl(): string {
|
||||
}
|
||||
if (any_gpu_supports_version([1, 1, 0])) {
|
||||
logInfo(
|
||||
'The GPU(s) in this system only support Vulkan 1.1/1.2, falling back to VKD3D 2.6',
|
||||
'The GPU(s) in this system only support Vulkan 1.1/1.2, falling back to VKD3D 2.6 for Wine, or use DXVK-Sarek with proton-cachyos',
|
||||
LogPrefix.ToolInstaller
|
||||
)
|
||||
return 'https://api.github.com/repos/Heroic-Games-Launcher/vkd3d-proton/releases/tags/v2.6'
|
||||
|
||||
@@ -25,3 +25,7 @@ export const WINESTAGINGMACOS_URL =
|
||||
/// Url to Game Porting Toolkit from Gcenx github release page
|
||||
export const GPTK_URL =
|
||||
'https://api.github.com/repos/Gcenx/game-porting-toolkit/releases'
|
||||
|
||||
/// Url to Proton-CachyOS from the CachyOS team github release page
|
||||
export const PROTON_CACHYOS_URL =
|
||||
'https://api.github.com/repos/CachyOS/proton-cachyos/releases'
|
||||
@@ -16,7 +16,8 @@ import {
|
||||
WINELUTRIS_URL,
|
||||
WINECROSSOVER_URL,
|
||||
WINESTAGINGMACOS_URL,
|
||||
GPTK_URL
|
||||
GPTK_URL,
|
||||
PROTON_CACHYOS_URL
|
||||
} from './constants'
|
||||
import { VersionInfo, Repositorys, WineVersionInfo } from 'common/types'
|
||||
import {
|
||||
@@ -150,6 +151,20 @@ async function getAvailableVersions({
|
||||
})
|
||||
break
|
||||
}
|
||||
case Repositorys.PROTONCACHYOS: {
|
||||
await fetchReleases({
|
||||
url: PROTON_CACHYOS_URL,
|
||||
type: 'Proton-CachyOS',
|
||||
count: count
|
||||
})
|
||||
.then((fetchedReleases: VersionInfo[]) => {
|
||||
releases.push(...fetchedReleases)
|
||||
})
|
||||
.catch((error: Error) => {
|
||||
logError(error, LogPrefix.WineDownloader)
|
||||
})
|
||||
break
|
||||
}
|
||||
default: {
|
||||
logWarning(
|
||||
`Unknown and not supported repository key passed! Skip fetch for ${repo}`,
|
||||
|
||||
@@ -68,6 +68,18 @@ async function fetchReleases({
|
||||
release_data.download = stagingAsset.browser_download_url
|
||||
release_data.downsize = stagingAsset.size
|
||||
}
|
||||
} else if (type === 'Proton-CachyOS') {
|
||||
const shaAsset = release.assets.find((asset) =>
|
||||
asset.browser_download_url.endsWith('x86_64.sha512sum')
|
||||
)
|
||||
if (shaAsset) release_data.checksum = shaAsset.browser_download_url
|
||||
const tarAsset = release.assets.find((asset) =>
|
||||
asset.browser_download_url.endsWith('x86_64.tar.xz')
|
||||
)
|
||||
if (tarAsset) {
|
||||
release_data.download = tarAsset.browser_download_url
|
||||
release_data.downsize = tarAsset.size
|
||||
}
|
||||
} else {
|
||||
for (const asset of release.assets) {
|
||||
if (asset.name.endsWith('sha512sum')) {
|
||||
|
||||
@@ -42,6 +42,9 @@ function getLatestLocalVersions(): Record<string, string | undefined> {
|
||||
?.date,
|
||||
latestGEProton: localWines.find(
|
||||
(wine) => wine.version === 'GE-Proton-latest'
|
||||
)?.date,
|
||||
latestProtonCachyos: localWines.find(
|
||||
(wine) => wine.version === 'Proton-CachyOS-latest'
|
||||
)?.date
|
||||
}
|
||||
}
|
||||
@@ -104,6 +107,14 @@ export function updateWineListsIfOutdated(releasesData: ReleasesInfo) {
|
||||
)
|
||||
)
|
||||
repositoriesToFetch.push(Repositorys.WINEGE)
|
||||
|
||||
if (
|
||||
localVersionIsOlder(
|
||||
latestLocalVersions.latestProtonCachyos,
|
||||
releasesData['proton-cachyos']
|
||||
)
|
||||
)
|
||||
repositoriesToFetch.push(Repositorys.PROTONCACHYOS)
|
||||
}
|
||||
|
||||
if (isMac) {
|
||||
@@ -155,7 +166,7 @@ async function updateWineVersionInfos(
|
||||
Repositorys.WINESTAGINGMACOS,
|
||||
Repositorys.GPTK
|
||||
]
|
||||
: [Repositorys.WINEGE, Repositorys.PROTONGE]
|
||||
: [Repositorys.WINEGE, Repositorys.PROTONGE, Repositorys.PROTONCACHYOS]
|
||||
}
|
||||
|
||||
await getAvailableVersions({
|
||||
|
||||
+4
-1
@@ -759,6 +759,7 @@ export type Type =
|
||||
| 'Wine-Crossover'
|
||||
| 'Wine-Staging-macOS'
|
||||
| 'Game-Porting-Toolkit'
|
||||
| 'Proton-CachyOS'
|
||||
|
||||
/**
|
||||
* Interface contains information about a version
|
||||
@@ -790,7 +791,8 @@ export enum Repositorys {
|
||||
WINELUTRIS,
|
||||
WINECROSSOVER,
|
||||
WINESTAGINGMACOS,
|
||||
GPTK
|
||||
GPTK,
|
||||
PROTONCACHYOS
|
||||
}
|
||||
|
||||
export type WineManagerStatus =
|
||||
@@ -873,6 +875,7 @@ export type ReleasesInfo = Record<
|
||||
| 'ge-proton'
|
||||
| 'wine-ge'
|
||||
| 'game-porting-toolkit'
|
||||
| 'proton-cachyos'
|
||||
| 'wine-staging'
|
||||
| 'wine-crossover'
|
||||
| 'dxvk'
|
||||
|
||||
@@ -50,6 +50,7 @@ export default function WineManager(): JSX.Element | null {
|
||||
if (isLinux) {
|
||||
return [
|
||||
{ type: 'GE-Proton', value: 'protonge' },
|
||||
{ type: 'Proton-CachyOS', value: 'proton-cachyos' },
|
||||
{ type: 'Wine-GE', value: 'winege' }
|
||||
]
|
||||
}
|
||||
@@ -162,6 +163,16 @@ export default function WineManager(): JSX.Element | null {
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
case 'Proton-CachyOS':
|
||||
return (
|
||||
<div className="infoBox">
|
||||
<FontAwesomeIcon icon={faCheck} color={'green'} />
|
||||
{t(
|
||||
'wineExplanation.proton-cachyos',
|
||||
'Proton-CachyOS is a Proton variant maintaned by the CachyOS team. It includes extra tools like DXVK-Sarek and D7VK.'
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
default:
|
||||
return <></>
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user