mirror of
https://github.com/clearlinux/linux-steam-integration.git
synced 2026-09-06 22:01:27 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6137c52bab | ||
|
|
524810bbd2 | ||
|
|
d7006fdb74 | ||
|
|
211ac7613c | ||
|
|
5352b5deab | ||
|
|
54bd49281c | ||
|
|
8b09218039 | ||
|
|
89e7b7cfbb | ||
|
|
ffe7825f62 | ||
|
|
0f24683688 | ||
|
|
abcb5feeaf | ||
|
|
6963c34892 | ||
|
|
8d9aac19f6 | ||
|
|
c4ded16115 | ||
|
|
6bc12dde6e | ||
|
|
8968b69788 | ||
|
|
6a5fff703c | ||
|
|
11e9ff2137 | ||
|
|
05343c140f | ||
|
|
c03d5cdff8 | ||
|
|
4c68fcc7d7 | ||
|
|
09c84f0866 | ||
|
|
fc9ae2e9c2 | ||
|
|
9624bde1b9 | ||
|
|
a951a49910 | ||
|
|
fc88ee1496 | ||
|
|
ae48c61932 | ||
|
|
fb56eca35d | ||
|
|
1c3a39ebfa | ||
|
|
62cf7443ac | ||
|
|
46c423d065 | ||
|
|
c34938a43a | ||
|
|
62bd3dffb7 | ||
|
|
5c809fdc07 | ||
|
|
e7eae9d577 | ||
|
|
a1c2235120 | ||
|
|
5b59075ec0 | ||
|
|
c640f2f215 | ||
|
|
b80f79c8d0 | ||
|
|
851f354f9f | ||
|
|
10d3be6a38 | ||
|
|
c8a45b7303 | ||
|
|
1b932e94fa | ||
|
|
003c462a77 | ||
|
|
7880b98f87 | ||
|
|
a91a00f1f5 | ||
|
|
5998318a20 | ||
|
|
1a725088af | ||
|
|
f185b54c4d | ||
|
|
368e6ca7c7 | ||
|
|
f12643039a | ||
|
|
7cfdd41c7c | ||
|
|
889a4a7b7b | ||
|
|
4f810bfe97 | ||
|
|
97e5813e4c | ||
|
|
0faa29aecd | ||
|
|
383b6492b5 | ||
|
|
f8b583bc0b | ||
|
|
9975bd5780 | ||
|
|
00ee48ee22 | ||
|
|
16a0750ed2 | ||
|
|
947654d9d3 | ||
|
|
c59949cf0e | ||
|
|
657a911004 | ||
|
|
1d339cab05 | ||
|
|
a518fc6720 | ||
|
|
03758879ab | ||
|
|
7131fd9771 | ||
|
|
5013e0d747 | ||
|
|
05bd0e0dac | ||
|
|
aa1b7374db | ||
|
|
82130bfbe8 | ||
|
|
d73b7e7381 | ||
|
|
9f57d0ebf0 | ||
|
|
f8d12b9800 | ||
|
|
b3a562f4f9 | ||
|
|
94e5d09eba | ||
|
|
04e32cd5c5 | ||
|
|
cd5a1e6f97 | ||
|
|
287781356c | ||
|
|
80603598af | ||
|
|
e81f379882 | ||
|
|
8d7b56f68c | ||
|
|
87fab0c747 | ||
|
|
208585eebc | ||
|
|
01237d30c6 | ||
|
|
4b6ec38bbf | ||
|
|
70fb1de048 | ||
|
|
393d335af4 | ||
|
|
02ccceae42 | ||
|
|
2462f93f39 | ||
|
|
b34e3f928d | ||
|
|
9da279eeda | ||
|
|
8effde3adf | ||
|
|
c7882a9ac7 | ||
|
|
3e15d71936 | ||
|
|
8d50a4f289 | ||
|
|
589dda31a5 | ||
|
|
c2ba77b5ab | ||
|
|
aa485def04 | ||
|
|
6d2791b475 | ||
|
|
492d7d02f9 | ||
|
|
8efc9a6b76 | ||
|
|
00d0889280 | ||
|
|
608907b6d0 | ||
|
|
68e3df8d1a | ||
|
|
a358864785 | ||
|
|
60664c4c6b | ||
|
|
e27d80156f | ||
|
|
6dbc333ea0 | ||
|
|
0e10afd27d | ||
|
|
8d93b6b0ca | ||
|
|
103ab0a673 | ||
|
|
5ed71d781e | ||
|
|
3eeb731224 | ||
|
|
ce3cab3270 |
Binary file not shown.
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 104 KiB |
@@ -5,7 +5,7 @@ Linux Steam* Integration is a helper system to make the Steam Client and Steam
|
||||
games run better on Linux. In a nutshell, LSI automatically applies various workarounds
|
||||
to get games working, and fixes long standing bugs in both games and the client.
|
||||
|
||||

|
||||

|
||||
|
||||
In many cases this will involve controlling which libraries are allowed to be used
|
||||
at any given time, and these libraries may be overriden for any of the following
|
||||
@@ -15,40 +15,68 @@ reasons:
|
||||
- Compatibility
|
||||
- Performance
|
||||
|
||||
Additionally we apply dynamic workarounds to fix some filesystem path related bugs in Linux
|
||||
ports (or even shader workarounds for ARK*) through our redirect module.
|
||||
This project, and by extension the platforms it runs on, are not officially endorsed by, or affiliated with, Steam, or its parent company, Valve*.
|
||||
This fork of linux-steam-integration is now being maintained separately from the original project, to suit the cadence and requirements of the
|
||||
Clear Linux* Project for Intel Architecture.
|
||||
|
||||
This project will retain backwards compatibility with the original project at the time of forking to alleviate maintainer concerns, whilst focusing
|
||||
on improvements to match a wider audience than the original project, and ensuring native runtimes continue to work unimpeded.
|
||||
|
||||
### Linking compatibility
|
||||
|
||||
With LSI, you don't need to worry any more about manually mangling your Steam installation
|
||||
just to make the open source drivers work, or manually creating links and installing
|
||||
unsupported libraries. LSI is designed to take care of all of this for you.
|
||||
|
||||
Many library names are redirected through the main "intercept" module, which ensures
|
||||
games will (where appropriate) use the updated system libraries. Additionally the
|
||||
module can override how games and the Steam client are allowed to make use of
|
||||
vendored libraries. This will help with many launch failures involving outdated
|
||||
libraries, or indeed the infamous `libstdc++.so.6` vendoring which breaks open
|
||||
source graphics drivers on systems compiled with the new GCC C++ ABI.
|
||||
|
||||
|
||||
### Apply path based hotfixes to games
|
||||
|
||||
The redirect module contains some profiles to allow us to dynamically fix some
|
||||
issues that would otherwise require new builds of the games to see those issues
|
||||
resolved.
|
||||
|
||||
- Project Highrise: Ensure we don't `mmap` a directory as a file (fixes invalid prefs path)
|
||||
- ARK Survival Evolved: Use the correct shader asset from TheCenter DLC to fix broken water surfaces.
|
||||
|
||||
### Unity3D Black Screen Of Nope
|
||||
|
||||
Older builds of Unity3D had (long since fixed) issues with launching to a black
|
||||
screen when defaulting to full screen mode. This is commonly addressed by launching the
|
||||
games with `-screen-fullscreen 0`, and is due to an invalid internal condition clamping
|
||||
the renderer size to 0x0 after setting the fullscreen (borderless) window size.
|
||||
|
||||
Note - updating these games to newer versions of Unity will fix this bug on Linux, however
|
||||
LSI currently ships a workaround. This workaround will abstract access to the configuration
|
||||
file in `$XDG_CONFIG_HOME/.config/unity3d/*/prefs` through the Linux `/dev/shm` system,
|
||||
and will provide initial game configuration whilst also masking the harmful fullscreen
|
||||
setting.
|
||||
|
||||
Net result - all Unity3D games using this pref path (the older generation) will start
|
||||
in windowed mode always. They can be fullscreened from inside the game, and this will
|
||||
help with making sure games **actually launch**.
|
||||
|
||||
### Notes
|
||||
|
||||
Note that LSI will not modify your Steam installation, and instead makes use of two
|
||||
modules, `liblsi-redirect.so` and `liblsi-intercept.so`, to dynamically apply all of the
|
||||
workarounds at runtime, which in turn is set up by the main LSI `shim` binary.
|
||||
|
||||
For a more in depth view of what LSI is, and how to integrate it into your distribution,
|
||||
please check the [technical README document](https://github.com/solus-project/linux-steam-integration/blob/master/TECHNICAL.md).
|
||||
please check the [technical README document](https://github.com/clearlinux/linux-steam-integration/blob/master/TECHNICAL.md).
|
||||
|
||||
Do note that we intend to remove the need for distributions to integrate LSI in the near future, by providing
|
||||
the LSI system as a [snap](https://snapcraft.io/) package for all supported distributions.
|
||||
|
||||
This project, and by extension Solus, is not officially endorsed by, or affiliated with, Steam, or its parent company, Valve*.
|
||||
|
||||
Linux Steam Integration is a [Solus project](https://solus-project.com/)
|
||||
|
||||

|
||||
|
||||
## Getting LSI
|
||||
|
||||
LSI may not yet be available for your distribution, however some community maintained repositories do exist.
|
||||
|
||||
- [Arch Linux](https://aur.archlinux.org/packages/linux-steam-integration/)
|
||||
- [Fedora](https://copr.fedorainfracloud.org/coprs/alunux/linux-steam-integration/)
|
||||
- Solus uses LSI by default, just install the `steam` package.
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2016-2017 Ikey Doherty
|
||||
Copyright © 2016-2018 Ikey Doherty
|
||||
|
||||
Copyright © 2018-2019 Intel Corporation
|
||||
|
||||
linux-steam-integration is available under the terms of the `LGPL-2.1` license.
|
||||
|
||||
|
||||
+10
-8
@@ -196,7 +196,7 @@ Currently this INI file supports three options. The root section in this INI fil
|
||||
`force-32bit = $boolean`
|
||||
|
||||
If set to a true boolean value (yes/true/on), the shadowed Steam binary will
|
||||
be run via the `linux32` command. This will force the `steam` process
|
||||
be run via the `setarch linux32` command. This will force the `steam` process
|
||||
and all children to believe they are running on a 32-bit system. This
|
||||
may be useful for 64-bit games that are buggy only on 64-bit.
|
||||
|
||||
@@ -226,6 +226,14 @@ Currently this INI file supports three options. The root section in this INI fil
|
||||
|
||||
The default value of this variable is `true`.
|
||||
|
||||
`use-unity-hack = $boolean`
|
||||
|
||||
If set to a true boolean value (yes/true/on), the `liblsi-redirect.so`
|
||||
library will apply a preference workaround to Unity3D based games and
|
||||
abstract access to their configuration files. This is used to force
|
||||
Unity3D games to always start in windowed mode, and to ensure that
|
||||
they're unable to make use of the stored fullscreen setting.
|
||||
|
||||
|
||||
## Common issues
|
||||
|
||||
@@ -262,13 +270,7 @@ If you are noticing performance regressions, you can:
|
||||
- As a packager: Disable `liblsi-intercept` via build flags. This will hurt compatibility.
|
||||
- As a distribution integrator: Add weight to upstream issue and import patch into your distribution.
|
||||
This will retain LSI compatibility magic and mitigate performance issues.
|
||||
As an example, Solus has already [integrated the patch](https://dev.solus-project.com/R927:afa5b639e8a9b62618457a304d1e6fb42a9f2066).
|
||||
|
||||
The long term solution is to remove this burden from non-Solus Linux distributions, and for the Solus & LSI projects to
|
||||
provide a specialised runtime & strict LSI build via third party mechanisms so that all this work only needs doing once.
|
||||
This will help ensure the same gaming experience regardless of Linux distribution, remove all compatibility issues, and
|
||||
any pressures on distributions. Additionally this will allow even distributions not supporting multilib to provide a
|
||||
curated and well integrated gaming runtime.
|
||||
As an example, Solus has already [integrated the patch](https://dev.getsol.us/R927:afa5b639e8a9b62618457a304d1e6fb42a9f2066).
|
||||
|
||||
|
||||
`* Some names may be claimed as the property of others.`
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
Initial test list for next release of LSI
|
||||
|
||||
- DOTA 2
|
||||
- Don't Starve Together
|
||||
- Requires curl-gnutls (integrating into CLR now)
|
||||
- Vendored SDL is patched in non upstreamable fashion
|
||||
https://forums.kleientertainment.com/forums/topic/30218-crash-on-linux-steam-without-error/?page=0&tab=comments#comment-386249
|
||||
We'll need to allow certain games to vendor SDL now.
|
||||
Fixed in https://github.com/clearlinux/linux-steam-integration/commit/c4ded161159d2d6faa5a1dba45af8426738632b7
|
||||
- Oxygen Not Included (working perfectly)
|
||||
- Cities:Skylines
|
||||
- Various Source titles (L4D2, Portal, etc)
|
||||
- Various Feral titles (2018/2019 kits)
|
||||
- Stardew Valley
|
||||
- Rocket League
|
||||
|
||||
+1 release:
|
||||
|
||||
- Proton compat
|
||||
@@ -1,7 +1,7 @@
|
||||
[Desktop Entry]
|
||||
Name=Linux Steam Integration
|
||||
Comment=Application for managing Steam integration settings
|
||||
Exec=lsi-settings
|
||||
Exec=@LSI_SETTINGS@
|
||||
Icon=steam
|
||||
Terminal=false
|
||||
Type=Application
|
||||
@@ -8,6 +8,7 @@ Type=Application
|
||||
Categories=Network;FileTransfer;Game;
|
||||
MimeType=x-scheme-handler/steam;
|
||||
Actions=Store;Community;Library;Servers;Screenshots;News;Settings;BigPicture;Friends;
|
||||
StartupWMClass=Steam
|
||||
|
||||
[Desktop Action Store]
|
||||
Name=Store
|
||||
|
||||
+13
-5
@@ -1,10 +1,18 @@
|
||||
appsdir = join_paths(datadir, 'applications')
|
||||
path_appsdir = join_paths(path_datadir, 'applications')
|
||||
|
||||
# If frontend is enabled, install lsi-settings.desktop
|
||||
if with_frontend == true
|
||||
install_data(
|
||||
'lsi-settings.desktop',
|
||||
install_dir: appsdir,
|
||||
data_conf = configuration_data()
|
||||
if with_snap_support == true
|
||||
data_conf.set('LSI_SETTINGS', 'linux-steam-integration.exec linux-steam-integration.settings')
|
||||
else
|
||||
data_conf.set('LSI_SETTINGS', 'lsi-settings')
|
||||
endif
|
||||
configure_file(
|
||||
input: 'lsi-settings.desktop.in',
|
||||
output: 'lsi-settings.desktop',
|
||||
configuration: data_conf,
|
||||
install_dir: path_appsdir,
|
||||
)
|
||||
endif
|
||||
|
||||
@@ -12,6 +20,6 @@ endif
|
||||
if shim_behaviour == 'co-exist'
|
||||
install_data(
|
||||
'lsi-steam.desktop',
|
||||
install_dir: appsdir,
|
||||
install_dir: path_appsdir,
|
||||
)
|
||||
endif
|
||||
|
||||
+92
-15
@@ -1,7 +1,7 @@
|
||||
project(
|
||||
'linux-steam-integration',
|
||||
['c'],
|
||||
version: '0.6',
|
||||
version: '0.7.3',
|
||||
license: [
|
||||
'LGPL-2.1',
|
||||
],
|
||||
@@ -10,7 +10,6 @@ project(
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
am_cflags = [
|
||||
'-fstack-protector',
|
||||
'-pedantic',
|
||||
@@ -33,63 +32,141 @@ add_global_arguments(am_cflags, language: 'c')
|
||||
|
||||
dep_gtk3 = dependency('gtk+-3.0', version: '>= 3.4.0')
|
||||
|
||||
# Grab all our main paths
|
||||
path_prefix = get_option('prefix')
|
||||
path_bindir = join_paths(path_prefix, get_option('bindir'))
|
||||
path_datadir = join_paths(path_prefix, get_option('datadir'))
|
||||
path_vendordir = join_paths(path_datadir, 'defaults', meson.project_name())
|
||||
path_sysconfdir = join_paths(path_prefix, get_option('sysconfdir'))
|
||||
path_localedir = join_paths(path_prefix, get_option('localedir'))
|
||||
|
||||
# Set up our basic configuration
|
||||
cdata = configuration_data()
|
||||
|
||||
cdata.set_quoted('PACKAGE_NAME', meson.project_name())
|
||||
|
||||
prefix = get_option('prefix')
|
||||
datadir = join_paths(prefix, get_option('datadir'))
|
||||
vendordir = join_paths(datadir, 'defaults', meson.project_name())
|
||||
sysconfdir = join_paths(prefix, get_option('sysconfdir'))
|
||||
localedir = join_paths(prefix, get_option('localedir'))
|
||||
cdata.set_quoted('SYSTEMCONFDIR', sysconfdir)
|
||||
cdata.set_quoted('VENDORDIR', vendordir)
|
||||
cdata.set_quoted('LOCALEDIR', localedir)
|
||||
cdata.set_quoted('SYSTEMCONFDIR', path_sysconfdir)
|
||||
cdata.set_quoted('VENDORDIR', path_vendordir)
|
||||
cdata.set_quoted('LOCALEDIR', path_localedir)
|
||||
cdata.set_quoted('GETTEXT_PACKAGE', meson.project_name())
|
||||
|
||||
# Configurables
|
||||
cdata.set_quoted('LSI_PRELOAD_LIBS', get_option('with-preload-libs'))
|
||||
with_preload_libs = get_option('with-preload-libs')
|
||||
cdata.set_quoted('LSI_PRELOAD_LIBS', with_preload_libs)
|
||||
cdata.set_quoted('STEAM_BINARY', get_option('with-steam-binary'))
|
||||
|
||||
# Future reports
|
||||
shim_system_report = []
|
||||
intercept_module_report = []
|
||||
redirect_module_report = []
|
||||
|
||||
# Control the shim behaviour
|
||||
shim_behaviour = get_option('with-shim')
|
||||
shim_enabled = false
|
||||
if shim_behaviour == 'replacement'
|
||||
cdata.set('REPLACE_STEAM', '1')
|
||||
endif
|
||||
if shim_behaviour != 'none'
|
||||
shim_enabled = true
|
||||
endif
|
||||
shim_system_report += ' behaviour: @0@'.format(shim_behaviour)
|
||||
shim_system_report += ' preload libraries: @0@'.format(with_preload_libs)
|
||||
|
||||
# Do we have liblsi-intercept?
|
||||
with_libintercept = get_option('with-libintercept')
|
||||
if with_libintercept == true
|
||||
cdata.set('HAVE_LIBINTERCEPT', '1')
|
||||
endif
|
||||
|
||||
# Do we have liblsi-redirect?
|
||||
with_libredirect = get_option('with-libredirect')
|
||||
if with_libredirect == true
|
||||
cdata.set('HAVE_LIBREDIRECT', '1')
|
||||
endif
|
||||
|
||||
# Do we have the frontend?
|
||||
with_frontend = get_option('with-frontend')
|
||||
|
||||
if get_option('with-new-libcxx-abi') == true
|
||||
# Using the new libc++ ABI? Important for mesa drivers
|
||||
with_new_libcxx_abi = get_option('with-new-libcxx-abi')
|
||||
if with_new_libcxx_abi == true
|
||||
cdata.set('LSI_USE_NEW_ABI', '1')
|
||||
endif
|
||||
shim_system_report += ' New C++ ABI: @0@'.format(with_new_libcxx_abi)
|
||||
|
||||
# How are we handling LibreSSL?
|
||||
with_libressl_mode = get_option('with-libressl-mode')
|
||||
intercept_module_report += ' LibreSSL handling: @0@'.format(with_libressl_mode)
|
||||
|
||||
if with_libressl_mode == 'native'
|
||||
# LibreSSL is provided by the distro as the native libssl, libcrypto, etc
|
||||
cdata.set('LSI_LIBRESSL_MODE_NATIVE', '1')
|
||||
cdata.set('LSI_OVERRIDE_LIBRESSL', '1')
|
||||
elif with_libressl_mode == 'shim'
|
||||
# A shim package has been provided for soname redirects to updated/secure libressl
|
||||
# This allows distros to secure libressl without making it the system libssl/libcrypto option
|
||||
cdata.set('LSI_LIBRESSL_MODE_SHIM', '1')
|
||||
cdata.set('LSI_OVERRIDE_LIBRESSL', '1')
|
||||
cdata.set_quoted('LSI_LIBRESSL_SUFFIX', get_option('with-libressl-suffix'))
|
||||
with_libressl_suffix = get_option('with-libressl-suffix')
|
||||
intercept_module_report += ' LibreSSL library suffix: @0@'.format(with_libressl_suffix)
|
||||
cdata.set_quoted('LSI_LIBRESSL_SUFFIX', with_libressl_suffix)
|
||||
else
|
||||
message('LibreSSL mode isn\'t configured which may impact security')
|
||||
endif
|
||||
|
||||
# Got snap support?
|
||||
with_snap_support = get_option('with-snap-support')
|
||||
if with_snap_support == true
|
||||
cdata.set('HAVE_SNAPD_SUPPORT', '1')
|
||||
path_fake_scripts_dir = join_paths(path_datadir, meson.project_name(), 'scripts')
|
||||
cdata.set_quoted('FAKE_SCRIPTS_DIR', path_fake_scripts_dir)
|
||||
subdir('snapd')
|
||||
message('Enabling snapd support. Do NOT do this for distribution builds!')
|
||||
endif
|
||||
|
||||
# Let's write the global config.h now
|
||||
config_h = configure_file(
|
||||
configuration: cdata,
|
||||
output: 'config.h',
|
||||
)
|
||||
# Make it discoverable
|
||||
config_h_dir = include_directories('.')
|
||||
|
||||
# Descend into source trees
|
||||
subdir('data')
|
||||
subdir('src')
|
||||
subdir('po')
|
||||
|
||||
report = [
|
||||
' Build configuration:',
|
||||
' ====================',
|
||||
'',
|
||||
' prefix: @0@'.format(path_prefix),
|
||||
' datadir: @0@'.format(path_datadir),
|
||||
' sysconfdir: @0@'.format(path_sysconfdir),
|
||||
' bindir: @0@'.format(path_bindir),
|
||||
'',
|
||||
' Shim System (Execution/Environment Control):',
|
||||
' ============================================',
|
||||
'',
|
||||
' enabled: @0@'.format(shim_enabled),
|
||||
'@0@'.format('\n'.join(shim_system_report)),
|
||||
'',
|
||||
' Intercept Module (Dynamic Linker Control):',
|
||||
' ==========================================',
|
||||
'',
|
||||
' enabled: @0@'.format(with_libintercept),
|
||||
'@0@'.format('\n'.join(intercept_module_report)),
|
||||
'',
|
||||
' Redirect Module (Standard Library Control):',
|
||||
' ===========================================',
|
||||
'',
|
||||
' enabled: @0@'.format(with_libredirect),
|
||||
'',
|
||||
' Snap Support (run as a snap):',
|
||||
' =============================',
|
||||
'',
|
||||
' enabled: @0@'.format(with_snap_support),
|
||||
'@0@'.format('\n'.join(redirect_module_report)),
|
||||
]
|
||||
|
||||
# Output some stuff to validate the build config
|
||||
message('\n\n\n' + '\n'.join(report) + '\n\n')
|
||||
|
||||
+3
-1
@@ -3,7 +3,7 @@ option('with-shim', type : 'combo', choices : ['replacement', 'co-exist', 'none'
|
||||
option('with-steam-binary', type: 'string', description: 'Set the path to the Steam binary', value: '/usr/lib/steam/steam')
|
||||
option('with-frontend', type: 'boolean', description: 'Build the LSI Settings UI', value: false)
|
||||
option('with-preload-libs', type: 'string', description: 'Colon separated list of libraries required to launch Steam games',
|
||||
value: '/usr/\$LIB/libxcb.so.1:/usr/\$LIB/libX11.so.6:/usr/\$LIB/libstdc++.so.6')
|
||||
value: '/usr/$LIB/libxcb.so.1:/usr/$LIB/libX11.so.6:/usr/$LIB/libstdc++.so.6')
|
||||
option('with-libintercept', type: 'boolean', description: 'Enable libintercept library for controlling Steam linking', value: true)
|
||||
option('with-libredirect', type: 'boolean', description: 'Enable libredirect library for fine-tuning Steam games', value: true)
|
||||
option('with-new-libcxx-abi', type: 'boolean', description: 'Enable when using the new libstdc++ ABI', value: false)
|
||||
@@ -12,3 +12,5 @@ option('with-libressl-mode', type: 'combo', choices: ['native', 'shim', 'none'],
|
||||
description: 'Control how LibreSSL replacements are performed')
|
||||
option('with-libressl-suffix', type: 'string', value: '-libressl',
|
||||
description: 'Suffix for shim LibreSSL library when using --with-libressl-mode=shim')
|
||||
|
||||
option('with-snap-support', type: 'boolean', description: 'Build LSI with explicit support for snapd', value: false)
|
||||
|
||||
+19
-2
@@ -1,12 +1,29 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
DEFAULT_ARGS="-Dwith-libressl-mode=shim -Dwith-new-libcxx-abi=true"
|
||||
|
||||
if [[ ! -d buildroot/build32 ]]; then
|
||||
CC="gcc -m32" linux32 meson buildroot/build32 -Dwith-libressl-mode=shim --prefix=/usr --sysconfdir=/etc --datadir=/usr/share --libdir=/usr/lib32 -Dwith-shim=none -Dwith-new-libcxx-abi=true --buildtype debugoptimized
|
||||
ASFLAGS="$ASFLAGS --32" CFLAGS="$CFLAGS -m32" CXXFLAGS="$CXXFLAGS -m32" LDFLAGS="$LDFLAGS -m32" \
|
||||
meson buildroot/build32 $DEFAULT_ARGS \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--datadir=/usr/share \
|
||||
--libdir=/usr/lib32 \
|
||||
-Dwith-shim=none \
|
||||
--buildtype debugoptimized
|
||||
fi
|
||||
|
||||
if [[ ! -d buildroot/build64 ]]; then
|
||||
meson buildroot/build64 -Dwith-libressl-mode=shim --prefix=/usr --sysconfdir=/etc --datadir=/usr/share --libdir=/usr/lib64 -Dwith-shim=replacement -Dwith-steam-binary=/usr/lib64/steam/steam -Dwith-frontend=true -Dwith-new-libcxx-abi=true --buildtype debugoptimized
|
||||
meson buildroot/build64 $DEFAULT_ARGS \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--datadir=/usr/share \
|
||||
--libdir=/usr/lib64 \
|
||||
-Dwith-shim=replacement \
|
||||
-Dwith-steam-binary=/usr/lib64/steam/steam \
|
||||
-Dwith-frontend=true \
|
||||
--buildtype debugoptimized
|
||||
fi
|
||||
|
||||
ninja -C buildroot/build32
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ git submodule init
|
||||
git submodule update
|
||||
|
||||
# Script for ikey because he went with meson. *shrug*
|
||||
VERSION="0.6"
|
||||
VERSION="0.7.3"
|
||||
NAME="linux-steam-integration"
|
||||
git-archive-all.sh --format tar --prefix ${NAME}-${VERSION}/ --verbose -t HEAD ${NAME}-${VERSION}.tar
|
||||
xz -9 "${NAME}-${VERSION}.tar"
|
||||
|
||||
+12
@@ -3,17 +3,27 @@ ca_ES
|
||||
ca
|
||||
cs
|
||||
da_DK
|
||||
da
|
||||
de_CH
|
||||
de
|
||||
en_GB
|
||||
eo
|
||||
es_419
|
||||
es_AR
|
||||
es_ES
|
||||
es_MX
|
||||
es_PE
|
||||
es
|
||||
fi
|
||||
fr_FR
|
||||
he
|
||||
hu
|
||||
id_ID
|
||||
it_IT
|
||||
ko_KR
|
||||
ko
|
||||
lt
|
||||
nb_NO
|
||||
ne_NP
|
||||
nl_BE
|
||||
nl_NL
|
||||
@@ -22,5 +32,7 @@ pl
|
||||
pt_BR
|
||||
pt_PT
|
||||
ro_RO
|
||||
ru
|
||||
sv_SE
|
||||
tr
|
||||
zh_CN
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"POT-Creation-Date: 2017-12-19 12:48+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Davidmp <medipas@gmail.com>, 2017\n"
|
||||
"Language-Team: Catalan (https://www.transifex.com/solus-project/teams/68407/ca/)\n"
|
||||
@@ -20,11 +20,11 @@ msgstr ""
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
#: src/frontend/main-window.c:132 src/frontend/main-window.c:149
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Integració de Linux Steam®"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
#: src/frontend/main-window.c:163
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
@@ -34,20 +34,20 @@ msgstr ""
|
||||
" tindrà efecte fins que no es reiniciï el client d'Steam. Useu l'opció "
|
||||
"\"Surt de l'Steam\" per assegurar-vos que es tanqui."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Use native runtime"
|
||||
msgstr "Usa l'entorn d'execució natiu"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
#: src/frontend/main-window.c:193
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Canvieu entre l'entorn natiu i l'entorn d'Steam agrupat."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
#: src/frontend/main-window.c:202
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Aquesta opció s'ha inhabilitat ja que el sistema ja és de 32 bits."
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
#: src/frontend/main-window.c:206
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
@@ -55,15 +55,15 @@ msgstr ""
|
||||
"Això pot solucionar alguns jocs trencats, però inhabilitarà el navegador de "
|
||||
"la botiga d'Steam."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
#: src/frontend/main-window.c:211
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Força el mode de 32 bits per a l'Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Usa la biblioteca d'intercepció"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
#: src/frontend/main-window.c:220
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
@@ -71,16 +71,28 @@ msgstr ""
|
||||
"Força que les aplicacions de l'Steam usin més biblioteques natives per "
|
||||
"maximitzar la compatibilitat."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Usa la biblioteca de redirecció"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
#: src/frontend/main-window.c:230
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Anul·la les crides de sistema per corregir errors coneguts en algunes "
|
||||
"versions de Linux."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
#: src/frontend/main-window.c:237
|
||||
msgid "Use the Unity fullscreen workaround"
|
||||
msgstr "Usa la solució provisional de pantalla completa de l'Unity."
|
||||
|
||||
#: src/frontend/main-window.c:238
|
||||
msgid ""
|
||||
"Prevent some Unity games from launching in full screen mode to fix numerous "
|
||||
"issues"
|
||||
msgstr ""
|
||||
"Evita que alguns jocs d'Unity s'obrin en pantalla completa per tal de "
|
||||
"corregir uns quants problemes."
|
||||
|
||||
#: src/frontend/main-window.c:403
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Ha fallat desar la configuració"
|
||||
|
||||
@@ -68,7 +68,7 @@ msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Přinutit programy ze služby Steam používat více nativních knihoven pro "
|
||||
"Přinutí programy ze služby Steam používat více nativních knihoven pro "
|
||||
"zajištění maximální kompatibility."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
@@ -78,7 +78,7 @@ msgstr "Používat knihovnu pro přesměrování"
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Přepsáním systémových volání opravit známé chyby v linuxových portech her."
|
||||
"Přepsáním systémových volání opraví známé chyby v linuxových portech her."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: scootergrisen <scootergrisen@gmail.com>, 2017\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/solus-project/teams/68407/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Integration med Linux Steam®"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Styr opførslen af Steam-klienten og spil. Indstillingerne vil ikke træde i "
|
||||
"kraft før Steam-klienten er blevet genstartet. Brug 'Afslut Steam' for af "
|
||||
"sikre at programmet lukkes."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Brug nativ runtime"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Skift mellem nativ runtime og den runtime som følger med Steam."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr ""
|
||||
"Denne mulighed er blevet deaktiveret eftersom systemet allerede er 32-bit"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Det løser muligvis problemer for nogle ødelagte spil, til gengæld "
|
||||
"deaktiveres Steam butik-browseren."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Tving 32-bit-tilstand for Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Brug intercept-biblioteket"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Tving Steam-programmer til at bruge flere native biblioteker for at "
|
||||
"maksimere kompatibilitet."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Brug redirect-biblioteket"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr "Tilsidesæt systemkald for at rette kendte fejl i nogle Linux-porte."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Kunne ikke gemme konfiguration"
|
||||
@@ -30,9 +30,9 @@ msgid ""
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Beeinflusse das Verhalten des Steam-Clients und von Spielen. Die "
|
||||
"Kontrolliere das Verhalten des Steam-Clients und von Spielen. Die "
|
||||
"Einstellungen werden erst aktiv, nachdem der Steam-Client neu gestartet "
|
||||
"wurde. Nutze 'Steam beenden', um sicherzugehen, dass es beendet wird."
|
||||
"wurde. Nutze \"Steam beenden\", um sicherzugehen, dass es beendet wird."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
@@ -47,19 +47,21 @@ msgstr ""
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Diese Option ist deaktiviert, da dies bereits ein 32-bit System ist."
|
||||
msgstr ""
|
||||
"Diese Option ist deaktiviert, da es sich bereits um ein 32-Bit-System "
|
||||
"handelt."
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Dies behebt möglicherweise Fehler bei kaputten Steam-Spielen, wird aber den "
|
||||
"Steam Store Browser deaktivieren."
|
||||
"Diese Option behebt möglicherweise Probleme mit Steam-Spielen, wird aber den"
|
||||
" Steam Store Browser deaktivieren."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Erzwinge 32-bit-Modus für Steam"
|
||||
msgstr "Erzwinge 32-Bit-Modus für Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
@@ -70,7 +72,7 @@ msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Zwinge Steam Anwendungen dazu, mehr native Bibliotheken zu nutzen, um die "
|
||||
"Zwinge Steam-Anwendungen dazu, mehr native Bibliotheken zu nutzen, um die "
|
||||
"Kompatibilität zu maximieren."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
@@ -80,7 +82,7 @@ msgstr "Nutze die Redirect-Bibliothek"
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Überschreibe Systemcalls, um bekannte Bugs in manchen Linux-Ports zu "
|
||||
"Überschreibe Systemaufrufe, um bekannte Bugs in manchen Linux-Ports zu "
|
||||
"beheben."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: f vg <f_vongellhorn@outlook.de>, 2017\n"
|
||||
"Language-Team: German (Switzerland) (https://www.transifex.com/solus-project/teams/68407/de_CH/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de_CH\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Integration "
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Kontrolliere das Verhalten des Steam-Clients und der Spiele. Die "
|
||||
"Einstellungen werden erst wirksam, wenn der Steam Client neu gestartet wird."
|
||||
" Verwenden Sie die Option \"Steam beenden\", um sicherzustellen, dass Steam "
|
||||
"geschlossen wird."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Verwende Systemeigene Laufzeitumgebung "
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
"Wechseln zwischen Systemeigene und der gebündelten Steam Laufzeitumgebung"
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr ""
|
||||
"Diese Option wurde deaktiviert, da das System bereits auf 32-Bit läuft."
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Dies könnte einige Probleme von fehlerhafte Spiele umgehen, wird jedoch den "
|
||||
"Steam Store Browser deaktivieren. "
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Erzwinge den 32-Bit-Modus für Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Verwende die intercept-Bibliothek "
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Zwingen Sie die Steam-Anwendungen dazu mehr Systemeigene Bibliotheken zu "
|
||||
"verwenden, um die Kompatibilität zu maximieren."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Verwende die Redirect-Bibliothek "
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Überschreiben Sie Systemaufrufe, um bekannte Fehler in einigen Linux-Ports "
|
||||
"zu beheben."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Konfiguration konnte nicht gespeichert werden"
|
||||
+25
-13
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"POT-Creation-Date: 2017-12-19 12:48+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -19,11 +19,11 @@ msgstr ""
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
#: src/frontend/main-window.c:132 src/frontend/main-window.c:149
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Integration"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
#: src/frontend/main-window.c:163
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
@@ -33,20 +33,20 @@ msgstr ""
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Use native runtime"
|
||||
msgstr "Use native runtime"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
#: src/frontend/main-window.c:193
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Switch between the native runtime and the bundled Steam runtime."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
#: src/frontend/main-window.c:202
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "This option has been disabled as the system is already 32-bit"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
#: src/frontend/main-window.c:206
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
@@ -54,15 +54,15 @@ msgstr ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
#: src/frontend/main-window.c:211
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Force 32-bit mode for Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Use the intercept library"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
#: src/frontend/main-window.c:220
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
@@ -70,14 +70,26 @@ msgstr ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Use the redirect library"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
#: src/frontend/main-window.c:230
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr "Override system calls to fix known bugs in some Linux ports."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
#: src/frontend/main-window.c:237
|
||||
msgid "Use the Unity fullscreen workaround"
|
||||
msgstr "Use the Unity fullscreen workaround"
|
||||
|
||||
#: src/frontend/main-window.c:238
|
||||
msgid ""
|
||||
"Prevent some Unity games from launching in full screen mode to fix numerous "
|
||||
"issues"
|
||||
msgstr ""
|
||||
"Prevent some Unity games from launching in full screen mode to fix numerous "
|
||||
"issues"
|
||||
|
||||
#: src/frontend/main-window.c:403
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Failed to save configuration"
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Pablo Chere <pablo.foche@gmail.com>, 2017\n"
|
||||
"Language-Team: Esperanto (https://www.transifex.com/solus-project/teams/68407/eo/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: eo\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Steam® Linuksa Integriĝo"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Ĝi kontrolas la konduton de la Steam-kliento kaj la ludoj. Agordoj ne "
|
||||
"efektiviĝos ĝis la restartigo de la Steam-kliento. Uzu la elekton \"Eliri el"
|
||||
" Steam\" por certiĝi pri tio ke ĝi fermiĝas."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Uzi denaskan rultempon"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Ŝanĝi inter la denaska rultempo kaj la faskigita rultempo de Steam."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Ĉi tiu elekto estis malŝaltita kaj la sistemo estas ankoraŭ 32-bita."
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Ĉi tio povas funkciigi kelkajn rompitajn ludojn sed malŝaltos la navigilon "
|
||||
"de la Steam-vendejo."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Devigi 32-bitan reĝimon por Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Uzi la interkaptan bibliotekon"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Devigi la aplikaĵojn de Steam uzi pliajn denaskajn bibliotekojn por "
|
||||
"maksimumigi kongruecon"
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Uzi la alidirektan bibliotekon"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Transpasi sistemajn alvokojn por solvi konatajn erarojn en kelkaj linuksaj "
|
||||
"portoj."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Agordo-konservado malsukcesis"
|
||||
@@ -0,0 +1,86 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: mrkucho <vhugo642@gmail.com>, 2017\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/solus-project/teams/68407/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Integration"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Controla el comportamiento del cliente y los juegos de Steam. La "
|
||||
"configuración no tendrá efecto hasta que el cliente de Steam se reinicie. "
|
||||
"Use la opción 'Salir de Steam' para asegurarse de que se cierre."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Usar librerías nativas"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Cambie entre las librerías nativas y las incluidas por Steam"
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Esta opción ha sido desactivada ya que el sistema ya es de 32-bit"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Esto puede mejorar algunos juegos rotos, pero desactivará el navegador de la"
|
||||
" tienda de Steam."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Forzar modo de 32-bit para Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Usar librería de intercepción"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Forzar a las aplicaciones de Steam a usar más librerías del sistema para "
|
||||
"maximizar la compatibilidad."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Usar librería de redirección"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Anular las llamadas del sistema para solucionar algunos problemas conocidos "
|
||||
"en adaptaciones de Linux."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Error al guardar la configuración"
|
||||
+4
-4
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Víctor Rodríguez <vhugo642@gmail.com>, 2017\n"
|
||||
"Last-Translator: mrkucho <vhugo642@gmail.com>, 2017\n"
|
||||
"Language-Team: Spanish (Latin America) (https://www.transifex.com/solus-project/teams/68407/es_419/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -36,12 +36,12 @@ msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Usar tiempo de ejecución del sistema"
|
||||
msgstr "Usar librerías nativas"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
"Cambie entre el tiempo de ejecución del sistema y el incluido por Steam"
|
||||
"Cambie entre las librerías nativas del sistema y las incluidas por Steam"
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
@@ -62,7 +62,7 @@ msgstr "Forzar modo de 32-bit para Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Utilizar la biblioteca de intercepción"
|
||||
msgstr "Utilizar librería de intercepción"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: mrkucho <vhugo642@gmail.com>, 2017\n"
|
||||
"Language-Team: Spanish (Spain) (https://www.transifex.com/solus-project/teams/68407/es_ES/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es_ES\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Integration"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Controla el comportamiento del cliente y los juegos de Steam. La "
|
||||
"configuración no tendrá efecto hasta que el cliente de Steam se reinicie. "
|
||||
"Use la opción 'Salir de Steam' para asegurarse de que se cierre."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Usar librerías nativas"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Cambie entre las librerías nativas y las incluidas por Steam"
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Esta opción ha sido desactivada ya que el sistema ya es de 32-bit"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Esto puede mejorar algunos juegos rotos, pero desactivará el navegador de la"
|
||||
" tienda de Steam."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Forzar modo de 32-bit para Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Usar librería de intercepción"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Forzar a las aplicaciones de Steam a usar más librerías del sistema para "
|
||||
"maximizar la compatibilidad."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Usar librería de redirección"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Anular las llamadas del sistema para solucionar algunos problemas conocidos "
|
||||
"en adaptaciones de Linux."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Error al guardar la configuración"
|
||||
+5
-5
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Víctor Rodríguez <vhugo642@gmail.com>, 2017\n"
|
||||
"Last-Translator: mrkucho <vhugo642@gmail.com>, 2017\n"
|
||||
"Language-Team: Spanish (Peru) (https://www.transifex.com/solus-project/teams/68407/es_PE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -36,12 +36,12 @@ msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Usar tiempo de ejecución del sistema"
|
||||
msgstr "Usar librerías nativas"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
"Cambie entre el tiempo de ejecución del sistema y el incluido por Steam"
|
||||
"Cambie entre las librerías nativas del sistema y las incluidas por Steam"
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
@@ -62,7 +62,7 @@ msgstr "Forzar modo de 32-bit para Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Usar la librería de intercepción"
|
||||
msgstr "Usar librería de intercepción"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
@@ -74,7 +74,7 @@ msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Usar la librería de intercepción"
|
||||
msgstr "Usar librería de redirección"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
|
||||
@@ -59,7 +59,7 @@ msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Pakottaa 32-bittisen tilan Steamille"
|
||||
msgstr "Pakota 32-bittinen tila Steamille"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Kevin Németh <keiro@vivaldi.net>, 2017\n"
|
||||
"Language-Team: Hungarian (https://www.transifex.com/solus-project/teams/68407/hu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: hu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Integration"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Szabályozza a Steam-kliens működését és a játékokat. A beállításoknak nem "
|
||||
"lesz hatásuk a Steam-kliens újraindításáig. Használja a 'Kilépés a Steamből'"
|
||||
" opciót, hogy biztosan bezáródjon."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Natív futtatási környezet használata"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
"Váltás a natív futtási környezet és a csomagolt Steam futtatási környezet "
|
||||
"között."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Ez az opció le van tiltva, ha a rendszer már 32 bites."
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Ez megoldja néhány játék problémáját, de le fogja tiltani a Steam Áruház "
|
||||
"keresőjét."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "32 bites mód kényszerítése a Steamnek"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Az elfogó könyvtár használata"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Steam alkalmazások kényszerítése a natív könyvtársak használatára a "
|
||||
"kompatibilitás maximalizálására."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Az átirányítási könyvtár használata"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Rendszerhívások felüllbírálása ismert bugok javítására néhány Linux porton."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "A konfiguráció mentése sikertelen"
|
||||
+26
-14
@@ -8,9 +8,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"POT-Creation-Date: 2017-12-19 12:48+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Fabio Forni <fabio94xx@gmail.com>, 2017\n"
|
||||
"Last-Translator: Fabio <fabio0x@keemail.me>, 2017\n"
|
||||
"Language-Team: Italian (Italy) (https://www.transifex.com/solus-project/teams/68407/it_IT/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -20,11 +20,11 @@ msgstr ""
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
#: src/frontend/main-window.c:132 src/frontend/main-window.c:149
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Integration"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
#: src/frontend/main-window.c:163
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
@@ -34,20 +34,20 @@ msgstr ""
|
||||
"non avranno effetto finché il client Steam non sarà riavviato. Usa l'opzione"
|
||||
" \"Esci da Steam\" per assicurarti che venga davvero chiuso."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Use native runtime"
|
||||
msgstr "Use ambiente di runtime nativo"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
#: src/frontend/main-window.c:193
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Scegli tra l'ambiente di runtime nativo e quello integrato in Steam."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
#: src/frontend/main-window.c:202
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Questa opzione è disabilitata perché il sistema è già a 32-bit"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
#: src/frontend/main-window.c:206
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
@@ -55,15 +55,15 @@ msgstr ""
|
||||
"Può correggere alcuni giochi non funzionanti, ma disabiliterà la navigazione"
|
||||
" nel negozio Steam."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
#: src/frontend/main-window.c:211
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Forza Steam a 32-bit"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Usa la libreria di intercettazione"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
#: src/frontend/main-window.c:220
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
@@ -71,16 +71,28 @@ msgstr ""
|
||||
"Forza le applicazioni di Steam a usare ancor più librerie native per "
|
||||
"massimizzare la compatibilità."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Usa la libreria di redirezione"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
#: src/frontend/main-window.c:230
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Sostituisce le chiamate di sistema per correggere i bug noti di alcuni "
|
||||
"porting su Linux."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
#: src/frontend/main-window.c:237
|
||||
msgid "Use the Unity fullscreen workaround"
|
||||
msgstr "Aggira il problema di Unity a schermo intero"
|
||||
|
||||
#: src/frontend/main-window.c:238
|
||||
msgid ""
|
||||
"Prevent some Unity games from launching in full screen mode to fix numerous "
|
||||
"issues"
|
||||
msgstr ""
|
||||
"Evita che alcuni giochi basati su Unity partano a schermo intero per "
|
||||
"correggere svariate problematiche"
|
||||
|
||||
#: src/frontend/main-window.c:403
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Errore durante il salvataggio della configurazione"
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: jemin_jeon <jemin.jeon@posteo.net>, 2017\n"
|
||||
"Language-Team: Korean (https://www.transifex.com/solus-project/teams/68407/ko/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ko\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "리눅스 스팀® 통합 설정"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"스팀 클라이언트와 게임의 작동방식을 설정합니다. 설정값은 스팀 클라이언트를 재시작하면 적용됩니다. \"스팀 종료하기\" 옵션을 이용해서 "
|
||||
"스팀이 확실히 종료되게 해주세요."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "리눅스 자체 런타임 사용하기"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "리눅스 자체 런타임과 스팀 내장 런타임간 전환하기"
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "시스템이 이미 32비트 운영체제이므로 이 옵션은 비활성화 되었습니다."
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"이 옵션을 활성화하면 올바르게 실행되지 않는 특정 게임이 정상 작동 할 수도 있습니다. 그러나 스팀 상점은 이용이 불가능합니다."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "스팀이 32비트 모드에서 실행되도록 강제합니다."
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Intercept 라이브러리를 사용합니다."
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr "스팀이 더 많은 리눅스 자체 라이브러리를 사용하여 호환성을 최대화 할 수 있도록 강제합니다."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Redirect 라이브러리 사용하기"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr "시스템 콜을 오버라이드하여 리눅스로 이식된 프로그램에서 발생하는 알려진 특정 오류를 수정합니다."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "설정 저장에 실패했습니다."
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: jemin_jeon <jemin.jeon@posteo.net>, 2017\n"
|
||||
"Language-Team: Korean (Korea) (https://www.transifex.com/solus-project/teams/68407/ko_KR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ko_KR\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "리눅스 스팀® 통합 설정"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"스팀 클라이언트와 게임의 작동방식을 설정합니다. 설정값은 스팀 클라이언트를 재시작하면 적용됩니다. \"스팀 종료하기\" 옵션을 이용해서 "
|
||||
"스팀이 확실히 종료되게 해주세요."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "리눅스 자체 런타임 사용하기"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "리눅스 자체 런타임과 스팀 내장 런타임간 전환하기"
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "시스템이 이미 32비트 운영체제이므로 이 옵션은 비활성화 되었습니다."
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"이 옵션을 활성화하면 올바르게 실행되지 않는 특정 게임이 정상 작동 할 수도 있습니다. 그러나 스팀 상점은 이용이 불가능합니다."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "스팀이 32비트 모드에서 실행되도록 강제합니다."
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Intercept 라이브러리를 사용합니다."
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr "스팀이 더 많은 리눅스 자체 라이브러리를 사용하여 호환성을 최대화 할 수 있도록 강제합니다."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Redirect 라이브러리 사용하기"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr "시스템 콜을 오버라이드하여 리눅스로 이식된 프로그램에서 발생하는 알려진 특정 오류를 수정합니다."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "설정 저장에 실패했습니다."
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"POT-Creation-Date: 2017-12-19 12:48+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -19,58 +19,68 @@ msgstr ""
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
#: src/frontend/main-window.c:132 src/frontend/main-window.c:149
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
#: src/frontend/main-window.c:163
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Use native runtime"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
#: src/frontend/main-window.c:193
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
#: src/frontend/main-window.c:202
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
#: src/frontend/main-window.c:206
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
#: src/frontend/main-window.c:211
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid "Use the intercept library"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
#: src/frontend/main-window.c:220
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Use the redirect library"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
#: src/frontend/main-window.c:230
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
#: src/frontend/main-window.c:237
|
||||
msgid "Use the Unity fullscreen workaround"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:238
|
||||
msgid ""
|
||||
"Prevent some Unity games from launching in full screen mode to fix numerous "
|
||||
"issues"
|
||||
msgstr ""
|
||||
|
||||
#: src/frontend/main-window.c:403
|
||||
msgid "Failed to save configuration"
|
||||
msgstr ""
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-12-19 12:48+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Moo <moose@mail.ru>, 2017\n"
|
||||
"Language-Team: Lithuanian (https://www.transifex.com/solus-project/teams/68407/lt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: lt\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:132 src/frontend/main-window.c:149
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® integracija"
|
||||
|
||||
#: src/frontend/main-window.c:163
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Valdykite Steam kliento ir žaidimų elgseną. Nustatymai neįsigalios tol, kol "
|
||||
"Steam klientas nebus paleistas iš naujo. Norėdami užtikrinti, kad programa "
|
||||
"Steam baigtų darbą, naudokite parametrą \"Išeiti iš Steam\"."
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Use native runtime"
|
||||
msgstr "Naudoti savą vykdymo aplinką"
|
||||
|
||||
#: src/frontend/main-window.c:193
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
"Perjungti tarp savos vykdymo aplinkos ir pridėtinės Steam vykdymo aplinkos."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:202
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Šis parametras buvo išjungtas, nes sistema jau ir yra 32-bitų"
|
||||
|
||||
#: src/frontend/main-window.c:206
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Tai galėti padėti apeiti kai kurių neveikiančių žaidimų problemas, tačiau "
|
||||
"išjungs Steam parduotuvės naršyklę."
|
||||
|
||||
#: src/frontend/main-window.c:211
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Programai Steam priverstinai naudoti 32-bitų veikseną"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Naudoti perėmimo biblioteką"
|
||||
|
||||
#: src/frontend/main-window.c:220
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Priversti Steam programas naudoti labiau savas bibliotekas, siekiant "
|
||||
"padidinti suderinamumą."
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Naudoti peradresavimo biblioteką"
|
||||
|
||||
#: src/frontend/main-window.c:230
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Nustelbti sistemines iškvietas, siekiant pataisyti žinomas klaidas kai "
|
||||
"kuriuose Linux perkėlimuose."
|
||||
|
||||
#: src/frontend/main-window.c:237
|
||||
msgid "Use the Unity fullscreen workaround"
|
||||
msgstr "Naudoti Unity viso ekrano problemos apėjimą"
|
||||
|
||||
#: src/frontend/main-window.c:238
|
||||
msgid ""
|
||||
"Prevent some Unity games from launching in full screen mode to fix numerous "
|
||||
"issues"
|
||||
msgstr ""
|
||||
"Neleisti kai kuriems Unity žaidimams pasileisti viso ekrano veiksenoje, "
|
||||
"siekiant pataisyti daugelį klaidų"
|
||||
|
||||
#: src/frontend/main-window.c:403
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Nepavyko įrašyti konfigūracijos"
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Lars-Eivind Bjørtvedt <larseivind.bjoertvedt@gmail.com>, 2017\n"
|
||||
"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/solus-project/teams/68407/nb_NO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nb_NO\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Integrasjon"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Endre oppførselen til Steam-klienten og spill. Innstillingene vil ikke tre i"
|
||||
" kraft før Steam-klienten er restartet. Bruk 'Avslutt Steam '-valget for å "
|
||||
"være sikker på at det lukkes helt."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Bruk lokal kjøreomgivelse"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr "Bytt mellom lokal kjøreomgivelse og Steams innebygde kjøreomgivelse."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Dette valget er deaktivert siden systemet allerede er 32-bits"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Dette kan få visse defekte spill til å fungere, men vil deaktivere "
|
||||
"nettleseren i Steam-butikken."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Tving 32-bits modus for Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Bruk avskjæringsbiblioteket"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Tving Steam-applikasjoner til å bruke flere lokale kjøreomgivelser for å "
|
||||
"maksimere kompatibiliteten."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Bruk videresendingsbiblioteket"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Overstyr systemkall for å fikse kjente feil i enkelte Linux-versjoner av "
|
||||
"spill."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Kunne ikke lagre konfigurasjon"
|
||||
+3
-3
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Heimen Stoffels <vistausss@outlook.com>, 2017\n"
|
||||
"Last-Translator: Thimo dZ <tsdezwart@protonmail.com>, 2017\n"
|
||||
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/solus-project/teams/68407/nl_NL/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -52,12 +52,12 @@ msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Dit kan gebroken spellen doen werken, maar zal de Steam store browser "
|
||||
"Dit kan niet werkende spellen doen werken, maar zal de Steam store browser "
|
||||
"uitschakelen."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Forceer 32-bitmodus voor Steam"
|
||||
msgstr "Forceer 32-bitsmodus voor Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Alex Vorobyev <avorobyev@protonmail.com>, 2017\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/solus-project/teams/68407/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Интеграция Steam в Linux"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Настройте поведение клиента Steam и игр. Настройки не возымеют эффекта, пока"
|
||||
" клиент Steam не будет перезапущен. Выберите пункт \"Выход из Steam\", чтобы"
|
||||
" закрыть клиент."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Использовать системные библиотеки"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
"Переключение между системными библиотеками и библиотеками, поставляемыми с "
|
||||
"клиентом Steam."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Эта настройка отключена, поскольку система является 32-битной"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Эта настройка может помочь с запуском некоторых \"сломанных\" игр, но при "
|
||||
"этом магазин Steam будет недоступен."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Включить 32-битный режим в Steam"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Использовать библиотеку intercept"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Приложения в Steam будут использовать системные библиотеки для лучшей "
|
||||
"совместимости."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Использовать библиотеку redirect"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Перехват системных вызовов в некоторых Linux-портах для исправления "
|
||||
"известных ошибок."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Не удалось сохранить конфигурацию"
|
||||
@@ -0,0 +1,88 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the linux-steam-integration package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: linux-steam-integration\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-11-05 19:28+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Demiray Muhterem <mdemiray@msn.com>, 2017\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/solus-project/teams/68407/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: tr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. Sort out window bits
|
||||
#. header label
|
||||
#: src/frontend/main-window.c:131 src/frontend/main-window.c:148
|
||||
msgid "Linux Steam® Integration"
|
||||
msgstr "Linux Steam® Bütünleşmesi"
|
||||
|
||||
#: src/frontend/main-window.c:162
|
||||
msgid ""
|
||||
"Control the behaviour of the Steam client and games. Settings will not take "
|
||||
"effect until the Steam Client is restarted. Use the 'Exit Steam' option to "
|
||||
"ensure it closes."
|
||||
msgstr ""
|
||||
"Steam istemcisinin ve oyunların davranışını denetleyin. Ayarlar, Steam "
|
||||
"İstemcisi yeniden başlatılıncaya kadar etkili olmaz. Kapanmasını sağlamak "
|
||||
"için 'Exit Steam' seçeneğini kullanın."
|
||||
|
||||
#: src/frontend/main-window.c:191
|
||||
msgid "Use native runtime"
|
||||
msgstr "Yerel çalışma zamanını kullan"
|
||||
|
||||
#: src/frontend/main-window.c:192
|
||||
msgid "Switch between the native runtime and the bundled Steam runtime."
|
||||
msgstr ""
|
||||
"Yerli çalışma zamanı ve birlikte verilen Steam çalışma zamanı arasında geçiş"
|
||||
" yapın."
|
||||
|
||||
#. Label is shown to indicate we can't enable 32-bit option
|
||||
#: src/frontend/main-window.c:201
|
||||
msgid "This option has been disabled as the system is already 32-bit"
|
||||
msgstr "Sistem zaten 32-bit olduğu için bu seçenek devre dışı bırakılmıştır"
|
||||
|
||||
#: src/frontend/main-window.c:205
|
||||
msgid ""
|
||||
"This may workaround some broken games, but will disable the Steam store "
|
||||
"browser."
|
||||
msgstr ""
|
||||
"Bu, bazı kırık oyunları geçici olarak çözebilir, ancak Steam deposu "
|
||||
"tarayıcısını devre dışı bırakır."
|
||||
|
||||
#: src/frontend/main-window.c:210
|
||||
msgid "Force 32-bit mode for Steam"
|
||||
msgstr "Steam için 32 bitlik modu zorla"
|
||||
|
||||
#: src/frontend/main-window.c:218
|
||||
msgid "Use the intercept library"
|
||||
msgstr "Kesme kitaplığını kullanın"
|
||||
|
||||
#: src/frontend/main-window.c:219
|
||||
msgid ""
|
||||
"Force Steam applications to use more native libraries to maximise "
|
||||
"compatibility."
|
||||
msgstr ""
|
||||
"Steam uygulamalarının uyumluluğu en üst düzeye çıkarmak için daha fazla "
|
||||
"yerel kütüphane kullanmalarını zorunlu tutun."
|
||||
|
||||
#: src/frontend/main-window.c:228
|
||||
msgid "Use the redirect library"
|
||||
msgstr "Yönlendirme kütüphanesini kullanın"
|
||||
|
||||
#: src/frontend/main-window.c:229
|
||||
msgid "Override system calls to fix known bugs in some Linux ports."
|
||||
msgstr ""
|
||||
"Bazı Linux bağlantı noktalarında bilinen hataları düzeltmek için sistem "
|
||||
"çağrılarını geçersiz kılın."
|
||||
|
||||
#: src/frontend/main-window.c:383
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Yapılandırma kaydedilemedi"
|
||||
@@ -0,0 +1,4 @@
|
||||
install_data(
|
||||
'pulseaudio',
|
||||
install_dir: join_paths(path_fake_scripts_dir, 'pulseaudio'),
|
||||
)
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Work around games using libfmod which is determined to execute:
|
||||
# pulseaudio --check > /dev/null 2>&1
|
||||
|
||||
if [[ ! -z "$1" ]]; then
|
||||
if [[ "$1" == "--check" ]] ; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
exec /usr/bin/pulseaudio $*
|
||||
+32
-3
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
@@ -52,11 +53,29 @@ const char *lsi_get_home_dir()
|
||||
|
||||
char *lsi_get_user_config_dir()
|
||||
{
|
||||
const char *home = lsi_get_home_dir();
|
||||
const char *home = NULL;
|
||||
char *c = NULL;
|
||||
char *xdg_config = getenv("XDG_CONFIG_HOME");
|
||||
char *p = NULL;
|
||||
|
||||
/* Respect the XDG_CONFIG_HOME variable if it is set */
|
||||
if (xdg_config) {
|
||||
p = realpath(xdg_config, NULL);
|
||||
if (p) {
|
||||
return p;
|
||||
}
|
||||
return strdup(xdg_config);
|
||||
}
|
||||
|
||||
home = lsi_get_home_dir();
|
||||
if (asprintf(&c, "%s/.config", home) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
p = realpath(c, NULL);
|
||||
if (p) {
|
||||
free(c);
|
||||
return p;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
@@ -66,7 +85,17 @@ char *lsi_get_user_config_dir()
|
||||
static inline char *lsi_get_fallback_steam_dir(const char *home)
|
||||
{
|
||||
char *p = NULL;
|
||||
if (asprintf(&p, "%s/.local/share/Steam", home) < 0) {
|
||||
char *xdg_data = getenv("XDG_DATA_HOME");
|
||||
int r = 0;
|
||||
|
||||
/* Respect the XDG_CONFIG_HOME variable if it is set */
|
||||
if (xdg_data) {
|
||||
r = asprintf(&p, "%s/Steam", xdg_data);
|
||||
} else {
|
||||
r = asprintf(&p, "%s/.local/share/Steam", home);
|
||||
}
|
||||
|
||||
if (r < 0) {
|
||||
return NULL;
|
||||
}
|
||||
return p;
|
||||
|
||||
+2
-1
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
|
||||
+2
-1
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
@@ -32,6 +33,7 @@ struct _LsiSettingsWindow {
|
||||
/* Only when libredirect is enabled will we have this option */
|
||||
#ifdef HAVE_LIBREDIRECT
|
||||
GtkWidget *check_redirect;
|
||||
GtkWidget *check_unity_hack;
|
||||
#endif
|
||||
|
||||
/* Always have these guys */
|
||||
@@ -113,7 +115,7 @@ static void lsi_settings_window_init(LsiSettingsWindow *self)
|
||||
lsi_config_load_defaults(&self->config);
|
||||
}
|
||||
|
||||
/* Conditionally apply CSD */
|
||||
/* Conditionally apply CSD */
|
||||
#if GTK_CHECK_VERSION(3, 12, 0)
|
||||
xdg_desktop = g_getenv("XDG_CURRENT_DESKTOP");
|
||||
if (xdg_desktop && (strstr(xdg_desktop, "GNOME:") || strstr(xdg_desktop, ":GNOME") ||
|
||||
@@ -230,6 +232,14 @@ static void lsi_settings_window_init(LsiSettingsWindow *self)
|
||||
"Linux ports."));
|
||||
set_row_sensitive(self->check_redirect, FALSE);
|
||||
gtk_switch_set_active(GTK_SWITCH(self->check_redirect), self->config.use_libredirect);
|
||||
|
||||
self->check_unity_hack = insert_grid_toggle(grid,
|
||||
&row,
|
||||
_("Use the Unity fullscreen workaround"),
|
||||
_("Prevent some Unity games from launching in "
|
||||
"full screen mode to fix numerous issues"));
|
||||
set_row_sensitive(self->check_unity_hack, FALSE);
|
||||
gtk_switch_set_active(GTK_SWITCH(self->check_unity_hack), self->config.use_unity_hack);
|
||||
#endif
|
||||
|
||||
/* Hook up our signals. Basically the "native runtime" option controls the two library
|
||||
@@ -240,6 +250,12 @@ static void lsi_settings_window_init(LsiSettingsWindow *self)
|
||||
G_CALLBACK(lsi_native_swapped),
|
||||
self);
|
||||
|
||||
/* Changes to redirect will disable/enable unity hack */
|
||||
g_signal_connect_swapped(self->check_redirect,
|
||||
"notify::active",
|
||||
G_CALLBACK(lsi_native_swapped),
|
||||
self);
|
||||
|
||||
/* Ensure our properties are now in sync. */
|
||||
lsi_native_swapped(self, self->check_native);
|
||||
|
||||
@@ -348,11 +364,15 @@ static GtkWidget *insert_grid_toggle(GtkWidget *grid, int *row, const char *titl
|
||||
static void lsi_native_swapped(LsiSettingsWindow *self, __lsi_unused__ gpointer v)
|
||||
{
|
||||
gboolean native_runtime;
|
||||
gboolean redirect;
|
||||
|
||||
native_runtime = gtk_switch_get_active(GTK_SWITCH(self->check_native));
|
||||
|
||||
#ifdef HAVE_LIBREDIRECT
|
||||
redirect = gtk_switch_get_active(GTK_SWITCH(self->check_redirect));
|
||||
|
||||
set_row_sensitive(self->check_redirect, native_runtime);
|
||||
set_row_sensitive(self->check_unity_hack, native_runtime && redirect);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBINTERCEPT
|
||||
@@ -372,10 +392,11 @@ static gboolean lsi_window_closed(LsiSettingsWindow *self, __lsi_unused__ GdkEve
|
||||
|
||||
#ifdef HAVE_LIBREDIRECT
|
||||
self->config.use_libredirect = gtk_switch_get_active(GTK_SWITCH(self->check_redirect));
|
||||
self->config.use_unity_hack = gtk_switch_get_active(GTK_SWITCH(self->check_unity_hack));
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBINTERCEPT
|
||||
self->config.use_libredirect = gtk_switch_get_active(GTK_SWITCH(self->check_redirect));
|
||||
self->config.use_libintercept = gtk_switch_get_active(GTK_SWITCH(self->check_intercept));
|
||||
#endif
|
||||
|
||||
/* Try to write new config */
|
||||
|
||||
+2
-1
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
|
||||
@@ -6,8 +6,13 @@ if with_frontend == true
|
||||
'main-window.c',
|
||||
]
|
||||
|
||||
frontend_name = 'lsi-settings'
|
||||
if with_snap_support == true
|
||||
frontend_name = 'linux-steam-integration.settings'
|
||||
endif
|
||||
|
||||
frontend = executable(
|
||||
'lsi-settings',
|
||||
frontend_name,
|
||||
sources: frontend_sources + nica_sources,
|
||||
include_directories: nica_includes,
|
||||
dependencies: [
|
||||
@@ -15,5 +20,6 @@ if with_frontend == true
|
||||
link_lsi,
|
||||
],
|
||||
install: true,
|
||||
install_dir: path_bindir,
|
||||
)
|
||||
endif
|
||||
|
||||
+172
-41
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
@@ -29,6 +30,10 @@
|
||||
*/
|
||||
static const char *matched_process = NULL;
|
||||
|
||||
static bool lsi_override_replace_with_host(const char *orig_name, const char **soname,
|
||||
const char *msg);
|
||||
static bool lsi_override_soname(unsigned int flag, const char *orig_name, const char **soname);
|
||||
|
||||
/**
|
||||
* We support a number of modes, but we mostly exist to make Steam behave
|
||||
*/
|
||||
@@ -82,12 +87,18 @@ static const char *steam_allowed[] = {
|
||||
"panorama",
|
||||
"libpangoft2-1.0.so",
|
||||
"libpango-1.0.so",
|
||||
"libpangocairo-1.0.so",
|
||||
|
||||
/* steamwebhelper */
|
||||
"libcef.so",
|
||||
|
||||
/* Swift shader */
|
||||
"libGLESv2.so",
|
||||
"libEGL.so",
|
||||
|
||||
/* widevine */
|
||||
"libwidevinecdmadapter.so",
|
||||
"libwidevinecdm.so",
|
||||
};
|
||||
|
||||
static const char *wanted_steam_processes[] = {
|
||||
@@ -106,15 +117,36 @@ static const char *vendor_blacklist[] = {
|
||||
* loading the mesalib drivers. */
|
||||
"libgcc_",
|
||||
"libstdc++",
|
||||
"libSDL",
|
||||
|
||||
/* Ensure we don't match weird made up cruft like "libSDL2_locale" */
|
||||
"libSDL-1.2",
|
||||
|
||||
#if UINTPTR_MAX == 0xffffffffffffffff
|
||||
/* Only blacklist SDL on native 64-bit builds
|
||||
* 32-bit builds tend to do weird stuff, like ship incompatible
|
||||
* patched builds of libSDL (Don't Starve, for example)
|
||||
*/
|
||||
"libSDL2-2",
|
||||
#endif
|
||||
"libSDL2_ttf",
|
||||
"libSDL_ttf",
|
||||
"libSDL2_image",
|
||||
"libSDL_image",
|
||||
"libSDL2_mixer",
|
||||
"libSDL_mixer",
|
||||
"libSDL2_net",
|
||||
"libSDL_net",
|
||||
"libSDL2_gfx",
|
||||
"libSDL_gfx",
|
||||
|
||||
/* vendor-owned */
|
||||
"libz.so.1",
|
||||
"libfreetype.so.6",
|
||||
"libmpg123.so.0",
|
||||
|
||||
/* general problem causer. */
|
||||
"libopenal.so.",
|
||||
|
||||
/* thou shalt not replace drivers (swiftshader) ! */
|
||||
"libGLESv2.so",
|
||||
"libGL.so",
|
||||
|
||||
/* glews (provide glew + glew110 in your distro for full compat) */
|
||||
"libGLEW.so.1.10",
|
||||
"libGLEW.so.1.12",
|
||||
@@ -133,6 +165,8 @@ static const char *vendor_blacklist[] = {
|
||||
"libcrypto.so.1.0.0",
|
||||
"libssl.so.1.0.0",
|
||||
#endif
|
||||
/* TODO/FUTURE:
|
||||
"libaudiofile.so.1", */
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -189,10 +223,18 @@ _nica_public_ unsigned int la_version(unsigned int supported_version)
|
||||
/**
|
||||
* lsi_search_steam handles whitelisting for the main Steam processes
|
||||
*/
|
||||
char *lsi_search_steam(const char *name)
|
||||
char *lsi_search_steam(unsigned int flag, const char *name)
|
||||
{
|
||||
/* Find out if it exists */
|
||||
bool file_exists = lsi_file_exists(name);
|
||||
const char *soname = NULL;
|
||||
|
||||
/* Preemptively catch transmutations */
|
||||
if (lsi_override_soname(flag, name, &soname)) {
|
||||
return (char *)soname;
|
||||
}
|
||||
|
||||
if (!lsi_file_exists(name)) {
|
||||
return (char *)name;
|
||||
}
|
||||
|
||||
/* Find out if its a Steam private lib.. These are relative "./" files too! */
|
||||
if (name && (strstr(name, "/Steam/") || strncmp(name, "./", 2) == 0)) {
|
||||
@@ -201,11 +243,7 @@ char *lsi_search_steam(const char *name)
|
||||
return (char *)name;
|
||||
}
|
||||
}
|
||||
if (file_exists) {
|
||||
lsi_log_debug("blacklisted loading of vendor library: \033[34;1m%s\033[0m",
|
||||
name);
|
||||
}
|
||||
|
||||
lsi_log_debug("blacklisted loading of vendor library: \033[34;1m%s\033[0m", name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -233,7 +271,20 @@ static const char *vendor_transmute_source[] = {
|
||||
#ifdef LSI_OVERRIDE_LIBRESSL
|
||||
"libcrypto.so.36",
|
||||
"libssl.so.37",
|
||||
"libcrypto.so.42",
|
||||
"libssl.so.44",
|
||||
#endif
|
||||
|
||||
/* old name for openal */
|
||||
"libopenal-soft.so.1",
|
||||
|
||||
/* invalid curls */
|
||||
"libcurl-gnutls.so.3",
|
||||
"libcurl.so.3",
|
||||
|
||||
"libbz2.so.1.0",
|
||||
|
||||
"libudev.so.0",
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -257,10 +308,25 @@ static const char *vendor_transmute_target[] = {
|
||||
#if defined(LSI_LIBRESSL_MODE_SHIM)
|
||||
"libcrypto" LSI_LIBRESSL_SUFFIX ".so",
|
||||
"libssl" LSI_LIBRESSL_SUFFIX ".so",
|
||||
"libcrypto" LSI_LIBRESSL_SUFFIX ".so",
|
||||
"libssl" LSI_LIBRESSL_SUFFIX ".so",
|
||||
#elif defined(LSI_LIBRESSL_MODE_NATIVE)
|
||||
"libcrypto.so.1.0.0",
|
||||
"libssl.so.1.0.0",
|
||||
"libcrypto.so.1.0.0",
|
||||
"libssl.so.1.0.0",
|
||||
#endif
|
||||
|
||||
/* new name for openal */
|
||||
"libopenal.so.1",
|
||||
|
||||
/* invalid curls */
|
||||
"libcurl-gnutls.so.4",
|
||||
"libcurl.so.4",
|
||||
|
||||
"libbz2.so.1.0.6",
|
||||
|
||||
"libudev.so.1",
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -341,53 +407,43 @@ static bool lsi_override_x86_derp(const char *orig_name, const char **soname)
|
||||
orig_name,
|
||||
path_lookup);
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
static bool lsi_override_x86_derp(__lsi_unused__ const char *orig_name,
|
||||
__lsi_unused__ const char **soname)
|
||||
{
|
||||
/* Don't perform x86 translation on 32-bit machines */
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* lsi_override_dlopen is used to override simple dlopen() requests typically
|
||||
* used by Mono games, i.e.:
|
||||
*
|
||||
* <dllmap dll="SDL2.dll" os="linux" cpu="x86-64" target="./lib64/libSDL2-2.0.so.0"/>
|
||||
*
|
||||
* We'll attempt to do a trivial lookup for "/usr/./lib64/libSDL2-2.0.so.0 in this
|
||||
* case.
|
||||
* Internal helper for path replacement to host lib
|
||||
*/
|
||||
static bool lsi_override_dlopen(const char *orig_name, const char **soname)
|
||||
static bool lsi_override_replace_with_host(const char *orig_name, const char **soname,
|
||||
const char *msg)
|
||||
{
|
||||
static char path_lookup[PATH_MAX];
|
||||
static char path_copy[PATH_MAX];
|
||||
char *small_name = NULL;
|
||||
static const char *library_paths[] = {
|
||||
#if UINTPTR_MAX == 0xffffffffffffffff
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
"/var/lib/snapd/lib/gl",
|
||||
#endif
|
||||
"/usr/lib64",
|
||||
"/usr/lib/x86_64-linux-gnu",
|
||||
"/usr/lib",
|
||||
#else
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
"/var/lib/snapd/lib/gl32",
|
||||
#endif
|
||||
"/usr/lib32",
|
||||
"/usr/lib/i386-linux-gnu",
|
||||
"/usr/lib",
|
||||
#endif
|
||||
};
|
||||
|
||||
if (lsi_override_dll_fail(orig_name, soname)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!lsi_file_exists(orig_name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (lsi_override_x86_derp(orig_name, soname)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!strcpy(path_copy, orig_name)) {
|
||||
return false;
|
||||
}
|
||||
@@ -416,16 +472,45 @@ static bool lsi_override_dlopen(const char *orig_name, const char **soname)
|
||||
}
|
||||
|
||||
*soname = path_lookup;
|
||||
lsi_log_debug(
|
||||
"intercepting vendor dlopen() \033[31;1m%s\033[0m -> \033[34;1m%s\033[0m",
|
||||
orig_name,
|
||||
path_lookup);
|
||||
if (!msg) {
|
||||
return true;
|
||||
}
|
||||
lsi_log_debug("%s \033[31;1m%s\033[0m -> \033[34;1m%s\033[0m",
|
||||
msg,
|
||||
orig_name,
|
||||
path_lookup);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* lsi_override_dlopen is used to override simple dlopen() requests typically
|
||||
* used by Mono games, i.e.:
|
||||
*
|
||||
* <dllmap dll="SDL2.dll" os="linux" cpu="x86-64" target="./lib64/libSDL2-2.0.so.0"/>
|
||||
*
|
||||
* We'll attempt to do a trivial lookup for "/usr/./lib64/libSDL2-2.0.so.0 in this
|
||||
* case.
|
||||
*/
|
||||
static bool lsi_override_dlopen(const char *orig_name, const char **soname)
|
||||
{
|
||||
if (lsi_override_dll_fail(orig_name, soname)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!lsi_file_exists(orig_name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (lsi_override_x86_derp(orig_name, soname)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return lsi_override_replace_with_host(orig_name, soname, "intercepting vendor dlopen()");
|
||||
}
|
||||
|
||||
/**
|
||||
* lsi_override_soname will deal with LA_SER_ORIG entries, i.e. the original
|
||||
* soname request when the linker tries to load a library.
|
||||
@@ -474,6 +559,46 @@ static bool lsi_override_soname(unsigned int flag, const char *orig_name, const
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the library exists locally, and we're attempting to load this from a
|
||||
* relative location, strongly attempt to actually use the system-version instead.
|
||||
*
|
||||
* Thus, if our CWD is our LD_LIBRARY_PATH and contains "libfreetype.so.6", we'll
|
||||
* try to use the host version of the library if that exists, instead of relying
|
||||
* on the locally vendored, potentially insecure/buggy version.
|
||||
*/
|
||||
static bool lsi_override_local(unsigned int flag, const char *orig_name, const char **soname)
|
||||
{
|
||||
*soname = NULL;
|
||||
|
||||
/* We only need to deal with LA_SER_ORIG */
|
||||
if ((flag & LA_SER_ORIG) != LA_SER_ORIG) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* We only care about relative paths */
|
||||
if (strstr(orig_name, "/")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* We also only care about relative paths */
|
||||
if (!lsi_file_exists(orig_name)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Resolve all paths back to the real library path version if they exist */
|
||||
for (size_t i = 0; i < ARRAY_SIZE(vendor_blacklist); i++) {
|
||||
if (!strstr(orig_name, vendor_blacklist[i])) {
|
||||
continue;
|
||||
}
|
||||
return lsi_override_replace_with_host(orig_name,
|
||||
soname,
|
||||
"forcing use of host library");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
char *lsi_blacklist_vendor(unsigned int flag, const char *name)
|
||||
{
|
||||
/* Find out if it exists */
|
||||
@@ -485,8 +610,14 @@ char *lsi_blacklist_vendor(unsigned int flag, const char *name)
|
||||
return (char *)override_soname;
|
||||
}
|
||||
|
||||
/* Locally exists due to directory foobar */
|
||||
if (lsi_override_local(flag, name, &override_soname)) {
|
||||
return (char *)override_soname;
|
||||
}
|
||||
|
||||
/* Find out if its a Steam private lib.. These are relative "./" files too! */
|
||||
if (name && (strstr(name, "/Steam/") || strncmp(name, "./", 2) == 0)) {
|
||||
if (name && (strstr(name, "/Steam/") || strstr(name, "/steamapps/") ||
|
||||
strncmp(name, "./", 2) == 0)) {
|
||||
for (size_t i = 0; i < ARRAY_SIZE(vendor_blacklist); i++) {
|
||||
if (!strstr(name, vendor_blacklist[i])) {
|
||||
continue;
|
||||
@@ -516,7 +647,7 @@ _nica_public_ char *la_objsearch(const char *name, __lsi_unused__ uintptr_t *coo
|
||||
{
|
||||
switch (work_mode) {
|
||||
case INTERCEPT_MODE_STEAM:
|
||||
return lsi_search_steam(name);
|
||||
return lsi_search_steam(flag, name);
|
||||
case INTERCEPT_MODE_VENDOR_OFFENDER:
|
||||
return lsi_blacklist_vendor(flag, name);
|
||||
case INTERCEPT_MODE_NONE:
|
||||
|
||||
+1
-1
Submodule src/libnica updated: e71a442667...8ec3cf2291
+25
-3
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
@@ -127,6 +128,13 @@ bool lsi_config_load(LsiConfig *config)
|
||||
map_val = NULL;
|
||||
}
|
||||
|
||||
/* Do we want unity3d hack? */
|
||||
map_val = nc_hashmap_get(nc_hashmap_get(mconfig, "Steam"), "use-unity-hack");
|
||||
if (map_val) {
|
||||
config->use_unity_hack = lsi_is_boolean_true(map_val);
|
||||
map_val = NULL;
|
||||
}
|
||||
|
||||
/* Check if 32-bit is being forced */
|
||||
map_val = nc_hashmap_get(nc_hashmap_get(mconfig, "Steam"), "force-32bit");
|
||||
if (map_val) {
|
||||
@@ -147,11 +155,23 @@ bool lsi_config_store(LsiConfig *config)
|
||||
{
|
||||
autofree(FILE) *fp = NULL;
|
||||
autofree(char) *conf = NULL;
|
||||
autofree(char) *dir = NULL;
|
||||
|
||||
if (!config) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Ensure we have config directory, i.e. when as a snap.. */
|
||||
dir = lsi_get_user_config_dir();
|
||||
if (!dir) {
|
||||
return false;
|
||||
}
|
||||
if (!lsi_file_exists(dir)) {
|
||||
if (mkdir(dir, 00755) < 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
conf = lsi_get_user_config_file();
|
||||
if (!conf) {
|
||||
return false;
|
||||
@@ -163,11 +183,12 @@ bool lsi_config_store(LsiConfig *config)
|
||||
}
|
||||
if (fprintf(fp,
|
||||
"[Steam]\nuse-native-runtime = %s\nforce-32bit = %s\nuse-libintercept = "
|
||||
"%s\nuse-libredirect = %s\n",
|
||||
"%s\nuse-libredirect = %s\nuse-unity-hack = %s\n",
|
||||
lsi_bool_to_string(config->use_native_runtime),
|
||||
lsi_bool_to_string(config->force_32),
|
||||
lsi_bool_to_string(config->use_libintercept),
|
||||
lsi_bool_to_string(config->use_libredirect)) < 0) {
|
||||
lsi_bool_to_string(config->use_libredirect),
|
||||
lsi_bool_to_string(config->use_unity_hack)) < 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -183,6 +204,7 @@ void lsi_config_load_defaults(LsiConfig *config)
|
||||
config->use_native_runtime = true;
|
||||
config->use_libintercept = true;
|
||||
config->use_libredirect = true;
|
||||
config->use_unity_hack = true;
|
||||
}
|
||||
|
||||
void lsi_report_failure(const char *s, ...)
|
||||
|
||||
@@ -30,6 +30,7 @@ typedef struct LsiConfig {
|
||||
bool use_native_runtime; /**<Do we force our native runtime? */
|
||||
bool use_libintercept; /**<Do we force libintercept? */
|
||||
bool use_libredirect; /**<Do we force libredirect? */
|
||||
bool use_unity_hack; /**<Do we enable unity3d hack? */
|
||||
} LsiConfig;
|
||||
|
||||
/**
|
||||
|
||||
+68
-31
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
@@ -18,13 +19,20 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/* Expose getpwuid override in snapd */
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
#include <pwd.h>
|
||||
#endif
|
||||
|
||||
#include "../common/common.h"
|
||||
#include "../common/files.h"
|
||||
#include "../common/log.h"
|
||||
#include "nica/util.h"
|
||||
|
||||
#include "private.h"
|
||||
#include "profile.h"
|
||||
#include "redirect.h"
|
||||
|
||||
@@ -47,13 +55,6 @@ static volatile bool lsi_init = false;
|
||||
*/
|
||||
static volatile bool lsi_override = false;
|
||||
|
||||
/**
|
||||
* Handle definitions
|
||||
*/
|
||||
typedef int (*lsi_open_file)(const char *p, int flags, mode_t mode);
|
||||
|
||||
typedef FILE *(*lsi_fopen64_file)(const char *p, const char *modes);
|
||||
|
||||
/**
|
||||
* Known profiles
|
||||
*/
|
||||
@@ -62,19 +63,6 @@ static lsi_profile_generator_func generators[] = {
|
||||
&lsi_redirect_profile_new_project_highrise,
|
||||
};
|
||||
|
||||
/**
|
||||
* Global storage of handles for nicer organisation.
|
||||
*/
|
||||
typedef struct LsiRedirectTable {
|
||||
lsi_open_file open;
|
||||
lsi_fopen64_file fopen64;
|
||||
|
||||
/* Allow future handle opens.. */
|
||||
struct {
|
||||
void *libc;
|
||||
} handles;
|
||||
} LsiRedirectTable;
|
||||
|
||||
/**
|
||||
* Easy mapping to make it quick and easy to add new function overrides
|
||||
*/
|
||||
@@ -102,6 +90,9 @@ static LsiRedirectProfile *lsi_profile = NULL;
|
||||
static LsiSymbolBinding lsi_libc_bindings[] = {
|
||||
SYMBOL_BINDING(libc, open),
|
||||
SYMBOL_BINDING(libc, fopen64),
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
SYMBOL_BINDING(libc, getpwuid),
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -119,6 +110,8 @@ __attribute__((destructor)) static void lsi_redirect_shutdown(void)
|
||||
}
|
||||
lsi_init = false;
|
||||
|
||||
lsi_unity_cleanup(&lsi_table);
|
||||
|
||||
if (lsi_table.handles.libc) {
|
||||
dlclose(lsi_table.handles.libc);
|
||||
lsi_table.handles.libc = NULL;
|
||||
@@ -213,7 +206,9 @@ __attribute__((constructor)) static void lsi_redirect_init(void)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Grab the stam installation directories */
|
||||
lsi_unity_startup(&lsi_table);
|
||||
|
||||
/* Grab the steam installation directories */
|
||||
orig = paths = lsi_get_steam_paths();
|
||||
|
||||
/* For each path try to form a valid profile for the process name and Steam directory */
|
||||
@@ -305,16 +300,20 @@ _nica_public_ int open(const char *p, int flags, ...)
|
||||
mode = va_arg(va, mode_t);
|
||||
va_end(va);
|
||||
|
||||
lsi_maybe_init_unity3d(&lsi_table, p);
|
||||
|
||||
/* Not interested in this guy apparently */
|
||||
if (!lsi_override) {
|
||||
return lsi_table.open(p, flags, mode);
|
||||
goto fallback_open;
|
||||
}
|
||||
|
||||
replacement = lsi_get_redirect_path("open", op, p);
|
||||
if (!replacement) {
|
||||
return lsi_table.open(p, flags, mode);
|
||||
if (replacement) {
|
||||
return lsi_table.open(replacement, flags, mode);
|
||||
}
|
||||
return lsi_table.open(replacement, flags, mode);
|
||||
|
||||
fallback_open:
|
||||
return lsi_table.open(p, flags, mode);
|
||||
}
|
||||
|
||||
_nica_public_ FILE *fopen64(const char *p, const char *modes)
|
||||
@@ -327,18 +326,56 @@ _nica_public_ FILE *fopen64(const char *p, const char *modes)
|
||||
*/
|
||||
lsi_redirect_init_tables();
|
||||
|
||||
lsi_maybe_init_unity3d(&lsi_table, p);
|
||||
|
||||
/* Not interested in this guy apparently */
|
||||
if (!lsi_override) {
|
||||
return lsi_table.fopen64(p, modes);
|
||||
goto fallback_open;
|
||||
}
|
||||
|
||||
replacement = lsi_get_redirect_path("fopen64", op, p);
|
||||
if (!replacement) {
|
||||
return lsi_table.fopen64(p, modes);
|
||||
if (replacement) {
|
||||
return lsi_table.fopen64(replacement, modes);
|
||||
}
|
||||
return lsi_table.fopen64(replacement, modes);
|
||||
|
||||
fallback_open:
|
||||
|
||||
if (is_unity3d_prefs_file(&lsi_table, p)) {
|
||||
return lsi_unity_redirect(&lsi_table, p, modes);
|
||||
}
|
||||
return lsi_table.fopen64(p, modes);
|
||||
}
|
||||
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
_nica_public_ struct passwd *getpwuid(uid_t uid)
|
||||
{
|
||||
/* Must ensure we're **really** initialised, as we might see open happen
|
||||
* before the constructor..
|
||||
*/
|
||||
lsi_redirect_init_tables();
|
||||
|
||||
struct passwd *ret = NULL;
|
||||
const char *snap_root = getenv("SNAP_USER_COMMON");
|
||||
|
||||
/* If they're requesting our uid and SNAP_USER_COMMON is set, then
|
||||
* let us override the home directory to be correct.
|
||||
*/
|
||||
ret = lsi_table.getpwuid(uid);
|
||||
if (!ret) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (uid == getuid() && snap_root && *snap_root) {
|
||||
ret->pw_dir = (char *)snap_root;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
||||
*
|
||||
|
||||
@@ -4,12 +4,14 @@ if with_libredirect == true
|
||||
|
||||
# Might not need libdl for alt libcs
|
||||
libdl = meson.get_compiler('c').find_library('dl', required : false)
|
||||
librt = meson.get_compiler('c').find_library('rt', required : false)
|
||||
|
||||
redirect_sources = [
|
||||
'main.c',
|
||||
'profile.c',
|
||||
'profiles/ark.c',
|
||||
'profiles/project_highrise.c',
|
||||
'unity.c',
|
||||
]
|
||||
|
||||
sym_map = join_paths(meson.current_source_dir(), 'sym.map')
|
||||
@@ -22,6 +24,7 @@ if with_libredirect == true
|
||||
include_directories: nica_includes,
|
||||
dependencies: [
|
||||
libdl,
|
||||
librt,
|
||||
link_lsi_common,
|
||||
],
|
||||
install: true,
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2017 Ikey Doherty <ikey@solus-project.com>
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1
|
||||
* of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
#include <pwd.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Handle definitions
|
||||
*/
|
||||
typedef int (*lsi_open_file)(const char *p, int flags, mode_t mode);
|
||||
|
||||
typedef FILE *(*lsi_fopen64_file)(const char *p, const char *modes);
|
||||
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
typedef struct passwd *(*lsi_getpwuid)(uid_t uid);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Global storage of handles for nicer organisation.
|
||||
*/
|
||||
typedef struct LsiRedirectTable {
|
||||
lsi_open_file open;
|
||||
lsi_fopen64_file fopen64;
|
||||
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
lsi_getpwuid getpwuid;
|
||||
#endif
|
||||
|
||||
/* Allow future handle opens.. */
|
||||
struct {
|
||||
void *libc;
|
||||
} handles;
|
||||
|
||||
/* Our shm_open() unity3d redirect.. */
|
||||
struct {
|
||||
char *original_config_path;
|
||||
char *config_path;
|
||||
char *shm_path;
|
||||
bool enabled;
|
||||
bool failed;
|
||||
bool had_init;
|
||||
} unity3d;
|
||||
} LsiRedirectTable;
|
||||
|
||||
void lsi_unity_startup(LsiRedirectTable *lsi_table);
|
||||
void lsi_unity_cleanup(LsiRedirectTable *lsi_table);
|
||||
|
||||
/* API Definitions for Unity handlers */
|
||||
void lsi_maybe_init_unity3d(LsiRedirectTable *lsi_table, const char *p);
|
||||
void lsi_unity_backup_config(LsiRedirectTable *lsi_table);
|
||||
FILE *lsi_unity_redirect(LsiRedirectTable *lsi_table, const char *p, const char *modes);
|
||||
FILE *lsi_unity_get_config_file(LsiRedirectTable *lsi_table, const char *modes);
|
||||
void lsi_unity_trim_copy_config(FILE *from, FILE *to);
|
||||
bool is_unity3d_prefs_file(LsiRedirectTable *lsi_table, const char *p);
|
||||
|
||||
/*
|
||||
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
||||
*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* vi: set shiftwidth=8 tabstop=8 expandtab:
|
||||
* :indentSize=8:tabSize=8:noTabs=true:
|
||||
*/
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
@@ -63,7 +64,7 @@ void lsi_redirect_profile_insert_rule(LsiRedirectProfile *self, LsiRedirect *red
|
||||
default:
|
||||
lsi_log_error("Attempted insert of unknown rule into '%s'", self->name);
|
||||
lsi_redirect_free(redirect);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Set head or prepend the rule */
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
global:
|
||||
fopen64;
|
||||
getpwuid;
|
||||
open;
|
||||
local:
|
||||
*;
|
||||
|
||||
@@ -0,0 +1,333 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1
|
||||
* of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "../common/files.h"
|
||||
#include "../common/log.h"
|
||||
#include "nica/util.h"
|
||||
|
||||
#include "private.h"
|
||||
|
||||
/**
|
||||
* Cheap and cheerful, this is our default fake unity3d config which we write
|
||||
* out to trick unity3d games into reading a non broken config on Linux.
|
||||
* This forces the equivalent of "-screen-fullscreen 0" because the older
|
||||
* Unity builds will set fullscreen to 1, but they'll also set the resolution
|
||||
* width and height to 0 (which is then clamped)
|
||||
*/
|
||||
static const char *unity3d_config =
|
||||
"\
|
||||
<unity_prefs version_major=\"1\" version_minor=\"1\">\n\
|
||||
<pref name=\"Screenmanager Is Fullscreen mode\" type=\"int\">0</pref>\n\
|
||||
</unity_prefs>\n\
|
||||
";
|
||||
|
||||
/**
|
||||
* When we rewrite the config file in place we'll repllace the "Is Fullscreen mode"
|
||||
* line with this one so that we forcibly disable it.
|
||||
*/
|
||||
static const char *unity3d_snippet =
|
||||
" <pref name=\"Screenmanager Is Fullscreen mode\" type=\"int\">0</pref>\n";
|
||||
|
||||
static inline bool str_has_prefix(const char *a, const char *b)
|
||||
{
|
||||
size_t lena, lenb;
|
||||
lena = strlen(a);
|
||||
lenb = strlen(b);
|
||||
if (lenb > lena) {
|
||||
return false;
|
||||
}
|
||||
return strncmp(a, b, lenb) == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* The unity3d config path has been accessed, so we need to turn on our
|
||||
* workaround for unity3d prefs
|
||||
*/
|
||||
void lsi_maybe_init_unity3d(LsiRedirectTable *lsi_table, const char *p)
|
||||
{
|
||||
if (lsi_table->unity3d.enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!lsi_table->unity3d.config_path) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!str_has_prefix(p, lsi_table->unity3d.config_path)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* Set by the main shim */
|
||||
if (!getenv("LSI_USE_UNITY_HACK")) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* We're in action */
|
||||
lsi_table->unity3d.enabled = true;
|
||||
lsi_log_set_id("unity3d");
|
||||
lsi_log_info("Activating \"black screen of nope\" workaround");
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the input path is a unity3d "prefs" file
|
||||
*/
|
||||
bool is_unity3d_prefs_file(LsiRedirectTable *lsi_table, const char *p)
|
||||
{
|
||||
autofree(char) *clone = NULL;
|
||||
char *basenom = NULL;
|
||||
|
||||
/* Must only happen when enabled */
|
||||
if (!lsi_table->unity3d.enabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* We found it already */
|
||||
if (lsi_table->unity3d.original_config_path) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Must be in config path */
|
||||
if (!str_has_prefix(p, lsi_table->unity3d.config_path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
clone = strdup(p);
|
||||
if (!clone) {
|
||||
return false;
|
||||
}
|
||||
basenom = basename(clone);
|
||||
if (!basenom) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Must be called "prefs" */
|
||||
return strcmp(basenom, "prefs") == 0 ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the config from the @from file to the @to file, which
|
||||
* will also strip out any "evil" lines, i.e. the fullscreen
|
||||
* stanza.
|
||||
*
|
||||
* If the input file does not exist, the default configuration
|
||||
* will be used.
|
||||
*/
|
||||
void lsi_unity_trim_copy_config(FILE *from, FILE *to)
|
||||
{
|
||||
char *buf = NULL;
|
||||
size_t sn = 0;
|
||||
ssize_t r = 0;
|
||||
|
||||
/* No input? Write the default configuration then */
|
||||
if (!from) {
|
||||
if (fwrite(unity3d_config, strlen(unity3d_config), 1, to) != 1) {
|
||||
lsi_log_error("Failed to create initial Unity3D config: %s",
|
||||
strerror(errno));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Have an input file, write to the output but omit all the bad lines */
|
||||
while ((r = getline(&buf, &sn, from)) != -1) {
|
||||
const char *to_write = NULL;
|
||||
|
||||
/* Rewrite this line, it breaks games. */
|
||||
if (strstr(buf, "Screenmanager Is Fullscreen mode")) {
|
||||
to_write = unity3d_snippet;
|
||||
r = strlen(to_write);
|
||||
} else {
|
||||
to_write = buf;
|
||||
}
|
||||
|
||||
if (fwrite(to_write, r, 1, to) != 1) {
|
||||
lsi_log_error("Failed to write Unity3D config: %s", strerror(errno));
|
||||
goto failed;
|
||||
}
|
||||
|
||||
if (buf) {
|
||||
free(buf);
|
||||
buf = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
fflush(to);
|
||||
|
||||
failed:
|
||||
if (buf) {
|
||||
free(buf);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clone the existing shm configuration into the real config path, and copy
|
||||
* all lines that we "like"
|
||||
*
|
||||
* Basically this ensures we force the dumped config to omit the fullscreen
|
||||
* options as they break so many games.
|
||||
*/
|
||||
void lsi_unity_backup_config(LsiRedirectTable *lsi_table)
|
||||
{
|
||||
autofree(FILE) *shm_file = NULL;
|
||||
autofree(FILE) *dest_file = NULL;
|
||||
|
||||
if (!lsi_table->unity3d.enabled || !lsi_table->unity3d.original_config_path) {
|
||||
return;
|
||||
}
|
||||
|
||||
shm_file = lsi_unity_get_config_file(lsi_table, "r");
|
||||
if (!shm_file) {
|
||||
return;
|
||||
}
|
||||
|
||||
dest_file = lsi_table->fopen64(lsi_table->unity3d.original_config_path, "w");
|
||||
if (!dest_file) {
|
||||
return;
|
||||
}
|
||||
|
||||
lsi_log_debug("Saved Unity3D config to %s", lsi_table->unity3d.original_config_path);
|
||||
lsi_unity_trim_copy_config(shm_file, dest_file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the shm file as a FILE stream
|
||||
*/
|
||||
FILE *lsi_unity_get_config_file(LsiRedirectTable *lsi_table, const char *modes)
|
||||
{
|
||||
int perm = O_RDONLY;
|
||||
|
||||
if (strstr(modes, "w")) {
|
||||
perm = O_RDWR | O_CREAT | O_TRUNC;
|
||||
}
|
||||
|
||||
/* Attempt to shm_open our fake path */
|
||||
int fd = shm_open(lsi_table->unity3d.shm_path, perm, 0666);
|
||||
if (!fd) {
|
||||
return NULL;
|
||||
}
|
||||
return fdopen(fd, modes);
|
||||
}
|
||||
|
||||
/**
|
||||
* We now need to initialise the unity3d config if we haven't done so
|
||||
*/
|
||||
static void lsi_unity_init_config(LsiRedirectTable *lsi_table)
|
||||
{
|
||||
autofree(FILE) *source = NULL;
|
||||
autofree(FILE) *dest = NULL;
|
||||
|
||||
if (lsi_table->unity3d.had_init || lsi_table->unity3d.failed) {
|
||||
return;
|
||||
}
|
||||
|
||||
lsi_table->unity3d.had_init = true;
|
||||
|
||||
dest = lsi_unity_get_config_file(lsi_table, "w");
|
||||
source = lsi_table->fopen64(lsi_table->unity3d.original_config_path, "r");
|
||||
|
||||
lsi_unity_trim_copy_config(source, dest);
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect requests for non-existant config files in Unity3D to a temporary
|
||||
* shm file which we'll write our initial "sane" configuration to.
|
||||
*/
|
||||
FILE *lsi_unity_redirect(LsiRedirectTable *lsi_table, const char *p, const char *modes)
|
||||
{
|
||||
FILE *ret = NULL;
|
||||
|
||||
/* Preserve this path for later cloning.. */
|
||||
lsi_table->unity3d.original_config_path = strdup(p);
|
||||
|
||||
lsi_unity_init_config(lsi_table);
|
||||
|
||||
ret = lsi_unity_get_config_file(lsi_table, modes);
|
||||
if (!ret) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
lsi_log_debug("fopen64(%s): Redirecting unity config '%s' to shm(%s)",
|
||||
modes,
|
||||
p,
|
||||
lsi_table->unity3d.shm_path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up any needed variables for future unity usage
|
||||
*/
|
||||
void lsi_unity_startup(LsiRedirectTable *lsi_table)
|
||||
{
|
||||
autofree(char) *xdg_config_dir = NULL;
|
||||
|
||||
/* Ensure we know the path to unity3d config */
|
||||
xdg_config_dir = lsi_get_user_config_dir();
|
||||
if (asprintf(&lsi_table->unity3d.config_path, "%s/unity3d", xdg_config_dir) < 0) {
|
||||
fputs("OOM\n", stderr);
|
||||
abort();
|
||||
}
|
||||
|
||||
/* shm path for our fake unity3d config path */
|
||||
if (asprintf(&lsi_table->unity3d.shm_path,
|
||||
"/u%d-LinuxSteamIntegration.unity3d.%d",
|
||||
getuid(),
|
||||
getpgrp()) < 0) {
|
||||
fputs("OOM\n", stderr);
|
||||
abort();
|
||||
}
|
||||
|
||||
/* Symbolic, we don't just use this for anyone, yknow. :P */
|
||||
lsi_table->unity3d.enabled = false;
|
||||
lsi_table->unity3d.failed = false;
|
||||
}
|
||||
|
||||
void lsi_unity_cleanup(LsiRedirectTable *lsi_table)
|
||||
{
|
||||
if (lsi_table->unity3d.original_config_path) {
|
||||
lsi_unity_backup_config(lsi_table);
|
||||
free(lsi_table->unity3d.original_config_path);
|
||||
lsi_table->unity3d.original_config_path = NULL;
|
||||
}
|
||||
|
||||
if (lsi_table->unity3d.config_path) {
|
||||
free(lsi_table->unity3d.config_path);
|
||||
lsi_table->unity3d.config_path = NULL;
|
||||
}
|
||||
|
||||
if (lsi_table->unity3d.shm_path) {
|
||||
(void)shm_unlink(lsi_table->unity3d.shm_path);
|
||||
free(lsi_table->unity3d.shm_path);
|
||||
lsi_table->unity3d.shm_path = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
||||
*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* vi: set shiftwidth=8 tabstop=8 expandtab:
|
||||
* :indentSize=8:tabSize=8:noTabs=true:
|
||||
*/
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1
|
||||
* of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
|
||||
#include <linux/limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "lsi.h"
|
||||
#include "shim.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *command = NULL;
|
||||
|
||||
if (!shim_bootstrap()) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* Drop our own binary from the passed in options */
|
||||
--argc;
|
||||
++argv;
|
||||
|
||||
if (argc < 1) {
|
||||
lsi_report_failure("lsi-exec was not passed a valid command");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
command = argv[0];
|
||||
--argc;
|
||||
++argv;
|
||||
|
||||
/* Now execute. */
|
||||
return shim_execute_path(command, argc, argv);
|
||||
}
|
||||
|
||||
/*
|
||||
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
||||
*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* vi: set shiftwidth=8 tabstop=8 expandtab:
|
||||
* :indentSize=8:tabSize=8:noTabs=true:
|
||||
*/
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1
|
||||
* of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
|
||||
#include <linux/limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../common/files.h"
|
||||
#include "config.h"
|
||||
#include "lsi.h"
|
||||
#include "shim.h"
|
||||
|
||||
/**
|
||||
* Helper to get the Steam binary, respecting "$SNAP" if needed
|
||||
*/
|
||||
static const char *shim_get_steam_binary(const char *prefix)
|
||||
{
|
||||
static char tgt[PATH_MAX] = { 0 };
|
||||
|
||||
if (snprintf(tgt, sizeof(tgt), "%s%s", prefix ? prefix : "", STEAM_BINARY) < 0) {
|
||||
return STEAM_BINARY;
|
||||
}
|
||||
|
||||
return tgt;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *operation_prefix = NULL;
|
||||
const char *steam_binary = NULL;
|
||||
__attribute__((unused)) const char *tdir = NULL;
|
||||
__attribute__((unused)) int dir_ret = 0;
|
||||
|
||||
if (!shim_bootstrap()) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
operation_prefix = getenv("SNAP");
|
||||
tdir = getenv("SNAP_USER_COMMON");
|
||||
#endif
|
||||
|
||||
steam_binary = shim_get_steam_binary(operation_prefix);
|
||||
|
||||
if (!lsi_file_exists(steam_binary)) {
|
||||
lsi_report_failure("Steam isn't currently installed at %s", steam_binary);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (tdir) {
|
||||
dir_ret = chdir(tdir);
|
||||
}
|
||||
|
||||
return shim_execute(steam_binary, --argc, ++argv);
|
||||
}
|
||||
|
||||
/*
|
||||
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
||||
*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* vi: set shiftwidth=8 tabstop=8 expandtab:
|
||||
* :indentSize=8:tabSize=8:noTabs=true:
|
||||
*/
|
||||
@@ -7,8 +7,20 @@ endif
|
||||
if shim_behaviour != 'none'
|
||||
shim_sources = [
|
||||
'shim.c',
|
||||
'main.c',
|
||||
]
|
||||
|
||||
exec_sources = [
|
||||
'shim.c',
|
||||
'lsi-exec.c',
|
||||
]
|
||||
|
||||
exec_name = 'lsi-exec'
|
||||
frontend_name = 'lsi-settings'
|
||||
if with_snap_support == true
|
||||
exec_name = 'linux-steam-integration.exec'
|
||||
endif
|
||||
|
||||
shim = executable(
|
||||
shim_target_name,
|
||||
sources: shim_sources + nica_sources,
|
||||
@@ -17,5 +29,17 @@ if shim_behaviour != 'none'
|
||||
link_lsi,
|
||||
],
|
||||
install: true,
|
||||
install_dir: path_bindir,
|
||||
)
|
||||
|
||||
lsi_exec = executable(
|
||||
exec_name,
|
||||
sources: exec_sources + nica_sources,
|
||||
include_directories: nica_includes,
|
||||
dependencies: [
|
||||
link_lsi,
|
||||
],
|
||||
install: true,
|
||||
install_dir: path_bindir,
|
||||
)
|
||||
endif
|
||||
|
||||
+297
-65
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2016-2018 Ikey Doherty <ikey@solus-project.com>
|
||||
* Copyright © 2018-2019 Intel Corporation
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
@@ -12,6 +13,7 @@
|
||||
#define _GNU_SOURCE
|
||||
|
||||
#include <errno.h>
|
||||
#include <glob.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -19,97 +21,298 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include "../common/files.h"
|
||||
#include "../common/log.h"
|
||||
#include "../nica/files.h"
|
||||
#include "config.h"
|
||||
#include "lsi.h"
|
||||
|
||||
/**
|
||||
* Required to force Steam into 32-bit detection mode, which is useful for
|
||||
* recent issues like the CS:GO 64-bit update with huge FPS drops
|
||||
*/
|
||||
#define EMUL32BIN "linux32"
|
||||
#include "shim.h"
|
||||
|
||||
/**
|
||||
* Audit path is used for the libintercept library to ensure Steam only uses the
|
||||
* host SDL, etc.
|
||||
*/
|
||||
#define AUDIT_PATH "/usr/\$LIB/liblsi-intercept.so"
|
||||
#define AUDIT_PATH "/usr/$LIB/liblsi-intercept.so"
|
||||
|
||||
/**
|
||||
* Redirect path is used for the libredirect library to perform internal
|
||||
* redirections in functions like `open()` where needed to hotfix games
|
||||
* at runtime.
|
||||
*/
|
||||
#define REDIRECT_PATH "/usr/\$LIB/liblsi-redirect.so"
|
||||
#define REDIRECT_PATH "/usr/$LIB/liblsi-redirect.so"
|
||||
|
||||
/**
|
||||
* Potential for the host Vulkan ICD files (old vs new)
|
||||
*/
|
||||
#define VK_GLOB "/var/lib/snapd/lib/gl/*nvidia*.json"
|
||||
#define VK_GLOB_2 "/var/lib/snapd/lib/vulkan/*nvidia*.json"
|
||||
|
||||
/**
|
||||
* Used to update a value in the environment, and perform a prepend if the variable
|
||||
* is already set.
|
||||
*/
|
||||
static void shim_export_merge_vars(const char *var_name, const char *prefix, const char *value)
|
||||
{
|
||||
static char copy_buffer[PATH_MAX] = { 0 };
|
||||
const char *env_exist = NULL;
|
||||
int ret = 0;
|
||||
|
||||
env_exist = getenv(var_name);
|
||||
|
||||
ret = snprintf(copy_buffer,
|
||||
sizeof(copy_buffer),
|
||||
"%s%s%s%s",
|
||||
prefix ? prefix : "",
|
||||
value,
|
||||
env_exist ? ":" : "",
|
||||
env_exist ? env_exist : "");
|
||||
if (ret < 0) {
|
||||
lsi_log_error("failed to update variable '%s'", var_name);
|
||||
return;
|
||||
}
|
||||
|
||||
lsi_log_debug("%s = %s", var_name, copy_buffer);
|
||||
|
||||
setenv(var_name, copy_buffer, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up the LD_AUDIT environment - respecting $SNAP if set
|
||||
*/
|
||||
static void shim_set_audit_path(const char *prefix)
|
||||
{
|
||||
shim_export_merge_vars("LD_AUDIT", prefix, AUDIT_PATH);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up LD_PRELOAD, respecting an existing LD_PRELOAD and forcing ourselves
|
||||
* to be first in the list.
|
||||
*/
|
||||
static void shim_set_ld_preload(void)
|
||||
static void shim_set_ld_preload(const char *prefix)
|
||||
{
|
||||
const char *preload = NULL;
|
||||
static char tgt[PATH_MAX] = { 0 };
|
||||
|
||||
preload = getenv("LD_PRELOAD");
|
||||
if (!preload) {
|
||||
setenv("LD_PRELOAD", REDIRECT_PATH, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (snprintf(tgt, sizeof(tgt), "%s:%s", REDIRECT_PATH, preload) < 0) {
|
||||
setenv("LD_PRELOAD", REDIRECT_PATH, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
setenv("LD_PRELOAD", tgt, 1);
|
||||
shim_export_merge_vars("LD_PRELOAD", prefix, REDIRECT_PATH);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
/**
|
||||
* This function is only used during our initial bootstrap phase to ensure
|
||||
* we're able to set up the environment and directories correctly under the
|
||||
* snapd system.
|
||||
*/
|
||||
static void shim_init_user(const char *userdir)
|
||||
{
|
||||
LsiConfig config = { 0 };
|
||||
bool is_x86_64;
|
||||
const char *n_argv[argc + 2];
|
||||
const char *exec_command = NULL;
|
||||
/* Use the appropriate Steam depending on configuration */
|
||||
const char *lsi_exec_bin = NULL;
|
||||
int i = 1;
|
||||
int8_t off = 0;
|
||||
int (*vfunc)(const char *, char *const argv[]) = NULL;
|
||||
static const char *paths[] = {
|
||||
".local/share",
|
||||
".config",
|
||||
".cache",
|
||||
};
|
||||
static const char *vars[] = {
|
||||
"XDG_DATA_HOME",
|
||||
"XDG_CONFIG_HOME",
|
||||
"XDG_CACHE_HOME",
|
||||
};
|
||||
static char tgt[PATH_MAX] = { 0 };
|
||||
|
||||
lsi_exec_bin = STEAM_BINARY;
|
||||
for (size_t i = 0; i < ARRAY_SIZE(paths); i++) {
|
||||
if (snprintf(tgt, sizeof(tgt), "%s/%s", userdir, paths[i]) < 0) {
|
||||
lsi_log_error("memory failure");
|
||||
return;
|
||||
}
|
||||
if (!lsi_file_exists(tgt)) {
|
||||
if (!nc_mkdir_p(tgt, 00755)) {
|
||||
lsi_log_error("failed to construct %s: %s", tgt, strerror(errno));
|
||||
goto write_var;
|
||||
}
|
||||
lsi_log_debug("Constructing %s: %s", vars[i], tgt);
|
||||
}
|
||||
write_var:
|
||||
setenv(vars[i], tgt, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialise config */
|
||||
if (!lsi_config_load(&config)) {
|
||||
lsi_config_load_defaults(&config);
|
||||
/**
|
||||
* Attempt to set up Vulkan in the environment by looking for the ICD files
|
||||
* passed from the hostfs
|
||||
*/
|
||||
static bool shim_init_vulkan(const char *glob_path)
|
||||
{
|
||||
glob_t glo = { 0 };
|
||||
|
||||
glob(glob_path, GLOB_DOOFFS, NULL, &glo);
|
||||
|
||||
if (glo.gl_pathc < 1) {
|
||||
globfree(&glo);
|
||||
return false;
|
||||
}
|
||||
|
||||
is_x86_64 = lsi_system_is_64bit();
|
||||
/* Preserve glob order and insert environment in reverse */
|
||||
for (int i = glo.gl_pathc - 1; i >= 0; i--) {
|
||||
shim_export_merge_vars("VK_ICD_FILENAMES", NULL, glo.gl_pathv[i]);
|
||||
}
|
||||
|
||||
if (!lsi_file_exists(lsi_exec_bin)) {
|
||||
lsi_report_failure("Steam isn't currently installed at %s", lsi_exec_bin);
|
||||
return EXIT_FAILURE;
|
||||
globfree(&glo);
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
|
||||
/**
|
||||
* Attempt to push a path into the variable name if it actually exists
|
||||
*/
|
||||
static void shim_export_ld_dir(const char *var_name, const char *dir)
|
||||
{
|
||||
if (!lsi_file_exists(dir)) {
|
||||
return;
|
||||
}
|
||||
shim_export_merge_vars(var_name, NULL, dir);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up any extra environment pieces that might need fixing
|
||||
*
|
||||
* Currently this only sets up the snapd environmental variables, so that
|
||||
* we don't rely on separate bootstrap scripts out of tree.
|
||||
*/
|
||||
static void shim_export_extra(const char *prefix)
|
||||
{
|
||||
static const char *snap_user = NULL;
|
||||
static const char *xdg_home = NULL;
|
||||
|
||||
/* Add all of these guys to LD_LIBRARY_PATH if they exist.
|
||||
* This allows us to handle the special-case multiarch mounts.
|
||||
*/
|
||||
static const char *ld_library_dirs[] = {
|
||||
"/var/lib/snapd/lib/gl/vdpau", /**<64-bit vdpau */
|
||||
"/var/lib/snapd/lib/gl32/vdpau", /**<32bit vdpau */
|
||||
"/var/lib/snapd/lib/gl", /**<Potential host NVIDIA libraries */
|
||||
"/var/lib/snapd/lib/gl32", /**<Potential host NVIDIA 32-bit libraries (new location) */
|
||||
};
|
||||
|
||||
/* Add any necessary DRI drivers to the path, though in reality this
|
||||
* shouldn't REALLY be needed, but let's just play it safe.
|
||||
*/
|
||||
static const char *dri_drivers_extra[] = {
|
||||
"/usr/lib32/dri",
|
||||
"/usr/lib/dri",
|
||||
};
|
||||
|
||||
unsetenv("LIBGL_DRIVERS_PATH");
|
||||
unsetenv("LD_LIBRARY_PATH");
|
||||
|
||||
/* Include all GLI driver paths */
|
||||
for (size_t i = 0; i < ARRAY_SIZE(dri_drivers_extra); i++) {
|
||||
shim_export_ld_dir("LIBGL_DRIVERS_PATH", dri_drivers_extra[i]);
|
||||
shim_export_ld_dir("LD_LIBRARY_PATH", dri_drivers_extra[i]);
|
||||
}
|
||||
|
||||
/* Now set the library path accordingly */
|
||||
for (size_t i = 0; i < ARRAY_SIZE(ld_library_dirs); i++) {
|
||||
shim_export_ld_dir("LD_LIBRARY_PATH", ld_library_dirs[i]);
|
||||
}
|
||||
|
||||
/* the vdpau directory only exists on multiarch */
|
||||
if (lsi_file_exists("/var/lib/snapd/lib/gl/vdpau")) {
|
||||
shim_export_ld_dir("VDPAU_DRIVER_PATH", "/var/lib/snapd/lib/gl/vdpau");
|
||||
} else {
|
||||
shim_export_ld_dir("VDPAU_DRIVER_PATH", "/var/lib/snapd/lib/gl");
|
||||
}
|
||||
|
||||
/* Path */
|
||||
shim_export_merge_vars("PATH", prefix, "/usr/bin");
|
||||
shim_export_merge_vars("PATH", prefix, "/bin");
|
||||
|
||||
/* We require our PulseAudio fake script to be seen first. */
|
||||
shim_export_merge_vars("PATH", prefix, FAKE_SCRIPTS_DIR "/pulseaudio");
|
||||
|
||||
/* Try both known Vulkan ICD paths */
|
||||
if (!shim_init_vulkan(VK_GLOB_2)) {
|
||||
shim_init_vulkan(VK_GLOB);
|
||||
}
|
||||
|
||||
/* XDG */
|
||||
shim_export_merge_vars("XDG_CONFIG_DIRS", NULL, "/etc/xdg");
|
||||
shim_export_merge_vars("XDG_CONFIG_DIRS", NULL, "/usr/share/xdg");
|
||||
shim_export_merge_vars("XDG_CONFIG_DIRS", prefix, "/etc/xdg");
|
||||
shim_export_merge_vars("XDG_CONFIG_DIRS", prefix, "/usr/xdg");
|
||||
|
||||
shim_export_merge_vars("XDG_DATA_DIRS", prefix, "/usr/share");
|
||||
|
||||
snap_user = getenv("SNAP_USER_COMMON");
|
||||
shim_export_merge_vars("XDG_DATA_DIRS", NULL, "/usr/share");
|
||||
shim_export_merge_vars("XDG_DATA_DIRS", prefix, "/usr/share");
|
||||
if (snap_user) {
|
||||
shim_export_merge_vars("XDG_DATA_DIRS", NULL, snap_user);
|
||||
shim_init_user(snap_user);
|
||||
}
|
||||
|
||||
/* Ensure XDG_RUNTIME_DIR really exists */
|
||||
xdg_home = getenv("XDG_RUNTIME_DIR");
|
||||
if (!xdg_home) {
|
||||
return;
|
||||
}
|
||||
if (lsi_file_exists(xdg_home)) {
|
||||
return;
|
||||
}
|
||||
if (!nc_mkdir_p(xdg_home, 00755)) {
|
||||
lsi_log_error("Failed to setup XDG_RUNTIME_DIR %s: %s", xdg_home, strerror(errno));
|
||||
return;
|
||||
}
|
||||
lsi_log_debug("Constructed XDG_RUNTIME_DIR: %s", xdg_home);
|
||||
}
|
||||
#else
|
||||
static void shim_export_extra(__lsi_unused__ const char *prefix)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static LsiConfig lsi_config = { 0 };
|
||||
|
||||
/* Public API */
|
||||
|
||||
bool shim_bootstrap()
|
||||
{
|
||||
const char *operation_prefix = NULL;
|
||||
|
||||
#ifdef HAVE_SNAPD_SUPPORT
|
||||
/* Snapd specific prefix */
|
||||
operation_prefix = getenv("SNAP");
|
||||
#endif
|
||||
|
||||
/* We might have additional variables we need to export and we
|
||||
* might also end up changing XDG_CONFIG_HOME - ensure we actually
|
||||
* read our settings from the right place. */
|
||||
shim_export_extra(operation_prefix);
|
||||
|
||||
/* Ensure we now have some kind of config */
|
||||
if (!lsi_config_load(&lsi_config)) {
|
||||
lsi_config_load_defaults(&lsi_config);
|
||||
}
|
||||
|
||||
/* Force STEAM_RUNTIME into the environment */
|
||||
if (config.use_native_runtime) {
|
||||
if (lsi_config.use_native_runtime) {
|
||||
/* Explicitly disable the runtime */
|
||||
setenv("STEAM_RUNTIME", "0", 1);
|
||||
#ifdef HAVE_LIBINTERCEPT
|
||||
/* Only use libintercept in combination with native runtime! */
|
||||
if (config.use_libintercept) {
|
||||
setenv("LD_AUDIT", AUDIT_PATH, 1);
|
||||
if (lsi_config.use_libintercept) {
|
||||
shim_set_audit_path(operation_prefix);
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_LIBREDIRECT
|
||||
/* Only use libredirect in combination with native runtime! */
|
||||
if (config.use_libredirect) {
|
||||
shim_set_ld_preload();
|
||||
if (lsi_config.use_libredirect) {
|
||||
shim_set_ld_preload(operation_prefix);
|
||||
}
|
||||
/* And unity hack is dependent on libredirect.. */
|
||||
if (lsi_config.use_unity_hack) {
|
||||
setenv("LSI_USE_UNITY_HACK", "1", 1);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
/* Only preload when needed. */
|
||||
if (lsi_system_requires_preload()) {
|
||||
setenv("LD_PRELOAD", lsi_preload_list(), 1);
|
||||
shim_export_merge_vars("LD_PRELOAD", operation_prefix, lsi_preload_list());
|
||||
}
|
||||
setenv("STEAM_RUNTIME", "1", 1);
|
||||
}
|
||||
@@ -118,6 +321,9 @@ int main(int argc, char **argv)
|
||||
* usage of dbus by Steam. Help them out */
|
||||
setenv("DBUS_FATAL_WARNINGS", "0", 1);
|
||||
|
||||
/* Requires Solus patch to actually work */
|
||||
setenv("DBUS_SILENCE_WARNINGS", "1", 1);
|
||||
|
||||
/* A recent regression is to interpret XMODIFIERS and then fail to
|
||||
* make it beyond `SDL_InitSubSystem` due to `InitIME` failing to
|
||||
* properly use D-BUS ...
|
||||
@@ -125,37 +331,63 @@ int main(int argc, char **argv)
|
||||
unsetenv("XMODIFIERS");
|
||||
unsetenv("GTK_MODULES");
|
||||
|
||||
memset(&n_argv, 0, sizeof(char *) * (argc + 2));
|
||||
/* All done now. */
|
||||
return true;
|
||||
}
|
||||
|
||||
/* If we're 64-bit and 32-bit is forced, proxy via linux32 */
|
||||
if (config.force_32 && is_x86_64) {
|
||||
exec_command = EMUL32BIN;
|
||||
n_argv[0] = EMUL32BIN;
|
||||
n_argv[1] = lsi_exec_bin;
|
||||
off = 1;
|
||||
/* Use linux32 in the path */
|
||||
static int shim_execute_internal(const char *command, int argc, char **argv, bool use_path)
|
||||
{
|
||||
bool is_x86_64;
|
||||
const char *n_argv[argc + 5];
|
||||
const char *exec_command = NULL;
|
||||
int i = 1;
|
||||
int8_t off = 1;
|
||||
int (*vfunc)(const char *, char *const argv[]) = NULL;
|
||||
|
||||
is_x86_64 = lsi_system_is_64bit();
|
||||
memset(&n_argv, 0, sizeof(char *) * (argc + 5));
|
||||
|
||||
/* If we're 64-bit and 32-bit is forced, proxy via setarch linux32 */
|
||||
if (lsi_config.force_32 && is_x86_64) {
|
||||
exec_command = "setarch";
|
||||
n_argv[0] = "setarch";
|
||||
n_argv[1] = "linux32";
|
||||
n_argv[2] = "--";
|
||||
n_argv[3] = command;
|
||||
off = 4;
|
||||
/* Use setarch in the path */
|
||||
vfunc = execvp;
|
||||
} else {
|
||||
/* Directly call lsi_exec_bin */
|
||||
exec_command = lsi_exec_bin;
|
||||
n_argv[0] = lsi_exec_bin;
|
||||
/* Full path here due to shadow nature */
|
||||
vfunc = execv;
|
||||
exec_command = command;
|
||||
n_argv[0] = command;
|
||||
/* Full path here due to shadow nature unless asked not to */
|
||||
vfunc = use_path ? execvp : execv;
|
||||
}
|
||||
|
||||
/* Point arguments to arguments passed to us */
|
||||
for (i = 1; i < argc; i++) {
|
||||
for (i = 0; i < argc; i++) {
|
||||
n_argv[i + off] = argv[i];
|
||||
}
|
||||
n_argv[i + 1 + off] = NULL;
|
||||
|
||||
/* Go execute steam. */
|
||||
if (vfunc(exec_command, (char **)n_argv) < 0) {
|
||||
lsi_report_failure("Failed to launch Steam: %s [%s]",
|
||||
strerror(errno),
|
||||
STEAM_BINARY);
|
||||
lsi_report_failure("Failed to launch command: %s\n\n%s", command, strerror(errno));
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
/* Can't happen */
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
int shim_execute(const char *command, int argc, char **argv)
|
||||
{
|
||||
return shim_execute_internal(command, argc, argv, false);
|
||||
}
|
||||
|
||||
int shim_execute_path(const char *command, int argc, char **argv)
|
||||
{
|
||||
return shim_execute_internal(command, argc, argv, true);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* This file is part of linux-steam-integration.
|
||||
*
|
||||
* Copyright © 2016-2017 Ikey Doherty <ikey@solus-project.com>
|
||||
*
|
||||
* linux-steam-integration is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License as
|
||||
* published by the Free Software Foundation; either version 2.1
|
||||
* of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* Attempt to bootstrap the shim environment prior to execution of
|
||||
* a command.
|
||||
*/
|
||||
bool shim_bootstrap(void);
|
||||
|
||||
/**
|
||||
* Execute the given command
|
||||
*
|
||||
* @note If this succeeds, we will not return
|
||||
*/
|
||||
int shim_execute(const char *command, int argc, char **argv);
|
||||
|
||||
/**
|
||||
* Execute the given command, respecting the $PATH variable
|
||||
*
|
||||
* @note If this succeeds, we will not return
|
||||
*/
|
||||
int shim_execute_path(const char *command, int argc, char **argv);
|
||||
|
||||
/*
|
||||
* Editor modelines - https://www.wireshark.org/tools/modelines.html
|
||||
*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* vi: set shiftwidth=8 tabstop=8 expandtab:
|
||||
* :indentSize=8:tabSize=8:noTabs=true:
|
||||
*/
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
env -i DBUS_SESSION_ADDRESS=$DBUS_SESSION_ADDRESS \
|
||||
PATH=$PATH \
|
||||
DISPLAY=$DISPLAY \
|
||||
HOME=$HOME \
|
||||
USER=$USER \
|
||||
USERNAME=$USERNAME \
|
||||
LD_AUDIT="`pwd`/buildroot/install/usr/\$LIB/liblsi-intercept.so" \
|
||||
LD_PRELOAD="/usr/\$LIB/libxcb.so.1:/usr/\$LIB/libX11.so.6:/usr/\$LIB/libstdc++.so.6" \
|
||||
DBUS_FATAL_WARNINGS=0 \
|
||||
STEAM_RUNTIME=0 /usr/lib64/steam/steam
|
||||
Reference in New Issue
Block a user