Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
7c2caaa
Add flexible matching options
neg-serg Oct 8, 2025
22a513b
Update README.md
neg-serg Oct 8, 2025
6e9c205
Add matcher unit tests
neg-serg Oct 8, 2025
cceae61
feat: add tag/xdgtag shorthands and Hyprland tags array support
neg-serg Oct 31, 2025
562de21
nix: update flake inputs (nixpkgs/naersk) to support Cargo.lock v4 an…
neg-serg Oct 31, 2025
8178b1b
scripts: add Hyprland migration tool to switch raise usage to tags an…
neg-serg Oct 31, 2025
947e18b
scripts: report remaining class-based raise usages and hint to source…
neg-serg Oct 31, 2025
a88049e
scripts: normalize https GitHub URL to flake 'github:owner/repo'; str…
neg-serg Oct 31, 2025
ace73b8
scripts: support Home Manager hypr path; convert home.nix prewarm exe…
neg-serg Oct 31, 2025
0a71af3
scripts: fix sed replacement to avoid ERE groups causing shell parse …
neg-serg Oct 31, 2025
7d90f06
scripts: extend tag rules and class→tag mapping (img, audio, read, ga…
neg-serg Oct 31, 2025
979de76
scripts: add mappings for Bazecor→kb, obs→obs, nicotine→music; extend…
neg-serg Oct 31, 2025
3d21629
scripts: add explicit tag rules for term/nwim, obs, Bazecor (kb)
neg-serg Oct 31, 2025
cb54749
scripts: convert --match class:regex for browsers to --tag web; de-du…
neg-serg Oct 31, 2025
ca875f7
scripts: simplify browser regex conversion (always map class:regex to…
neg-serg Oct 31, 2025
14c4df8
fix: use sh -c instead of hyprctl keyword exec for launching
neg-serg Jun 28, 2026
8b5bf7a
[fix] Update dispatch API for Hyprland 0.55 (hl.dsp.focus/exec_cmd)
neg-serg Jun 29, 2026
5768c9d
Use Lua-compatible dispatch syntax for Hyprland 0.55.4
neg-serg Jun 30, 2026
e8c9425
chore: ignore nix build result symlink
neg-serg Aug 18, 2026
8d29d0f
Merge remote-tracking branch 'origin/master'
neg-serg Aug 18, 2026
b65e674
chore: add MIT license and upstream attribution
neg-serg Aug 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
/target
/result
47 changes: 46 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ strip = true
argh = "0.1"
anyhow = "1.0"
miniserde = "0.1"
regex = "1"
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Sergey Miroshnichenko

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
45 changes: 43 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,62 @@
# raise

Fork of [lambdachad/raise](https://github.com/lambdachad/raise) with support
for Hyprland 0.55+ dispatch syntax and tag-based launch rules.

Run or raise implemented for Hyprland. It will raise window if it exists,
or cycle to next window if current window matches class to focus. Otherwise
it will launch new window.

```
$ raise
Usage: raise -c <class> -e <launch>
Usage: raise [-c <class>] [--tag <tag>] [--xdgtag <tag>] -e <launch> [-m <field[:method]=pattern>...]

Raise window if it exists, otherwise launch new window.

Options:
-c, --class class to focus
-c, --class class to focus (shorthand for `--match class=...`)
--tag window tag to match (repeatable; shorthand for `--match tag=...`)
--xdgtag XDG surface tag to match (repeatable; shorthand for `--match xdgtag=...`)
-e, --launch command to launch
-m, --match additional matcher in the form field[:method]=pattern
--help display usage information
```

### Matching

The `--match` flag allows choosing how a window should be selected. Each
matcher uses the format `field[:method]=pattern` and multiple matchers can be
combined; they all have to match for a window to qualify.

Supported fields:
- `class` — current window class reported by Hyprland
- `initial-class` — class when the window was first created
- `title` — current window title
- `initial-title` — original title assigned on window creation
- `tag` — window tag assigned via dynamic tags
- `xdgtag` — XDG surface tag (`xdgTag` in `hyprctl clients`)

Aliases: you can also use the short forms `c`, `initialClass`, `initialTitle`, and `xdg-tag`.

Supported methods (default is `equals`):
- `equals` / `eq`
- `contains` / `substr`
- `prefix` / `starts-with`
- `suffix` / `ends-with`
- `regex` / `re`

Examples:

```
raise --launch firefox --match class=firefox
raise --launch alacritty --match title:contains=notes
raise --launch slack --match class=Slack --match title:regex="(?i)daily"
# Shorthands for tags:
raise --launch floorp --tag web
raise --launch mpv --tag vid
raise --launch obsidian --tag notes
```

## Install `raise`

There are multiple ways to install this:
Expand Down
58 changes: 49 additions & 9 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading