{"id":13897340,"url":"https://github.com/open-dynaMIX/raiseorlaunch","last_synced_at":"2025-07-17T14:31:11.172Z","repository":{"id":26149926,"uuid":"29595093","full_name":"open-dynaMIX/raiseorlaunch","owner":"open-dynaMIX","description":"A run-or-raise-application-launcher for i3 window manager.","archived":false,"fork":false,"pushed_at":"2023-05-09T06:49:42.000Z","size":193,"stargazers_count":36,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-04-25T12:43:06.359Z","etag":null,"topics":["i3","i3wm","launcher","navigation","python","run-or-raise","scratchpad","workspace"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-dynaMIX.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2015-01-21T15:06:34.000Z","updated_at":"2024-06-08T23:32:42.304Z","dependencies_parsed_at":"2024-06-08T23:32:41.997Z","dependency_job_id":"e445d2eb-d275-42af-8eac-36fbc943c587","html_url":"https://github.com/open-dynaMIX/raiseorlaunch","commit_stats":{"total_commits":209,"total_committers":5,"mean_commits":41.8,"dds":"0.16267942583732053","last_synced_commit":"86d51e72e6cdfe653bde7104cfd34230050394b0"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-dynaMIX%2Fraiseorlaunch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-dynaMIX%2Fraiseorlaunch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-dynaMIX%2Fraiseorlaunch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-dynaMIX%2Fraiseorlaunch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-dynaMIX","download_url":"https://codeload.github.com/open-dynaMIX/raiseorlaunch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226270587,"owners_count":17598075,"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":["i3","i3wm","launcher","navigation","python","run-or-raise","scratchpad","workspace"],"created_at":"2024-08-06T18:03:31.944Z","updated_at":"2024-11-25T03:31:03.476Z","avatar_url":"https://github.com/open-dynaMIX.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# raiseorlaunch\n\n[![PyPI](https://img.shields.io/pypi/v/raiseorlaunch.svg)](https://pypi.org/project/raiseorlaunch/)\n[![Python versions](https://img.shields.io/pypi/pyversions/raiseorlaunch.svg)](https://pypi.org/project/raiseorlaunch/)\n[![Build Status](https://github.com/open-dynaMIX/raiseorlaunch/workflows/Tests/badge.svg)](https://github.com/open-dynaMIX/raiseorlaunch/actions?query=workflow%3ATests)\n[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)](https://github.com/open-dynaMIX/raiseorlaunch/blob/master/.coveragerc#L9)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n[![License](https://img.shields.io/github/license/open-dynaMIX/raiseorlaunch.svg)](https://opensource.org/licenses/MIT)\n\nA run-or-raise-application-launcher for [i3 window manager](https://i3wm.org/).\n\n## Features\n\n - If a provided application is running, focus it's window, otherwise\n   run it\n - Provide a regex for window class, instance and/or title to compare\n   with running windows\n - Optionally enable case-insensitive comparison\n - Optionally provide a workspace to use for raising and running\n - Optionally provide an initial workspace to run the application\n - Optionally use the scratchpad for raising and running\n - Optionally provide a con_mark for raising and running\n - workspace_auto_back_and_forth (if enabled) remains functional\n - Optionally cycle through matching windows (this will break\n   workspace_auto_back_and_forth if more than one window matches\n   the given properties)\n - Optionally leave fullscreen on target workspace\n\n## Installation\n\n### Repositories\n\nraiseorlaunch is in [PyPI](https://pypi.org/project/raiseorlaunch/),\nso you can just\n\n    pip install raiseorlaunch\n\nFor Arch Linux users it's also available in the\n[AUR](https://aur.archlinux.org/packages/raiseorlaunch/).\n\n### Manual\n\n#### Dependencies\n\n-   python3 or pypy3\n-   [i3ipc-python](https://github.com/acrisci/i3ipc-python)\n\n#### Install\n\nInstalling it directly with the setup.py creates a script-entry-point\nthat adds ~150ms delay. That's not acceptable for this kind of\napplication.\n\nThis can be prevented, if creating a wheel first and installing that\n(needs [wheel](https://pypi.org/project/wheel) and\n[pip](https://pypi.org/project/pip)):\n\n``` shell\npython setup.py bdist_wheel\npip install ./dist/raiseorlaunch-${VERSION}-py3-none-any.whl\n```\n\n#### Run without installation\n\nYou can also just run raiseorlaunch without installing it:\n\n``` shell\npython -m raiseorlaunch ${ARGUMENTS}\n```\n\nor:\n\n``` shell\n./raiseorlaunch/__main__.py ${ARGUMENTS}\n```\n\n## Usage and options\n\n```\nusage: raiseorlaunch [-h] [-c WM_CLASS] [-s WM_INSTANCE] [-t WM_TITLE]\n                     [-e COMMAND] [-w WORKSPACE | -W TARGET_WORKSPACE | -r]\n                     [-m CON_MARK] [-l EVENT_TIME_LIMIT] [-i] [-C] [-f] [-d]\n                     [-v]\n\nA run-or-raise-application-launcher for i3 window manager.\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -c WM_CLASS, --class WM_CLASS\n                        the window class regex\n  -s WM_INSTANCE, --instance WM_INSTANCE\n                        the window instance regex\n  -t WM_TITLE, --title WM_TITLE\n                        the window title regex\n  -e COMMAND, --exec COMMAND\n                        command to run with exec. If omitted, -c, -s or -t\n                        will be used (lower-case). Careful: The command will\n                        not be checked prior to execution!\n  -w WORKSPACE, --workspace WORKSPACE\n                        workspace to use\n  -W TARGET_WORKSPACE, --target-workspace TARGET_WORKSPACE, --init-workspace TARGET_WORKSPACE\n                        target workspace\n  -r, --scratch         use scratchpad\n  -m CON_MARK, --mark CON_MARK\n                        con_mark to use when raising and set when launching\n  -l EVENT_TIME_LIMIT, --event-time-limit EVENT_TIME_LIMIT\n                        Time limit in seconds to listen to window events after\n                        exec. This is needed for setting a con_mark, or moving\n                        the window to a specific workspace or the scratchpad.\n                        Defaults to 2\n  -i, --ignore-case     ignore case when comparing\n  -C, --cycle           cycle through matching windows (this will break\n                        workspace_back_and_forth if more than one window\n                        matches the given properties)\n  -f, --leave-fullscreen\n                        Leave fullscreen on target workspace\n  -d, --debug           display debug messages\n  -v, --version         show program's version number and exit\n\n```\n\n## Examples\n\n### CLI\n\nRun or raise Firefox:\n\n``` shell\nraiseorlaunch -c Firefox -s Navigator\n```\n\nUse the workspace `SL` for sublime text:\n\n``` shell\nraiseorlaunch -w SL -c \"^Sublime\" -s sublime_text -e subl\n```\n\nRaise or launch SpeedCrunch and use the scratchpad:\n\n``` shell\nraiseorlaunch -r -c SpeedCrunch\n```\n\nUse a script to start application:\n\n``` shell\nraiseorlaunch -r -c SpeedCrunch -e \"--no-startup-id /path/to/my-cool-script.sh\"\n```\n\nRaise the window with the con_mark `wiki`. If not found,\nexecute command and mark the new window matching the provided\nproperties. Set the time limit to wait for a new window to 3 seconds:\n\n``` shell\nraiseorlaunch -c Firefox -s Navigator -e \"firefox --new-window https://wiki.archlinux.org/\" -m wiki -l 3\n```\n\n### i3 bindsym\n\nIn i3 config you can define a bindsym like that:\n\n```\nbindsym ${KEYS} exec --no-startup-id raiseorlaunch ${ARGUMENTS}\n```\n\ne.g.\n\n```\nbindsym $mod+s exec --no-startup-id raiseorlaunch -w SL -c \"^Sublime\" -s sublime_text -e subl\n```\n\nfor binding `$mod+s` to raise or launch sublime text.\n\n## Quotation marks\n\nThe command will not be quoted when calling `exec`. Make\nsure you properly escape any needed quotation marks. For simple commands\nthere is no need to do anything.\n\n## Known problems\n\nKeybindings steal focus when fired. This can have a negative impact with\napplications that listen to FocusOut events and hide. This is due to\n[how X works](https://github.com/i3/i3/issues/2843#issuecomment-316173601).\n\n### Example:\n\nWhen using Guake Terminal with \"Hide on lose focus\" enabled,\nraiseorlaunch behaves as if the underlying window is focused.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-dynaMIX%2Fraiseorlaunch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-dynaMIX%2Fraiseorlaunch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-dynaMIX%2Fraiseorlaunch/lists"}