Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FSR: only set in Gamescope (remove Wine FSR) #2840

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

SuperSamus
Copy link
Contributor

@SuperSamus SuperSamus commented Apr 9, 2023

Description

FSR settings are moved in Gamescope. Wine FSR isn't set anymore.

TL;DR: Right now, FSR is enabled in two places:

First, having two separate FSR "enablers" is messy, as you need logic to avoid enabling both of them at the same time (and Bottles isn't doing that). Considering the options, I opted to simply remove Wine FSR.
Second, the conditions mentioned above aren't communicated at all by having FSR as a standalone setting, which is why I opted to move them into Gamescope's page.

Some comments on why it's a draft:

  • Maybe it should communicate somewhere that Wine-GE already enables FSR, thus if you use it, you shouldn't enable it in Gamescope (still, it wasn't communicated even before).
  • I don't know how (or if) I should touch language files.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

Built Bottles myself, tested if the UI was correct, launched a game.

@github-actions
Copy link
Contributor

github-actions bot commented Apr 9, 2023

Pylint result on modfied files:
************* Module bottles.frontend.windows.gamescope
bottles/frontend/windows/gamescope.py:116:0: C0305: Trailing newlines (trailing-newlines)
bottles/frontend/windows/gamescope.py:21:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/windows/gamescope.py:23:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/windows/gamescope.py:18:0: E0611: No name 'Adw' in module 'gi.repository' (no-name-in-module)
bottles/frontend/windows/gamescope.py:58:29: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/windows/gamescope.py:104:8: C0206: Consider iterating with .items() (consider-using-dict-items)
bottles/frontend/windows/gamescope.py:104:23: C0201: Consider iterating the dictionary directly instead of calling .keys() (consider-iterating-dictionary)
bottles/frontend/windows/gamescope.py:22:0: R0903: Too few public methods (0/2) (too-few-public-methods)
************* Module bottles.frontend.windows.launchoptions
bottles/frontend/windows/launchoptions.py:24:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/windows/launchoptions.py:26:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/windows/launchoptions.py:18:0: E0611: No name 'Adw' in module 'gi.repository' (no-name-in-module)
bottles/frontend/windows/launchoptions.py:151:31: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/windows/launchoptions.py:160:4: R1711: Useless return at end of function or method (useless-return)
bottles/frontend/windows/launchoptions.py:25:0: R0903: Too few public methods (1/2) (too-few-public-methods)
bottles/frontend/windows/launchoptions.py:21:0: C0411: standard import "from gettext import gettext as _" should be placed before "from gi.repository import Gtk, GLib, GObject, Adw" (wrong-import-order)
************* Module bottles.frontend.cli.cli
bottles/frontend/cli/cli.py:31:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:31:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:76:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:76:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:79:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:79:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:79:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:82:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:82:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:82:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:98:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:98:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:98:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:98:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:98:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:98:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:98:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:99:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:103:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:103:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:103:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:103:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:109:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:109:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:109:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:109:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:138:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:138:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:657:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/cli/cli.py:34:0: C0103: Constant name "pkgdatadir" doesn't conform to UPPER_CASE naming style (invalid-name)
bottles/frontend/cli/cli.py:41:0: C0413: Import "from gi.repository import Gio" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:43:0: C0413: Import "from bottles.frontend.params import APP_ID" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:44:0: C0413: Import "from bottles.backend.globals import Paths" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:45:0: C0413: Import "from bottles.backend.health import HealthChecker" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:46:0: C0413: Import "from bottles.backend.managers.manager import Manager" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:47:0: C0413: Import "from bottles.backend.models.config import BottleConfig" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:48:0: C0413: Import "from bottles.backend.wine.cmd import CMD" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:49:0: C0413: Import "from bottles.backend.wine.control import Control" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:50:0: C0413: Import "from bottles.backend.wine.executor import WineExecutor" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:51:0: C0413: Import "from bottles.backend.wine.winecommand import WineCommand" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:52:0: C0413: Import "from bottles.backend.wine.reg import Reg" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:53:0: C0413: Import "from bottles.backend.wine.winepath import WinePath" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:54:0: C0413: Import "from bottles.backend.wine.regedit import Regedit" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:55:0: C0413: Import "from bottles.backend.wine.taskmgr import Taskmgr" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:56:0: C0413: Import "from bottles.backend.wine.uninstaller import Uninstaller" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:57:0: C0413: Import "from bottles.backend.wine.winecfg import WineCfg" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:58:0: C0413: Import "from bottles.backend.wine.explorer import Explorer" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:59:0: C0413: Import "from bottles.backend.wine.regkeys import RegKeys" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:60:0: C0413: Import "from bottles.backend.runner import Runner" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:61:0: C0413: Import "from bottles.backend.utils import json" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:62:0: C0413: Import "from bottles.backend.utils.manager import ManagerUtils" should be placed at the top of the module (wrong-import-position)
bottles/frontend/cli/cli.py:218:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:220:12: C0103: Variable name "hc" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:223:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:240:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:244:16: C0103: Variable name "b" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:270:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:272:8: C0206: Consider iterating with .items() (consider-using-dict-items)
bottles/frontend/cli/cli.py:272:12: C0103: Variable name "c" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:287:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:295:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:299:16: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:313:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:351:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:359:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:367:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:399:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:408:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:433:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:440:19: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:443:20: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:446:20: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:448:20: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:451:24: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:458:15: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:472:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:482:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:492:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:502:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:551:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:565:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:569:16: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:614:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:633:12: R1722: Consider using 'sys.exit' instead (consider-using-sys-exit)
bottles/frontend/cli/cli.py:646:13: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/frontend/cli/cli.py:646:43: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:648:19: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/cli/cli.py:153:4: W0238: Unused private member `CLI.__clear()` (unused-private-member)
************* Module bottles.frontend.views.bottle_preferences
bottles/frontend/views/bottle_preferences.py:1:0: C0302: Too many lines in module (1101/1000) (too-many-lines)
bottles/frontend/views/bottle_preferences.py:433:13: W0511: "vista": "Windows Vista", # TODO: implement this in the backend (fixme)
bottles/frontend/views/bottle_preferences.py:54:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:56:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:142:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:143:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:144:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:145:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:147:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:148:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:149:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:150:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:151:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:152:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:153:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:154:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:155:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:156:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:157:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:158:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:159:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:160:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:161:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:162:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:163:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:164:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:175:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:179:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/frontend/views/bottle_preferences.py:23:0: E0611: No name 'Adw' in module 'gi.repository' (no-name-in-module)
bottles/frontend/views/bottle_preferences.py:167:8: W0105: String statement has no effect (pointless-string-statement)
bottles/frontend/views/bottle_preferences.py:172:8: W0105: String statement has no effect (pointless-string-statement)
bottles/frontend/views/bottle_preferences.py:181:8: W0105: String statement has no effect (pointless-string-statement)
bottles/frontend/views/bottle_preferences.py:267:8: W0212: Access to a protected member __library of a client class (protected-access)
bottles/frontend/views/bottle_preferences.py:280:25: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:339:12: W0612: Unused variable 'index' (unused-variable)
bottles/frontend/views/bottle_preferences.py:517:40: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:524:39: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:542:48: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:549:38: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:556:28: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:563:43: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:571:38: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:599:32: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:608:30: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:617:32: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:626:29: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:646:32: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:655:33: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:664:31: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:673:31: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:682:37: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:691:36: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:700:46: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:730:39: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:739:43: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:748:31: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:761:16: C0103: Variable name "w" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/views/bottle_preferences.py:777:41: W0613: Unused argument 'error' (unused-argument)
bottles/frontend/views/bottle_preferences.py:816:0: W0613: Unused argument 'args' (unused-argument)
bottles/frontend/views/bottle_preferences.py:990:19: W0613: Unused argument 'result' (unused-argument)
bottles/frontend/views/bottle_preferences.py:990:27: W0613: Unused argument 'error' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1000:8: C0103: Variable name "rk" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/views/bottle_preferences.py:1027:40: W0613: Unused argument 'widget' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1036:30: W0613: Unused argument 'status' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1036:43: W0613: Unused argument 'error' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1048:31: W0613: Unused argument 'status' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1048:44: W0613: Unused argument 'error' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1060:31: W0613: Unused argument 'status' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1060:44: W0613: Unused argument 'error' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1077:37: W0613: Unused argument 'status' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1077:50: W0613: Unused argument 'error' (unused-argument)
bottles/frontend/views/bottle_preferences.py:1090:17: R1719: The if expression can be replaced with 'not test' (simplifiable-if-expression)
bottles/frontend/views/bottle_preferences.py:1092:12: C0103: Variable name "w" doesn't conform to snake_case naming style (invalid-name)
bottles/frontend/views/bottle_preferences.py:267:8: W0238: Unused private member `PreferencesView.__library` (unused-private-member)
bottles/frontend/views/bottle_preferences.py:242:16: W0201: Attribute '__valid_name' defined outside __init__ (attribute-defined-outside-init)
bottles/frontend/views/bottle_preferences.py:245:8: W0201: Attribute '__valid_name' defined outside __init__ (attribute-defined-outside-init)
bottles/frontend/views/bottle_preferences.py:251:12: W0201: Attribute '__valid_name' defined outside __init__ (attribute-defined-outside-init)
bottles/frontend/views/bottle_preferences.py:426:8: W0201: Attribute 'windows_versions' defined outside __init__ (attribute-defined-outside-init)
************* Module bottles.backend.models.samples
bottles/backend/models/samples.py:1:0: R0903: Too few public methods (0/2) (too-few-public-methods)
************* Module bottles.backend.models.config
bottles/backend/models/config.py:63:5: W0511: share_host_ro: bool = True  # TODO: implement, requires the Bottles runtime (next) for a minimal sandbox (fixme)
bottles/backend/models/config.py:64:5: W0511: share_gpu: bool = True  # TODO: implement (fixme)
bottles/backend/models/config.py:65:5: W0511: share_paths_ro: List[str] = field(default_factory=lambda: [])  # TODO: implement (fixme)
bottles/backend/models/config.py:66:5: W0511: share_paths_rw: List[str] = field(default_factory=lambda: [])  # TODO: implement (fixme)
bottles/backend/models/config.py:232:9: W0511: TODO: remove after some time (fixme)
bottles/backend/models/config.py:150:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/models/config.py:171:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/models/config.py:171:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/models/config.py:202:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/models/config.py:117:4: C0103: Attribute name "Name" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:118:4: C0103: Attribute name "Arch" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:119:4: C0103: Attribute name "Windows" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:120:4: C0103: Attribute name "Runner" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:121:4: C0103: Attribute name "WorkingDir" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:122:4: C0103: Attribute name "DXVK" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:123:4: C0103: Attribute name "NVAPI" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:124:4: C0103: Attribute name "VKD3D" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:125:4: C0103: Attribute name "LatencyFleX" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:126:4: C0103: Attribute name "Path" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:127:4: C0103: Attribute name "Custom_Path" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:128:4: C0103: Attribute name "Environment" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:129:4: C0103: Attribute name "Creation_Date" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:130:4: C0103: Attribute name "Update_Date" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:131:4: C0103: Attribute name "Versioning" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:132:4: C0103: Attribute name "Versioning_Exclusion_Patterns" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:133:4: C0103: Attribute name "State" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:134:4: C0103: Attribute name "Parameters" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:135:4: C0103: Attribute name "Sandbox" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:136:4: C0103: Attribute name "Environment_Variables" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:137:4: C0103: Attribute name "Installed_Dependencies" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:138:4: C0103: Attribute name "DLL_Overrides" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:139:4: C0103: Attribute name "External_Programs" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:140:4: C0103: Attribute name "Uninstallers" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:143:4: C0103: Attribute name "Language" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:146:4: C0103: Attribute name "CompatData" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:148:4: C0103: Attribute name "RunnerPath" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:160:8: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:160:50: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
bottles/backend/models/config.py:160:50: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/backend/models/config.py:164:15: W0718: Catching too general exception Exception (broad-exception-caught)
bottles/backend/models/config.py:164:8: C0103: Variable name "e" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:179:8: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:195:15: W0718: Catching too general exception Exception (broad-exception-caught)
bottles/backend/models/config.py:184:12: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:184:54: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
bottles/backend/models/config.py:184:54: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/backend/models/config.py:195:8: C0103: Variable name "e" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:199:18: C0321: More than one statement on a single line (multiple-statements)
bottles/backend/models/config.py:216:15: W0718: Catching too general exception Exception (broad-exception-caught)
bottles/backend/models/config.py:216:8: C0103: Variable name "e" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:261:15: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/models/config.py:265:20: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
************* Module bottles.backend.wine.executor
bottles/backend/wine/executor.py:241:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/wine/executor.py:23:4: R0913: Too many arguments (15/5) (too-many-arguments)
bottles/backend/wine/executor.py:131:4: R1710: Either all return statements in a function should return an expression, or none of them should. (inconsistent-return-statements)
bottles/backend/wine/executor.py:189:8: E1111: Assigning result of a function call, where the function has no return (assignment-from-no-return)
bottles/backend/wine/executor.py:287:8: E1111: Assigning result of a function call, where the function has no return (assignment-from-no-return)
bottles/backend/wine/executor.py:301:8: E1111: Assigning result of a function call, where the function has no return (assignment-from-no-return)
bottles/backend/wine/executor.py:315:8: C0103: Variable name "w" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/executor.py:315:11: C0103: Variable name "h" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/executor.py:344:21: W1202: Use lazy % or % formatting in logging functions (logging-format-interpolation)
bottles/backend/wine/executor.py:347:12: C0103: Variable name "m" doesn't conform to snake_case naming style (invalid-name)
************* Module bottles.backend.wine.winecommand
bottles/backend/wine/winecommand.py:265:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/wine/winecommand.py:466:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/wine/winecommand.py:466:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/wine/winecommand.py:573:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/wine/winecommand.py:573:0: W1405: Quote delimiter ' is inconsistent with the rest of the file (inconsistent-quotes)
bottles/backend/wine/winecommand.py:85:4: R0913: Too many arguments (11/5) (too-many-arguments)
bottles/backend/wine/winecommand.py:129:12: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:135:12: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:172:8: C0103: Variable name "ld" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:190:16: C0103: Variable name "e" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:199:19: C0103: Variable name "v" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:216:20: C0103: Variable name "ld" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:353:24: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:360:20: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:364:51: E1136: Value 'gpu['prime']['integrated']' is unsubscriptable (unsubscriptable-object)
bottles/backend/wine/winecommand.py:366:20: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:171:8: W0612: Unused variable 'is_nvidia' (unused-variable)
bottles/backend/wine/winecommand.py:410:12: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:419:12: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:466:32: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
bottles/backend/wine/winecommand.py:475:21: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/backend/wine/winecommand.py:475:49: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:482:21: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/backend/wine/winecommand.py:482:49: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:486:16: C0103: Variable name "st" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:498:20: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:503:20: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:508:20: W0105: String statement has no effect (pointless-string-statement)
bottles/backend/wine/winecommand.py:573:12: C0103: Variable name "s" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:575:12: C0103: Variable name "s" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:583:8: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
bottles/backend/wine/winecommand.py:594:8: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
bottles/backend/wine/winecommand.py:631:12: R1705: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)
bottles/backend/wine/winecommand.py:669:8: C0103: Variable name "rv" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:671:12: C0103: Variable name "rv" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:677:12: C0103: Variable name "rv" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:648:23: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
bottles/backend/wine/winecommand.py:697:17: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/backend/wine/winecommand.py:697:41: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:701:17: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/backend/wine/winecommand.py:701:41: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
bottles/backend/wine/winecommand.py:703:17: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
bottles/backend/wine/winecommand.py:703:41: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)

@SuperSamus
Copy link
Contributor Author

(I'm waiting for comments before doing anything else)

@TheEvilSkeleton
Copy link
Contributor

No worries. We've been busy for a few months now, so we're taking our time. I'm in a trip

@TheEvilSkeleton
Copy link
Contributor

Can you resolve the conflicts? I did it locally, but I can't figure out how to push it directly to the MR.

@TheEvilSkeleton
Copy link
Contributor

Thanks

bottles/frontend/ui/dialog-gamescope.blp Outdated Show resolved Hide resolved
bottles/frontend/windows/gamescope.py Outdated Show resolved Hide resolved
@SuperSamus
Copy link
Contributor Author

One last note. Logs now say:

(WARNING) Skipping unexpected config 'fsr_quality_mode' in BottleParams

(This config is, in fact, not used anymore.)
Is this log something important to deal with, or not?

@koplo199
Copy link
Contributor

koplo199 commented Aug 20, 2023

New:

  • Since Wine-GE-Proton8-11/GE-Proton8-7 the bug caused by disabling FSR has been fixed
  • Since Wine-GE-Proton8-14/GE-Proton8-12 FSR is disabled by default

It adds to the fact that not communicating about Wine-GE/GE-Proton enabling FSR (between specific, older versions that is) maybe is just fine.

Note: Wouldn't it make more sense to have the FSR setting outside of the Gamescope page since it can be used without it?

@orowith2os
Copy link
Contributor

I think it would be better if we only dealed with gamescope FSR, as Wine FSR can be finnicky, and as you just saw, varies between versions. So we can keep it in the gamescope menu, and remove it otherwise.

@SuperSamus
Copy link
Contributor Author

Rebased and addressed #3065.

@orowith2os
Copy link
Contributor

Needs a quick look over from @mirkobrombin, otherwise I'd like to land this.

Copy link
Member

@mirkobrombin mirkobrombin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked the changes and looks goof to me. I am not able to test the changes by myself.

Thanks for your effort.

@fab-sonarqube
Copy link

fab-sonarqube bot commented Sep 27, 2023

@orowith2os
Copy link
Contributor

Will test later to make sure FSR works; then I'm merging, with some other fixes, for 51.10.

@koplo199
Copy link
Contributor

koplo199 commented Oct 6, 2023

After investigation, I strongly disagree with the proposal made here of only setting FSR inside gamescope.
Here is why:

  1. Bottles doesn't explicitly disable FSR, it just don't force enable it if not instructed to, proof: here and here . So not only the bug doesn't exist in upstream anymore (see my last comment), but we weren't even affected by it in the first place. There's thus really no reason to change anything here.
  2. We loose the ability to easily set FSR without gamescope.
  3. We loose program specific FSR setting. Now, it can only be enabled/disabled globally (and with gamescope only).

Only remains duplicated FSR setting issue, which is a 3 lines fix at most. This proposal only has downsides.

@SuperSamus
Copy link
Contributor Author

  1. The goal of this PR wasn't to solve that. Assuming Wine-GE continued to enable FSR by default today, [Bug]: FSR enabled in Wine-GE when disabled in Bottles #2636's status wouldn't have changed at all.
    The intention is: by making the FSR setting associated with Gamescope, it is more obvious that Wine-GE still does whatever it wants with FSR.

  2. It was also easy to have the setting enabled while it's doing absolutely nothing.
    With how messy the WINE_FULLSCREEN_FSR situation is, making the user manage it manually with environment variables is more appropriate.
    Not everything needs to be an explicit setting. For instance, why is DXVK's frame rate limit not a setting? Because DXVK_FRAME_RATE only applies to specific situations, so the user doesn't toggle a setting and get surprised when it does nothing.
    IMO, WINE_FULLSCREEN_FSR is in a similar situation.

  3. Not the biggest deal since it can be toggled with Super+U.
    I do not disagree that it's a downgrade, but the option needs to be in a Gamescope's submenu (making Preference Override do this is out of scope for this PR).

@koplo199
Copy link
Contributor

koplo199 commented Oct 6, 2023

  1. The goal of this PR wasn't to solve that. Assuming Wine-GE continued to enable FSR by default today, [Bug]: FSR enabled in Wine-GE when disabled in Bottles #2636's status wouldn't have changed at all.

It got disabled by default at the same time it was fixed, so that issue could be closed safely.

It was also easy to have the setting enabled while it's doing absolutely nothing.

With how messy the WINE_FULLSCREEN_FSR situation is making the user manage it manually with environment variables is more appropriate.

It is also easy to call the WINE_FULLSCREEN_FSR situation messy, when in reality this designation only rely on one upstream bug that got fixed in the meantime. Unless there's other major bugs I'm unaware of?

Not everything needs to be an explicit setting. For instance, why is DXVK's frame rate limit not a setting? Because DXVK_FRAME_RATE only applies to specific situations, so the user doesn't toggle a setting and get surprised when it does nothing.

I absolutely agree with this observation. I only disagree with the conclusion: it is fairly common to have a resolution setting/slider in-game. Having FSR kicking in while not on 100% resolution, basically providing minimal visual loss while having better performance, is not as niche as DXVK_FRAME_RATE. I do not even see a point in setting DXVK_FRAME_RATE, maybe except for games with buggy VSYNC implementation.

Not the biggest deal since it can be toggled with Super+U.

I invested a lot of time researching the topic and this is something I didn't even know. So, first: thanks for the tip 😅, and second: I think I take no risk saying the vast majority of users may, just like I was 30 seconds ago, not be aware of the existence of this toggle.

I do not disagree that it's a downgrade, but the option needs to be in a Gamescope's submenu (making Preference Override do this is out of scope for this PR).

I don't understand why you say it needs be in the gamescope's submenu: what is the problem with using the global/program FSR value to decide if FSR is enabled inside gamescope? That's how it is currently done, and while as you pointed out in #2755 some adjustments need to be made, I don't see something inherently wrong with it.

Also, something that hasn't been mentioned is that wine FSR is far from exclusive to Wine-GE. For instance the default soda runner also include these patches. They are also enabled by default in upstream wine-tkg, meaning it will be available for any runner using tkg patches, assuming of course the said runner does not explicitly set _use_GE_patches="false".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

FSR is enabled on both Wine and Gamescope (instead of just one of them)
5 participants