/SIF

:video_game: Steam Icons Fixer - Fix runtime icons of Steam games on Linux.

Primary LanguagePythonApache License 2.0Apache-2.0

SIF (Steam Icons Fixer)

Dock with icons after fix

SIF is a simple Python script allowing you to fix runtime icons of Steam games displayed in dock or panel to match Linux system icon theme.

Animation

It aims to be safe, simple and intuitive.
The script must be run by a regular user and modifies only files in ~/.local/share/applications directory.

I created this script because I find it very frustrating when the game icons don't fit the selected icon theme.

The script was tested on Gnome and KDE with Dash to Dock, Plank, Latte and Numix-Circle, Numix-Square, Papirus and Suru++ icon themes.

Description

Visit wiki/Description.

Installation

Make sure you have installed Python modules PyGObject, requests and vdf. You can use your package manager or pip3 to install them.

Example (after you clone the respository): pip3 install -r requirements.txt --user

Also make sure you have xdotool installed. It should be available in the official repositories.

After that, all you need to do is clone this repository:

git clone https://github.com/BlueManCZ/SIF.git
cd SIF

Gentoo users may use ebuild in the Edgets overlay.

Arch users may use pkgbuild from the AUR.

Usage

See ./sif.py --help for all options.

Check

You can check which games can be fixed before applying the fix:

./sif.py --icons

or:

./sif.py --pretend

Apply

If commands above worked without a problem, you can apply the fix:

./sif.py 

If you want to clear previous fixes before applying new ones:

./sif.py --clear

You can also fix only one specific game:

./sif.py --single APP_ID

Restore

If you want to remove all changes and restore default icons:

./sif.py --restore

Contribution

For the fix to work, I need to know WM_CLASS of each individual game. I can create fixes only for games which I have installed and I can get their WM_CLASS.

If you want append your game to our database, you have to know APP_ID and WM_CLASS of this game.

Get APP_ID

There are multiple ways, how to get APP_ID of Steam game.

  1. You can use ./sif.py --games to get APP_IDs of all installed games.
  2. From the steamdb.info.
  3. From the store.steampowered.com URL address.

Get WM_CLASS

Users with xorg can use xprop tool.

  1. Start your game from Steam library.
  2. Open new terminal window and run xprop WM_CLASS.
  3. Switch to the game window with Alt-Tab and left click with mouse on it.
  4. Switch back to the terminal and get your WM_CLASS.

Missing WM_CLASS?

Some games have their WM_CLASS missing. In this case you can use a WM_NAME of the game. xprop WM_NAME

Proton games are supported natively

Do not contribute Proton games to the database, because they are supported natively. WM_CLASS of each Proton game is steam_app_<APP_ID>. It is calculated automatically.

Create issue or append database

You can open a new issue, where you provide APP_ID, WM_CLASS (and your icon theme), and I will add your game to the database as soon as possible.

You can also fork this repository, edit database.json yourself and create a pull request. Please keep the file sorted by APP_ID.

Your contribution is welcome.