{"id":22073742,"url":"https://github.com/rolv-apneseth/rofi-games","last_synced_at":"2025-07-05T03:35:43.418Z","repository":{"id":159586081,"uuid":"634697007","full_name":"Rolv-Apneseth/rofi-games","owner":"Rolv-Apneseth","description":"Game launching plugin for rofi. Requires a good theme for the best results.","archived":false,"fork":false,"pushed_at":"2025-05-25T21:58:29.000Z","size":234,"stargazers_count":85,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-30T22:48:51.777Z","etag":null,"topics":["games-launcher","rofi","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rolv-Apneseth.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-01T00:07:50.000Z","updated_at":"2025-06-27T14:45:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"6521a1df-33f7-4b86-bf19-12aa83025185","html_url":"https://github.com/Rolv-Apneseth/rofi-games","commit_stats":null,"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/Rolv-Apneseth/rofi-games","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rolv-Apneseth%2Frofi-games","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rolv-Apneseth%2Frofi-games/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rolv-Apneseth%2Frofi-games/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rolv-Apneseth%2Frofi-games/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rolv-Apneseth","download_url":"https://codeload.github.com/Rolv-Apneseth/rofi-games/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rolv-Apneseth%2Frofi-games/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263677006,"owners_count":23494615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["games-launcher","rofi","rust"],"created_at":"2024-11-30T21:25:15.045Z","updated_at":"2025-07-05T03:35:43.407Z","avatar_url":"https://github.com/Rolv-Apneseth.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003erofi-games\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eGame launching plugin for \u003ca href=\"https://github.com/davatorium/rofi\"\u003eRofi\u003c/a\u003e. Requires a good theme for the best results.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-GPL_v2-green.svg\" alt=\"License: GPL v2\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/tag/rolv-apneseth/rofi-games?label=version\u0026color=blueviolet\" alt=\"version\" /\u003e\n  \u003ca href=\"https://aur.archlinux.org/packages/rofi-games\"\u003e\u003cimg src=\"https://img.shields.io/aur/version/rofi-games\" alt=\"AUR version\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n![rofi-games - demo image](https://github.com/Rolv-Apneseth/rofi-games/assets/69486699/62b89187-c94d-464f-a942-2e66385db5e0)\n\n## Installation\n\n### AUR\n\n```bash\nparu -S rofi-games\n```\n\n---\n\n### just\n\n1. Clone repo:\n\n    ```bash\n    git clone https://github.com/Rolv-Apneseth/rofi-games.git\n    ```\n\n2. Use `just` to install (requires `cargo` and `just`)\n\n    ```bash\n    cd rofi-games \u0026\u0026 sudo just install\n    ```\n\nUninstall with `sudo just uninstall`\n\n---\n\n### Manual (not recommended)\n\n```bash\ngit clone https://github.com/Rolv-Apneseth/rofi-games.git\ncd rofi-games\ncargo build --release --lib\nsudo cp target/release/librofi_games.so /usr/lib/rofi/games.so\n```\n\n- If you are using the latest changes from the `rofi` repo (e.g. `rofi-lbonn-wayland-git`, `rofi-git`), then the build step needs to be preceded by `RUSTFLAGS=\"--cfg rofi_next\"` for it to work\n- The last `cp` command assumes that the `rofi` plugins directory is `/usr/lib/rofi`, which may not be the case for you. Use `pkg-config --variable pluginsdir rofi` to find the one for your system, though if there is no output from that command, you may need to just try `/usr/lib64/rofi` or `/usr/lib/rofi` (the install script in the `justfile` falls back to these in that order).\n\n## Theme\n\nFor the optimal experience, and to achieve what is shown in the demo image, use a good `rofi` theme. You can use one of the default themes provided with `rofi-games` but I recommend customising it at least a little bit (at least add the search icon). More information about themes [here](./themes/).\n\n- To run with the default theme, the full command becomes:\n\n    ```bash\n    rofi -modi games -show games -theme games-default\n    ```\n\n- If you customised a theme and named the file `games.rasi`, it becomes:\n\n    ```bash\n    rofi -modi games -show games -theme games\n    ```\n\n## Keybinds\n\n| Keybind           | Default rofi keybind              | Action                     |\n|-------------------|-----------------------------------|----------------------------|\n| `kb-accept-entry` | \u003ckbd\u003eEnter\u003c/kbd\u003e                  | Launch game                |\n| `kb-accept-alt`   | \u003ckbd\u003eShift\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e | Open game's root directory |\n\n- To change a `rofi` keybind, you can, for example, use `-kb-accept-entry Ctrl+c`\n\n## Currently supported launchers / game sources\n\nParsing of installed games has been extracted into a separate library: [lib_game_detector](https://github.com/Rolv-Apneseth/lib_game_detector)\n\nThe following sources are currently supported:\n\n- Steam\n  - Steam shortcuts (non-Steam games) are also supported. Just make sure to launch the shortcut through\n    Steam at least once first so that the required files are created/updated.\n\n\u003e [!TIP]\n\u003e To add box art for a shortcut using the Steam UI, navigate to the Steam library page (where the different games' box art is shown) and find the desired shortcut, right-click -\u003e Manage -\u003e Set custom artwork\n\n- Heroic Games Launcher (all sources, including Amazon and manually added games, should work)\n  - The `GOG` source doesn't store the box art like the others, but the icons, so they won't look good by default.\n\n- Lutris\n\n\u003e [!TIP]\n\u003e To set the box art, simply right click the entry in the Lutris library, select \"Configure\", and click on the left-most image to select a new image file.\n\n- Bottles\n  - Only games which are in the Library are displayed\n\n- Instances from the following modded Minecraft launchers:\n    1. Prism Launcher\n    2. ATLauncher\n\n\u003e [!NOTE]\n\u003e Modded Minecraft instances don't have box art by default, so look at the configuration section below to see how to match an instance title to define box art for it. Titles are usually given in the form `Minecraft: {instance name}`\n\n## Configuration\n\nCustom entries, for unsupported games (or technically anything you want), can be made by creating a config file at `~/.config/rofi-games/config.toml` (`$XDG_CONFIG_HOME` is respected). Here is an example configuration:\n\n```toml\n# Allows hiding any entries which don't have box art images defined\nhide_entries_without_box_art = false\n# Directory to find box art in if an absolute path is not given\nbox_art_dir = \"/home/rolv/.config/rofi-games/box-art\"\n\n# Define a new custom entry\n[[entries]]\ntitle = \"GDLauncher\"\nlaunch_command = \"gdlauncher\"\n# Looks for the image in the defined `box_art_dir`\npath_box_art = \"gdlauncher.png\"\npath_game_dir = \"/opt/GDLauncher\"\n\n# Change box art for a title\n[[entries]]\ntitle = \"Cyberpunk 2077\"\npath_box_art = \"/home/rolv/images/cyberpunk.png\"\n\n# Define box art for a title e.g. Minecraft instances\n# Modded Minecraft instances are always prefixed with \"Minecraft: \"\n[[entries]]\ntitle = \"Minecraft: Fabulously Optimized\"\npath_box_art = \"fabulously_optimized.png\"\n\n# Hide/disable a title\n[[entries]]\ntitle = \"THE FINALS\"\nhide = true\n```\n\n- The `box_art_dir` field is optional, but will be used if the `path_box_art` field of a given entry is not an absolute path.\n\n- The `path_box_art` is optional, and if `box_art_dir` is defined, it can just be a relative path within that directory.\n\n\u003e [!TIP]\n\u003e [SteamGridDB](https://www.steamgriddb.com/grids) is a great place to find box art images for games.\n\n- In the first entry, a custom entry is defined for `GDLauncher`. All fields must be defined, except for `path_game_dir`.\n\n- In the second entry, a game already detected by `lib_game_detector` is matched by the `title` field. The\n  custom entry is used to override certain fields for that entry, e.g. changing the box art image.\n  - This can also be used to set box art images for the sources listed above that don't provide box art\n  by default e.g. Lutris, Minecraft instances\n\n\u003e [!WARNING]\n\u003e If you have multiple games which match a given title (e.g. from multiple launchers), creating a custom entry will only override the fields on the first match, and other matches will be ignored. If you have multiple entries in your configuration file with the same title, they will override each other.\n\n\u003e [!TIP]\n\u003e To run a script with spaces in the launch command, you will need to use `\\\\` before any space characters, e.g. `launch_command = \"/home/user/GOG\\\\ Games/Stardew\\\\ Valley/start.sh\"`. Other options can be passed in directly without escaping spaces.\n\n## Credit\n\nThe original idea belongs (as far as I know) to [@ntcarlson](https://github.com/ntcarlson), so big thanks to them. The original script I used to use for this was derived from [this Reddit post](https://www.reddit.com/r/unixporn/comments/p5b0qv/i3_misusing_rofi_as_a_game_launcher/) they shared.\n\nConverting to an actual `rofi` plugin is thanks to the author of [rofi-mode.rs library](https://github.com/SabrinaJewson/rofi-mode.rs), and thanks also to the author [rofi-vscode-mode](https://github.com/fuljo/rofi-vscode-mode) as that was very helpful as an example for `rofi-mode` usage and the `PKGBUILD`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolv-apneseth%2Frofi-games","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frolv-apneseth%2Frofi-games","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frolv-apneseth%2Frofi-games/lists"}