kandi background
Explore Kits

Proton | Compatibility tool for Steam Play | Video Game library

 by   ValveSoftware C++ Version: proton-7.0-2 License: Non-SPDX

 by   ValveSoftware C++ Version: proton-7.0-2 License: Non-SPDX

Download this library from

kandi X-RAY | Proton Summary

Proton is a C++ library typically used in Gaming, Video Game applications. Proton has no bugs, it has no vulnerabilities and it has medium support. However Proton has a Non-SPDX License. You can download it from GitHub.
Proton is a tool for use with the Steam client which allows games which are exclusive to Windows to run on the Linux operating system. It uses Wine to facilitate this. Most users should use Proton provided by the Steam Client itself. See this Steam Community post for more details. The source code is provided to enable advanced users the ability to alter Proton. For example, some users may wish to use a different version of Wine with a particular title. The changelog is available on our wiki.
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • Proton has a medium active ecosystem.
  • It has 16918 star(s) with 740 fork(s). There are 378 watchers for this library.
  • There were 1 major release(s) in the last 6 months.
  • There are 3336 open issues and 2159 have been closed. On average issues are closed in 6 days. There are 8 open pull requests and 0 closed requests.
  • It has a neutral sentiment in the developer community.
  • The latest version of Proton is proton-7.0-2
Proton Support
Best in #Video Game
Average in #Video Game
Proton Support
Best in #Video Game
Average in #Video Game

quality kandi Quality

  • Proton has 0 bugs and 0 code smells.
Proton Quality
Best in #Video Game
Average in #Video Game
Proton Quality
Best in #Video Game
Average in #Video Game

securitySecurity

  • Proton has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
  • Proton code analysis shows 0 unresolved vulnerabilities.
  • There are 0 security hotspots that need review.
Proton Security
Best in #Video Game
Average in #Video Game
Proton Security
Best in #Video Game
Average in #Video Game

license License

  • Proton has a Non-SPDX License.
  • Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.
Proton License
Best in #Video Game
Average in #Video Game
Proton License
Best in #Video Game
Average in #Video Game

buildReuse

  • Proton releases are available to install and integrate.
  • Installation instructions, examples and code snippets are available.
  • It has 7834 lines of code, 91 functions and 10 files.
  • It has high code complexity. Code complexity directly impacts maintainability of the code.
Proton Reuse
Best in #Video Game
Average in #Video Game
Proton Reuse
Best in #Video Game
Average in #Video Game
Top functions reviewed by kandi - BETA

Coming Soon for all Libraries!

Currently covering the most popular Java, JavaScript and Python libraries. See a SAMPLE HERE.
kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.

Proton Key Features

Compatibility tool for Steam Play based on Wine and additional components

Obtaining Proton sources

copy iconCopydownload iconDownload
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton

The Easy Way

copy iconCopydownload iconDownload
make install

Configuring the build

copy iconCopydownload iconDownload
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build

Building

copy iconCopydownload iconDownload
make

Install Proton locally

copy iconCopydownload iconDownload
compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
├── LICENSE
├── proton
├── proton_dist.tar
├── toolmanifest.vdf
├── user_settings.sample.py
└── version

New Firefox Update Bookmarks Toolbar (Show more bookmarks) | Double Space Problem

copy iconCopydownload iconDownload
    menupopup > menuitem, menupopup > menu {padding-top: 2px !important; padding-bottom: 2px !important;}
*|*:root {--arrowpanel-menuitem-padding: 2px 8px !important;}

```
________________________________________

FYI: References to ‘Chrome’ you will see throughout this document have nothing to do with Google’s Chrome browser.

The following assumes you will be creating a new userChrome.css file and latching it into FireFox. Modifying an existing userChrome.css file should become self-evident once you navigate to your FireFox profile folder. Three basic steps are required.

•   Creating a directory for the userChrome.css file.
•   Creating the userChrome.css file
•   Latching the userChrome.css file into FireFox

Creating a Directory for userChrome.css

The userChrome.css file lives in a directory in your FireFox profile called ‘chrome’ (all lower case). You will need to create this directory if not already there.

In FireFox, click on the hamburger in the upper right corner and open the "Help -> More Troubleshooting Information" page. Then find the button to open your profile folder in the Application Basics Section.

 [Ope Profile Folder][2]

Pressing this button will bring up File Explorer opened to your profile folder .

Create a folder and name it ‘chrome’, all lower case, and navigate into it. Leave the File Explorer open for now.

 [Profile Folder][3]

Creating userChrome.css

If there is not a userChrome.css file already available; you can use the code provided to create one. When copying the code from above; you need to paste into a simple text editor such as NotePad, and save it from there. This will eliminate any unprintable Word formatting characters that may be in the original.

There is a chance your editor will have a hard time navigating to the ‘chrome’ directory you just created. Especially if ‘AppData’ in the path to your ‘chrome’ folder is hidden. Save the text in your editor using “Save File As”, to a file named ‘userChrome.css’ on your desk top. Case is important.

Now drag ‘userChrome.css’ from the desk top to the open ‘chrome’ folder in File Explorer.

Latching userChrome.css into FireFox

Making FireFox aware of the new userChrome requires a preference to be set. In particular, parameter “toolkit.legacyUserProfileCustomizations.stylesheets” needs to be set to “true”.

To do this enter “about:config” in the address bar, press return, and accept the risks.

Be aware messing with the parameters can be like fooling around with the control rods in a nuclear reactor.  One slip up can result in a meltdown. Don’t mess with any of the other parameters unless you know what you are doing.

 [Accept Risk Button][4]

Enter “toolkit.legacy” in the search that comes up and press return.

Now press the double arrow to set this parameter to ‘true’
[setting parameter][5]
 
The parameter is set as soon as you change it. There is no “Save” or “Update” button to press.

You are all set. Sign out of FireFox and back in. (I also reset my machine as a placebo measure.) Display your book marks. They should be single spaced.

Nirvana


  [1]: https://i.stack.imgur.com/NH6Lr.png
  [2]: https://i.stack.imgur.com/obBKD.png
  [3]: https://i.stack.imgur.com/qjJXJ.png
  [4]: https://i.stack.imgur.com/CnUec.png
  [5]: https://i.stack.imgur.com/iap1C.png

npm run build is giving me errors I'm not sure how to fix

copy iconCopydownload iconDownload
assets!.map( // ...
assets?.map( // ...
-----------------------
assets!.map( // ...
assets?.map( // ...

Array map is giving me an error when trying to call the data in a dynamic render operation

copy iconCopydownload iconDownload
function UserTransactionsComponent1() {
  const [accounts, setAccounts] = useState();

  useEffect(() => {
    async function fetchData() {
      const res = await fetch(
        "https://proton.api.atomicassets.io/atomicassets/v1/accounts"
      );
      const { data } = await res.json();
      setAccounts(data);
    }
    fetchData();
  }, []);

  const getAccounts = () => {
    if (accounts)
    return accounts?.map((result) => {
      const { account } = result;
      return account;
    })
  }


  return (
    <PageLayout>
      Hi!{" "}
      {getAccounts()}
    </PageLayout>
  );
}

export default UserTransactionsComponent1;
-----------------------
.then(() => accounts.map( // insert rest of function here ))
-----------------------
useEffect(() => {
  accounts.map(...);
}, [accounts]);
return (
  <PageLayout>{accounts ? accounts : "Loading..."}</PageLayout>
);
-----------------------
useEffect(() => {
  accounts.map(...);
}, [accounts]);
return (
  <PageLayout>{accounts ? accounts : "Loading..."}</PageLayout>
);

Next.js, getStaticProps not working with component but does with page

copy iconCopydownload iconDownload
import {useState, useEffect} from "react"

function UserTransactionsComponent() {

  const [data, setData]=useState();

  useEffect(()=>{
    async function fetchData() {
      const res = await fetch(
        'https://proton.api.atomicassets.io/atomicmarket/v1/sales'
      );
      const {data} = await res.json();
      setData(data)
    }
    fetchData()
  },[]);

  if(!data){
   return (<div>Loading...</div>)
  }

  return (
    <PageLayout>
      <div>
        <h1>This is a list of User Transactions!</h1>
      </div>
      <ul>
        {data.map((result) => {
          const {
            sale_id,
            buyer,
            seller,
            listing_price,
            listing_symbol,
            created_at_time,
          } = result;

          if (buyer !== null) {
            return (
              <Card>
                <li key={sale_id}>
                  <h3>
                    {seller} just sold item number {sale_id} to {buyer} for{' '}
                    {formatNumber(listing_price)} {listing_symbol} at{' '}
                    {parseTimestampJM(created_at_time)}
                  </h3>
                </li>
              </Card>
            );
          }
        })}
      </ul>
    </PageLayout>
  );
}

export default UserTransactionsComponent;

Trying to console.log data within useEffect. Not logging any information

copy iconCopydownload iconDownload
{
  "success":true,
  "data":[{"account":"joejerde","assets":"11933"},{"account":"protonpunks","assets":"9072"}],
  "queryTime": 1646267075822
}
function UserAccounts() {
  const [accounts, setAccounts] = useState();

  useEffect(() => {
    async function fetchAccounts() {
      const res = await fetch(
        'https://proton.api.atomicassets.io/atomicassets/v1/accounts'
      );
      const { data: accountList } = await res.json();

      setAccounts(accountList);

      // logging both the state and the fetched value
      console.log(accounts, accountList);
      // accounts (state) will be undefined
      // if the fetch was successful, accountList will be an array of accounts (as per the API payload)
    }

    fetchAccounts()
  
  }, [])

  return <div>
    {JSON.stringify(accounts)}
  </div>
}
-----------------------
{
  "success":true,
  "data":[{"account":"joejerde","assets":"11933"},{"account":"protonpunks","assets":"9072"}],
  "queryTime": 1646267075822
}
function UserAccounts() {
  const [accounts, setAccounts] = useState();

  useEffect(() => {
    async function fetchAccounts() {
      const res = await fetch(
        'https://proton.api.atomicassets.io/atomicassets/v1/accounts'
      );
      const { data: accountList } = await res.json();

      setAccounts(accountList);

      // logging both the state and the fetched value
      console.log(accounts, accountList);
      // accounts (state) will be undefined
      // if the fetch was successful, accountList will be an array of accounts (as per the API payload)
    }

    fetchAccounts()
  
  }, [])

  return <div>
    {JSON.stringify(accounts)}
  </div>
}
-----------------------
import { useEffect, useState } from "react";

export default function App() {
  const [accounts, setAccounts] = useState();

  async function fetchAccounts() {
    const res = await fetch(
      "https://proton.api.atomicassets.io/atomicassets/v1/accounts"
    );
    const { data } = await res.json();
    setAccounts(data);
  }

  // on component mount / onload
  useState(() => {
    fetchAccounts();
  }, []);

  // on accounts state change
  useEffect(() => {
    console.log(accounts);
  }, [accounts]);

  return <div className="blankElement">hello world</div>;
}
-----------------------
function UserAccounts() {
  const [accounts, setAccounts] = useState();

  useEffect(() => {
    try {
     async function fetchAccounts() {
      const res = await fetch(
        'https://proton.api.atomicassets.io/atomicassets/v1/accounts'
      );
      const { accounts } = await res.json();

      setAccounts(accounts);
      console.log(accounts);
     }
    } catch (err) {
      console.log(err)
      // do something like throw your error
    }

    fetchAccounts();
  }, []);
 
}

Python redirect the path by detection of ../ from anothers path

copy iconCopydownload iconDownload
from pathlib import Path

a = A.replace('\\', '/')
b = B.replace('\\', '/')

c = Path(a) / Path(b)
print(c.resolve())
str(c.resolve()).replace('/', '\\')
-----------------------
from pathlib import Path

a = A.replace('\\', '/')
b = B.replace('\\', '/')

c = Path(a) / Path(b)
print(c.resolve())
str(c.resolve()).replace('/', '\\')

Removing words from sentence when in lookup dataframe

copy iconCopydownload iconDownload
import re
stopwords = ["Ford", "Hyundai", "Toyota", "Volkswagen", "Volvo"]
tests = ["Something about a Ford doing some car stuff",
         "Hyundai is another car manufacturer",
         "Not everyone buys cars. Some people buy trucks from Toyota.",
         "Volkswagen is a German company.",
         "A lot of car brands like Toyota, Volkswagen, Volvo, do things"] 
stopwards_lower = [word.lower() for word in stopwords]
delimiters = " ", "...", ",", "."
for test in tests:
    querywords = list(filter(None, re.split('|'.join(map(re.escape, delimiters)), test)))
    resultwords  = [word for word in querywords if word.lower() not in stopwards_lower]
    result = ' '.join(resultwords)
    print(result)
-----------------------
stopwords = ["ford", "hyundai", "toyota", "volkswagen", "volvo"]
tests = ["Something about a Ford doing some car stuff",
         "Hyundai is another car manufacturer",
         "Not everyone buys cars. Some people buy trucks from Toyota",
         "Volkswagen is a German company.",
         "A lot of car brands like Toyota Volkswagen Volvo do things"] 
querywords = pd.Series(tests)

resultwords  = [word for sentence in querywords for word in sentence.split(' ') if word.lower() not in stopwords]
result = ' '.join(resultwords)

How can I disable the return_bind_key in PySimpleGui?

copy iconCopydownload iconDownload
# window['b1'].update(bind_return_key=False)  # raises error
window['-INPUT-'].unbind('<Return>')
# window['b1'].update(bind_return_key=True)  # raises your error
window['-INPUT-'].bind('<Return>', None) # bind just the return key with no modifiers
-----------------------
# window['b1'].update(bind_return_key=False)  # raises error
window['-INPUT-'].unbind('<Return>')
# window['b1'].update(bind_return_key=True)  # raises your error
window['-INPUT-'].bind('<Return>', None) # bind just the return key with no modifiers
-----------------------
import PySimpleGUI as sg

layout = [  [sg.Text('My Window')],
            [sg.Input(key='-IN-')],
            [sg.Text(size=(20,1), key='-OUT-')],
            [sg.Button('Go1', bind_return_key=True), sg.B('Go2'), sg.B('Switch to Go2'), sg.B('Disable')]  ]

window = sg.Window('Bind Return Key', layout)

while True:
    event, values = window.read()
    window['-OUT-'].update(f'{event, values}')
    if event == sg.WIN_CLOSED or event == 'Exit':
        break
    if event == 'Switch to Go2':
        window['Go1'].BindReturnKey = False
        window['Go2'].BindReturnKey = True
    elif event == 'Disable':
        window['Go1'].BindReturnKey = window['Go2'].BindReturnKey = False
window.close()

Using booleans in dictionary within loop: Second iteration forward gives no values

copy iconCopydownload iconDownload
for aa in aaDic.keys():
        if float(x) > float(aaDic[aa]):
          aaDic[aa] = True
        elif float(x) < float(aaDic[aa]):
          aaDic[aa] = False
        #print(aa, aaDic[aa], "\n")
aaDic = {
         'Arg': 12.48,
         'Asp': 3.90,
         'Cys': 8.37,
         'Glu': 4.07,
         'His': 6.04,
         'Lys': 10.54,
         'Tyr': 10.46,
         }
# Add this new dictionary of booleans
boolAADic = {key:False for key in aaDic }

while True:

    x = input("Enter pH of buffer: ")
    y = input("Enter three letter code for an amino acid: ")


    if float(x) > float(aaDic[y]):
        ProtonationInput = True
    elif float(x) < float(aaDic[y]):
        ProtonationInput = False
    print("\n")
    print("Is your amino acid,", y, ", protonated?", ProtonationInput, "\n")

    print("At pH", x, y, "likely interacts with the following residues: \n")

    print(aaDic)
    for aa in aaDic.keys():
        if float(x) > float(aaDic[aa]):
          boolAADic[aa] = True # Change to boolean dictionary
        elif float(x) < float(aaDic[aa]):
          boolAADic[aa] = False # Change to boolean dictionary
        #print(aa, aaDic[aa], "\n")


    for aa in aaDic.keys():
      if ProtonationInput == True:
            if boolAADic[aa] == False: # Change to boolean dictionary
              print(aa, "\n")
      elif ProtonationInput == False:
            if boolAADic[aa] == True: # Change to boolean dictionary
              print(aa, "\n")



-----------------------
for aa in aaDic.keys():
        if float(x) > float(aaDic[aa]):
          aaDic[aa] = True
        elif float(x) < float(aaDic[aa]):
          aaDic[aa] = False
        #print(aa, aaDic[aa], "\n")
aaDic = {
         'Arg': 12.48,
         'Asp': 3.90,
         'Cys': 8.37,
         'Glu': 4.07,
         'His': 6.04,
         'Lys': 10.54,
         'Tyr': 10.46,
         }
# Add this new dictionary of booleans
boolAADic = {key:False for key in aaDic }

while True:

    x = input("Enter pH of buffer: ")
    y = input("Enter three letter code for an amino acid: ")


    if float(x) > float(aaDic[y]):
        ProtonationInput = True
    elif float(x) < float(aaDic[y]):
        ProtonationInput = False
    print("\n")
    print("Is your amino acid,", y, ", protonated?", ProtonationInput, "\n")

    print("At pH", x, y, "likely interacts with the following residues: \n")

    print(aaDic)
    for aa in aaDic.keys():
        if float(x) > float(aaDic[aa]):
          boolAADic[aa] = True # Change to boolean dictionary
        elif float(x) < float(aaDic[aa]):
          boolAADic[aa] = False # Change to boolean dictionary
        #print(aa, aaDic[aa], "\n")


    for aa in aaDic.keys():
      if ProtonationInput == True:
            if boolAADic[aa] == False: # Change to boolean dictionary
              print(aa, "\n")
      elif ProtonationInput == False:
            if boolAADic[aa] == True: # Change to boolean dictionary
              print(aa, "\n")



PySimpleGui - is there a way to empty the screen?

copy iconCopydownload iconDownload
from random import randint
import PySimpleGUI as sg

def new_questions(number):
 return [(f'{i}x{j} = ?', f'{i*j}')
    for i, j in [(randint(1, 9), randint(1, 9)) for i in range(number)]]

font = ("Courier New", 16)
sg.theme("DarkBlue3")
sg.set_options(font=font)

number = 5

frame1 = [
    [sg.VPush()],
    [sg.Text("", key='Result')],
    [sg.Text("Ready to answer questions")],
    [sg.Button("Start"), sg.Button("Exit")],
    [sg.VPush()],
]

frame2 = [
    [sg.VPush()],
    [sg.Text("Question:"), sg.Text("",  size=7, key="Question")],
    [sg.Text("Answer:"),   sg.Input("", size=7, key="Answer")],
    [sg.Button("OK")],
    [sg.VPush()],
]

layout = [
    [sg.Frame("", frame1, size=(360, 200), visible=True,  key='Frame1',  element_justification='center'),
     sg.Frame("", frame2, size=(360, 200), visible=False, key='Frame2',  element_justification='center')],
]

window = sg.Window("Test", layout, finalize=True)
question, answer, result = window['Question'], window['Answer'], window['Result']
frame1, frame2 = window['Frame1'], window['Frame2']
answer.bind("<Return>", "-Return")
sg.theme("DarkGrey")

while True:

    event, values = window.read()

    if event in (sg.WINDOW_CLOSED, 'Exit'):
        break
    elif event == 'Start':
        frame2.update(visible=True)
        frame1.update(visible=False)
        index, correct = 0, 0
        questions = new_questions(number)
        q, a = questions[index]
        question.update(q)
        answer.update('')
        answer.set_focus()
    elif event in ('OK', "Answer-Return") and index < number:
        ans = values['Answer'].strip()
        index += 1
        if ans == a:
            correct += 1
            sg.popup(f"Your answer is correct ({correct}/{index})")
        else:
            sg.popup(f"Correct answer is {a} ({correct}/{index})")
        if index < number:
            q, a = questions[index]
            question.update(q)
            answer.update('')
            answer.set_focus()
        else:
            frame1.update(visible=True)
            frame2.update(visible=False)
            result.update(f"{correct}/{index} correct !!")

window.close()

Community Discussions

Trending Discussions on Proton
  • New Firefox Update Bookmarks Toolbar (Show more bookmarks) | Double Space Problem
  • npm run build is giving me errors I'm not sure how to fix
  • Array map is giving me an error when trying to call the data in a dynamic render operation
  • Next.js, getStaticProps not working with component but does with page
  • Trying to console.log data within useEffect. Not logging any information
  • java.lang.NoSuchMethodError: 'com.microsoft.aad.msal4j.SilentParameters$SilentParametersBuilder using azure sdk for java service bus
  • Kafka-connect to PostgreSQL - org.apache.kafka.connect.errors.DataException: Failed to deserialize topic to to Avro
  • Python redirect the path by detection of ../ from anothers path
  • Removing words from sentence when in lookup dataframe
  • How can I disable the return_bind_key in PySimpleGui?
Trending Discussions on Proton

QUESTION

New Firefox Update Bookmarks Toolbar (Show more bookmarks) | Double Space Problem

Asked 2022-Mar-25 at 04:59

I updated my firefox to the latest version :
Version 92.0
Now in Bookmarks Toolbar (Show more bookmarks) i have a problem about double Space between bookmarks.
There is a thread in stack like this :
new-firefox-update-menu-bookmark-padding-spacing-fix
But i could n't find any userChrome.css file in fiefox profile folder.
How can i fix double space issue?


Try browser.proton.contextmenus.enabled > false (disables Proton UI of context menus)

Did not work for me.


As you see in the image below spaces are more than usual.

enter image description here

This is really annoying.
Please guide me to fix this issue without manipulating or creating new rules in css.

ANSWER

Answered 2021-Sep-10 at 22:44

You have to create the file (and folder) yourself, and enable setting in about:config to tell Firefox it should apply it. Recycled howto for enabling and easy debugging from https://twitter.com/myfonj/status/1387584962354982912 :

How to inspect Firefox UI, make changes and persist them across restarts, in 9 steps:

1. Enable userChrome.css

Visit about:config, search for '.styles' and toggle toolkit.legacyUserProfileCustomizations.stylesheets to true.

2. Enable UI debugging

Open ≡ Menu > More Tools > Web Developer Tools > ⚙ Settings > Advanced and check (or press F12, then F1)

  • [✓] "Enable browser chrome and add-on debugging toolboxes"
  • [✓] "Enable remote debugging"

3. Obtain location of your Firefox user <profile folder>

See path at about:support#profile-row

4. Open Browser Toolbox

Launch ≡ Menu > More Tools > Browser Toolbox (or press Ctrl+Shift+Alt+I)

5. Allow incoming connection.

6. Switch to Style(sheet) Editor.

7. Create new style

8. Try canonical * { color: red !important; }

9. Save it as <profile folder>\chrome\userChrome.css

(10.) Done. Now you can close the Toolbox and Firefox without losing your precious tweaks.

Source https://stackoverflow.com/questions/69138574

Community Discussions, Code Snippets contain sources that include Stack Exchange Network

Vulnerabilities

No vulnerabilities reported

Install Proton

You need either a Docker or a Podman setup. We highly recommend the rootless Podman setup. Please refer to your distribution's documentation for setup instructions (e.g. Arch Podman / Docker, Debian Podman / Docker).
Running configure.sh will create a Makefile allowing you to build Proton. The scripts checks if containers are functional and prompt you if any host-side dependencies are missing. You should run the command from a directory created specifically for your build. The configuration script tries to discover a working Docker or Podman setup to use, but you can force a compatible engine with --container-engine=<executable_name>. You can enable ccache with --enable-cache flag. This will mount your $CCACHE_DIR or $HOME/.ccache inside the container. --proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version> can be used to build with a custom version of the Proton SDK images. Check --help for other configuration options. NOTE: If SELinux is in use, the Proton build container may fail to access your user's files. This is caused by SELinux's filesystem labels. You may pass the --relabel-volumes switch to configure to cause the container engine to relabel its bind-mounts and allow access to those files from within the container. This can be dangerous when used with system directories. Proceed with caution and refer your container engine's manual.
Steam ships with several versions of Proton, which games will use by default or that you can select in Steam Settings' Steam Play page. Steam also supports running games with local builds of Proton, which you can install on your machine. To install a local build of Proton into Steam, make a new directory in ~/.steam/root/compatibilitytools.d/ with a tool name of your choosing and place the directory containing your redistributable build under that path. The make install target will perform this task for you, installing the Proton build into the Steam folder for the current user. You will have to restart the Steam client for it to pick up on a new tool.

Support

For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .

DOWNLOAD this Library from

Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

Explore Related Topics

Share this Page

share link
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

  • © 2022 Open Weaver Inc.