mirror of
https://github.com/Trensa-Organization/hy3.git
synced 2025-03-15 18:53:40 +01:00
my fork
This commit is contained in:
parent
aa50c3e82d
commit
71bd6b583a
4 changed files with 66 additions and 88 deletions
142
README.md
142
README.md
|
@ -1,7 +1,4 @@
|
||||||
<img align="right" style="width: 256px" src="assets/logo.svg">
|
|
||||||
|
|
||||||
# hy3
|
# hy3
|
||||||
<a href="https://matrix.to/#/#hy3:outfoxxed.me"><img src="https://img.shields.io/badge/Join%20the%20matrix%20room-%23hy3:outfoxxed.me-0dbd8b?logo=matrix&style=flat-square"></a>
|
|
||||||
|
|
||||||
i3 / sway like layout for [hyprland](https://github.com/hyprwm/hyprland).
|
i3 / sway like layout for [hyprland](https://github.com/hyprwm/hyprland).
|
||||||
|
|
||||||
|
@ -20,27 +17,6 @@ Additional features may be suggested in the repo issues or the [matrix room](htt
|
||||||
### Demo
|
### Demo
|
||||||
<video width="640" height="360" controls="controls" src="https://user-images.githubusercontent.com/83010835/255322916-85ae8196-8b12-4e15-b060-9872db10839f.mp4"></video>
|
<video width="640" height="360" controls="controls" src="https://user-images.githubusercontent.com/83010835/255322916-85ae8196-8b12-4e15-b060-9872db10839f.mp4"></video>
|
||||||
|
|
||||||
### Stability
|
|
||||||
hy3 has a tagged release for each hyprland update, and master tracks hyprland's main branch.
|
|
||||||
If you are running a release version of hyprland then use the matching tagged hy3 version.
|
|
||||||
If you are running an untagged hyprland release then use the `master` branch of hy3.
|
|
||||||
|
|
||||||
Commits are tested before pushing and will build against the hyprland release **in the flake.lock file**.
|
|
||||||
There may be a mismatch with hyprland's main branch. If hy3 fails to build against hyprland's main branch
|
|
||||||
please make an issue or ping me in the [hy3 matrix room](https://matrix.to/#/#hy3-support:outfoxxed.me).
|
|
||||||
|
|
||||||
Tagged hy3 versions are always checked against the corresponding hyprland tag.
|
|
||||||
|
|
||||||
If you encounter any bugs, please report them in the issue tracker.
|
|
||||||
|
|
||||||
When reporting bugs, please include:
|
|
||||||
- Commit hash of the version you are running.
|
|
||||||
- Steps to reproduce the bug (if you can figure them out)
|
|
||||||
- backtrace of the crash (if applicable)
|
|
||||||
|
|
||||||
If you are too lazy to use the issue tracker, please at least ping `@outfoxxed:outfoxxed.me`
|
|
||||||
in the [matrix room](https://matrix.to/#/#hy3-support:outfoxxed.me) with your bug information.
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
|
@ -51,6 +27,42 @@ in the [matrix room](https://matrix.to/#/#hy3-support:outfoxxed.me) with your bu
|
||||||
> check out the matching hy3 tag for the hyprland version.
|
> check out the matching hy3 tag for the hyprland version.
|
||||||
> hy3 tags are formatted as `hl{version}` where `{version}` matches the release version of hyprland.
|
> hy3 tags are formatted as `hl{version}` where `{version}` matches the release version of hyprland.
|
||||||
|
|
||||||
|
### hyprpm
|
||||||
|
Hyprland now has a dedicated plugin manager, which should be used when your package manager
|
||||||
|
isn't capable of locking hy3 builds to the correct hyprland version.
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> Make sure hyprpm is activated by putting
|
||||||
|
>
|
||||||
|
> ```conf
|
||||||
|
> exec-once = hyprpm reload -n
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> in your hyprland.conf. (See [the wiki](https://wiki.hyprland.org/Plugins/Using-Plugins/) for details.)
|
||||||
|
|
||||||
|
To install hy3 via hyprpm run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
hyprpm add https://github.com/outfoxxed/hy3
|
||||||
|
```
|
||||||
|
|
||||||
|
To update hy3 (and all other plugins), run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
hyprpm update
|
||||||
|
```
|
||||||
|
|
||||||
|
(See [the wiki](https://wiki.hyprland.org/Plugins/Using-Plugins/) for details.)
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> When you are running a tagged hyprland version hyprpm (0.34.0+) will build against hy3's
|
||||||
|
> corrosponding release. However if you are running an untagged build (aka `-git`) hyprpm
|
||||||
|
> will build against hy3's *latest* commit. This means **if you are running an out of date
|
||||||
|
> untagged build of hyprland, hyprpm may pick an incompatible revision of hy3**.
|
||||||
|
>
|
||||||
|
> To fix this problem you will either need to update hyprland or manually build the correct
|
||||||
|
> version of hy3.
|
||||||
|
|
||||||
### Nix
|
### Nix
|
||||||
#### Hyprland home manager module
|
#### Hyprland home manager module
|
||||||
Assuming you use hyprland's home manager module, you can easily integrate hy3 by adding it to the plugins array.
|
Assuming you use hyprland's home manager module, you can easily integrate hy3 by adding it to the plugins array.
|
||||||
|
@ -111,41 +123,6 @@ wayland.windowManager.hyprland = {
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
### hyprpm
|
|
||||||
Hyprland now has a dedicated plugin manager, which should be used when your package manager
|
|
||||||
isn't capable of locking hy3 builds to the correct hyprland version.
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> Make sure hyprpm is activated by putting
|
|
||||||
>
|
|
||||||
> ```conf
|
|
||||||
> exec-once = hyprpm reload -n
|
|
||||||
> ```
|
|
||||||
>
|
|
||||||
> in your hyprland.conf. (See [the wiki](https://wiki.hyprland.org/Plugins/Using-Plugins/) for details.)
|
|
||||||
|
|
||||||
To install hy3 via hyprpm run
|
|
||||||
|
|
||||||
```sh
|
|
||||||
hyprpm add https://github.com/outfoxxed/hy3
|
|
||||||
```
|
|
||||||
|
|
||||||
To update hy3 (and all other plugins), run
|
|
||||||
|
|
||||||
```sh
|
|
||||||
hyprpm update
|
|
||||||
```
|
|
||||||
|
|
||||||
(See [the wiki](https://wiki.hyprland.org/Plugins/Using-Plugins/) for details.)
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> When you are running a tagged hyprland version hyprpm (0.34.0+) will build against hy3's
|
|
||||||
> corrosponding release. However if you are running an untagged build (aka `-git`) hyprpm
|
|
||||||
> will build against hy3's *latest* commit. This means **if you are running an out of date
|
|
||||||
> untagged build of hyprland, hyprpm may pick an incompatible revision of hy3**.
|
|
||||||
>
|
|
||||||
> To fix this problem you will either need to update hyprland or manually build the correct
|
|
||||||
> version of hy3.
|
|
||||||
|
|
||||||
### Manual
|
### Manual
|
||||||
Install hyprland, including its headers and pkg-config file, then run the following commands:
|
Install hyprland, including its headers and pkg-config file, then run the following commands:
|
||||||
|
@ -160,33 +137,6 @@ The plugin will be located at `build/libhy3.so`, and you can load it normally
|
||||||
|
|
||||||
Note that the hyprland headers and pkg-config file **MUST be installed correctly, for the target version of hyprland**.
|
Note that the hyprland headers and pkg-config file **MUST be installed correctly, for the target version of hyprland**.
|
||||||
|
|
||||||
### Arch (AUR)
|
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> This method of installation is deprecated and you should use *hyprpm* instead,
|
|
||||||
> as it is simpler and less error prone.
|
|
||||||
|
|
||||||
> [!CAUTION]
|
|
||||||
> Pacman is not very reliable when it comes to building packages in the correct order.
|
|
||||||
> If you get a notification saying *hy3 was compiled for a different version of hyprland*
|
|
||||||
> then your packages likely updated in the wrong order, or you have hyprland headers in `/usr/local`.
|
|
||||||
>
|
|
||||||
> To fix this, remove `/usr/include/hyprland`, `/usr/local/include/hyprland`, `/usr/share/pkgconfig/hyprland.pc` and `/usr/local/share/pkgconfig/hyprland.pc`,
|
|
||||||
> then reinstall hyprland and hy3.
|
|
||||||
>
|
|
||||||
> If you know how to fix this please open an issue or pr, or message `@outfoxxed:outfoxxed.me` in the [matrix room](https://matrix.to/#/#hy3-support:outfoxxed.me).
|
|
||||||
|
|
||||||
hy3 stable (for arch's `hyprland` package) is availible on the AUR as [hy3](https://aur.archlinux.org/packages/hy3).
|
|
||||||
|
|
||||||
hy3-git (for `hyprland-git` on the AUR, unofficial package) is availible on the AUR as [hy3-git](https://aur.archlinux.org/packages/hy3-git).
|
|
||||||
|
|
||||||
Both packages install hy3 as `/usr/lib/libhy3.so`.
|
|
||||||
You can enable it in your hyprland configuration by adding the following line anywhere in your `hyprland.conf`
|
|
||||||
|
|
||||||
```conf
|
|
||||||
plugin = /usr/lib/libhy3.so
|
|
||||||
```
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
|
@ -224,9 +174,26 @@ plugin {
|
||||||
# 2 = keep the nested group only if its parent is a tab group
|
# 2 = keep the nested group only if its parent is a tab group
|
||||||
node_collapse_policy = <int> # default: 2
|
node_collapse_policy = <int> # default: 2
|
||||||
|
|
||||||
|
# policy controlling what windows will be focused using `hy3:movefocused`
|
||||||
|
# 0 = focus strictly by layout, don't attempt to skip windows that are obscured by another one
|
||||||
|
# 1 = do not focus windows which are entirely obscured by a floating window
|
||||||
|
# 2 = when `hy3:movefocus` layer is `samelayer` then use focus policy 0 (focus strictly by layout)
|
||||||
|
# when `hy3:movefocus` layer is `all` then use focus policy 1 (don't focus obscured windows)
|
||||||
|
focus_obscured_windows_policy = <int> # default: 2
|
||||||
|
|
||||||
|
# which layers should be considered when changing focus with `hy3:movefocus`?
|
||||||
|
# samelayer = only focus windows on same layer as the source window (floating or tiled)
|
||||||
|
# all = choose the closest window irrespective of the layout
|
||||||
|
# tiled = only choose tiled windows, not especially useful but permitted by parser
|
||||||
|
# floating = only choose floating windows, not especially useful but permitted by parser
|
||||||
|
default_movefocus_layer = <string> # default: `samelayer`
|
||||||
|
|
||||||
# offset from group split direction when only one window is in a group
|
# offset from group split direction when only one window is in a group
|
||||||
group_inset = <int> # default: 10
|
group_inset = <int> # default: 10
|
||||||
|
|
||||||
|
# scale factor of windows on the special workspace
|
||||||
|
special_scale_factor = <float> # default: 0.8
|
||||||
|
|
||||||
# if a tab group will automatically be created for the first window spawned in a workspace
|
# if a tab group will automatically be created for the first window spawned in a workspace
|
||||||
tab_first_window = <bool>
|
tab_first_window = <bool>
|
||||||
|
|
||||||
|
@ -344,8 +311,11 @@ plugin {
|
||||||
- `require_hovered` - affect the tab group under the mouse. do nothing if none are hovered.
|
- `require_hovered` - affect the tab group under the mouse. do nothing if none are hovered.
|
||||||
- `wrap` - wrap to the opposite size of the tab bar if moving off the end
|
- `wrap` - wrap to the opposite size of the tab bar if moving off the end
|
||||||
- `hy3:debugnodes` - print the node tree into the hyprland log
|
- `hy3:debugnodes` - print the node tree into the hyprland log
|
||||||
|
- `hy3:resizenode, <vector>` - like Hyprland `resizeactive`, but applied to the whole focused group instead of just a window
|
||||||
- :warning: **ALPHA QUALITY** `hy3:setswallow, <true | false | toggle>` - set the containing node's window swallow state
|
- :warning: **ALPHA QUALITY** `hy3:setswallow, <true | false | toggle>` - set the containing node's window swallow state
|
||||||
- :warning: **ALPHA QUALITY** `hy3:expand, <expand | shrink | base>` - expand the current node to cover other nodes
|
- :warning: **ALPHA QUALITY** `hy3:expand, <expand | shrink | base>` - expand the current node to cover other nodes
|
||||||
- `expand` - expand by one node
|
- `expand` - expand by one node
|
||||||
- `shrink` - shrink by one node
|
- `shrink` - shrink by one node
|
||||||
- `base` - undo all expansions
|
- `base` - undo all expansions
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[repository]
|
[repository]
|
||||||
name = "hy3"
|
name = "hy3"
|
||||||
authors = ["outfoxxed"]
|
authors = ["outfoxxed", "DRAGONTOS"]
|
||||||
commit_pins = [
|
commit_pins = [
|
||||||
["03ebbe18ed8517ee22591eac82cd54322f42cb7d", "2f28dc810c0e1f42763a1f14fb011c4fce6db8be"],
|
["03ebbe18ed8517ee22591eac82cd54322f42cb7d", "2f28dc810c0e1f42763a1f14fb011c4fce6db8be"],
|
||||||
["84ab8d11e8951a6551d1e1bf87796a8589da6d47", "d3e20856a9896f28b506195b31407eddc6df2e20"],
|
["84ab8d11e8951a6551d1e1bf87796a8589da6d47", "d3e20856a9896f28b506195b31407eddc6df2e20"],
|
||||||
|
@ -10,7 +10,7 @@ commit_pins = [
|
||||||
|
|
||||||
[hy3]
|
[hy3]
|
||||||
description = "i3 like tiling for hyprland"
|
description = "i3 like tiling for hyprland"
|
||||||
authors = ["outfoxxed"]
|
authors = ["outfoxxed", "DRAGONTOS"]
|
||||||
output = "build/libhy3.so"
|
output = "build/libhy3.so"
|
||||||
build = [
|
build = [
|
||||||
"cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -B build",
|
"cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -B build",
|
||||||
|
|
|
@ -1541,6 +1541,13 @@ void Hy3Layout::applyNodeDataToWindow(Hy3Node* node, bool no_animation) {
|
||||||
calcPos = calcPos + reserved_area.topLeft;
|
calcPos = calcPos + reserved_area.topLeft;
|
||||||
calcSize = calcSize - (reserved_area.topLeft + reserved_area.bottomRight);
|
calcSize = calcSize - (reserved_area.topLeft + reserved_area.bottomRight);
|
||||||
|
|
||||||
|
if (g_pCompositor->isWorkspaceSpecial(window->m_iWorkspaceID)) {
|
||||||
|
// adjust for special workspaces
|
||||||
|
static const auto scalefactor = ConfigValue<Hyprlang::FLOAT>("plugin:hy3:special_scale_factor");
|
||||||
|
calcPos = calcPos + (calcSize - calcSize * *scalefactor) / 2.f;
|
||||||
|
calcSize = calcSize * *scalefactor;
|
||||||
|
}
|
||||||
|
|
||||||
CBox wb = {calcPos, calcSize};
|
CBox wb = {calcPos, calcSize};
|
||||||
wb.round();
|
wb.round();
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
CONF("no_gaps_when_only", INT, 0);
|
CONF("no_gaps_when_only", INT, 0);
|
||||||
CONF("node_collapse_policy", INT, 2);
|
CONF("node_collapse_policy", INT, 2);
|
||||||
CONF("group_inset", INT, 10);
|
CONF("group_inset", INT, 10);
|
||||||
|
CONF("special_scale_factor", FLOAT, 0.8);
|
||||||
CONF("tab_first_window", INT, 0);
|
CONF("tab_first_window", INT, 0);
|
||||||
|
|
||||||
// tabs
|
// tabs
|
||||||
|
|
Loading…
Add table
Reference in a new issue