2023-04-19 02:56:11 -07:00
|
|
|
# hy3
|
|
|
|
i3 / sway like layout for [hyprland](https://github.com/hyprwm/hyprland).
|
|
|
|
|
|
|
|
### Features
|
|
|
|
- [x] i3 like tiling
|
|
|
|
- [x] Window splits
|
|
|
|
- [x] Window movement
|
|
|
|
- [x] Window resizing
|
2023-04-26 00:57:24 -07:00
|
|
|
- [x] Selecting a group of windows at once (and related movement)
|
2023-04-19 02:56:11 -07:00
|
|
|
- [ ] Tabbed groups
|
|
|
|
- [ ] Some convenience dispatchers not found in i3 or sway
|
|
|
|
|
|
|
|
### Stability
|
2023-04-19 21:38:55 -07:00
|
|
|
As of now hy3 is stable enough to use normally.
|
2023-04-19 02:56:11 -07:00
|
|
|
If you encounter any crashes or bugs please report them in the issue tracker.
|
|
|
|
|
|
|
|
When reporting bugs, please include:
|
|
|
|
- Commit hash of the version you are running.
|
|
|
|
- Steps to reproduce (if you can figure them out)
|
|
|
|
- backtrace of the crash
|
|
|
|
|
|
|
|
If you don't know how to reproduce it or can't, or you can't take a backtrace please still report the issue.
|
|
|
|
|
|
|
|
## Configuration
|
2023-04-19 03:07:05 -07:00
|
|
|
Set your `general:layout` to `hy3` in hyprland.conf.
|
|
|
|
|
2023-04-19 02:56:11 -07:00
|
|
|
hy3 requires using a few custom dispatchers for normal operation.
|
|
|
|
In your hyprland config replace the following dispatchers:
|
|
|
|
- `movefocus` -> `hy3:movefocus`
|
|
|
|
- `movewindow` -> `hy3:movewindow`
|
|
|
|
|
|
|
|
You can use `hy3:makegroup` to create a new split.
|
|
|
|
|
|
|
|
### Dispatcher list
|
2023-05-04 03:10:06 -07:00
|
|
|
- `hy3:makegroup, <h | v | opposite>` - make a vertical or horizontal split
|
2023-05-10 00:42:53 -07:00
|
|
|
- `hy3:movefocus, <l | u | d | r | left | down | up | right>` - move the focus left, up, down, or right
|
|
|
|
- `hy3:movewindow, <l | u | d | r | left | down | up | right> [, once]` - move a window left, up, down, or right
|
|
|
|
- `once` - only move directly to the neighboring group, without moving into any of its subgroups
|
2023-04-26 00:57:24 -07:00
|
|
|
- `hy3:raisefocus` - raise the active focus one level
|
2023-04-19 02:56:11 -07:00
|
|
|
- `hy3:debugnodes` - print the node tree into the hyprland log
|
|
|
|
|
|
|
|
## Installing
|
|
|
|
|
|
|
|
### Nix
|
2023-04-28 01:11:58 -07:00
|
|
|
#### Using the home-manager module
|
2023-05-03 12:05:14 -07:00
|
|
|
Assuming you use hyprland's home manager module, you can easily integrate hy3 by adding it to the plugins array.
|
2023-04-28 01:11:58 -07:00
|
|
|
|
|
|
|
```nix
|
|
|
|
# flake.nix
|
|
|
|
|
|
|
|
{
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
|
|
|
|
|
|
home-manager = {
|
|
|
|
url = "github:nix-community/home-manager";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
|
|
|
|
hyprland.url = "github:hyprwm/Hyprland";
|
|
|
|
|
|
|
|
hy3 = {
|
|
|
|
url = "github:outfoxxed/hy3";
|
|
|
|
inputs.hyprland.follows = "hyprland";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
outputs = { nixpkgs, home-manager, hyprland, hy3, ... }: {
|
|
|
|
homeConfigurations."user@hostname" = home-manager.lib.homeManagerConfiguration {
|
|
|
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
|
|
|
|
|
|
modules = [
|
|
|
|
hyprland.homeManagerModules.default
|
|
|
|
|
|
|
|
{
|
|
|
|
wayland.windowManager.hyprland = {
|
|
|
|
enable = true;
|
2023-05-03 12:05:14 -07:00
|
|
|
plugins = [ hy3.packages.x86_64-linux.hy3 ];
|
2023-04-28 01:11:58 -07:00
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Manually (Nix)
|
|
|
|
hy3's binary is availible as `${hy3.packages.<system>.hy3}/lib/libhy3.so`, so you can also
|
|
|
|
directly use it in your hyprland config like so:
|
|
|
|
|
|
|
|
```nix
|
|
|
|
# ...
|
|
|
|
wayland.windowManager.hyprland = {
|
|
|
|
# ...
|
|
|
|
extraConfig = ''
|
2023-05-03 12:05:14 -07:00
|
|
|
plugin = ${hy3.packages.x86_64-linux.hy3}/lib/libhy3.so
|
2023-04-28 01:11:58 -07:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
```
|
2023-04-19 02:56:11 -07:00
|
|
|
|
2023-04-19 10:51:30 -07:00
|
|
|
### [Hyprload](https://github.com/Duckonaut/hyprload)
|
2023-04-19 02:56:11 -07:00
|
|
|
Add an entry to your hyprload.toml like so:
|
|
|
|
|
|
|
|
```toml
|
|
|
|
plugins = [
|
|
|
|
# ...
|
2023-04-28 01:11:58 -07:00
|
|
|
"outfoxxed/hy3",
|
2023-04-19 02:56:11 -07:00
|
|
|
# ...
|
|
|
|
]
|
|
|
|
```
|
|
|
|
|
|
|
|
### Manual
|
2023-04-28 01:11:58 -07:00
|
|
|
Install hyprland, then run the following commands:
|
2023-04-19 02:56:11 -07:00
|
|
|
|
|
|
|
```sh
|
2023-04-19 10:51:30 -07:00
|
|
|
cmake -DCMAKE_BUILD_TYPE=Debug -B build
|
|
|
|
cmake --build build
|
2023-04-19 02:56:11 -07:00
|
|
|
```
|
|
|
|
|
2023-04-28 01:11:58 -07:00
|
|
|
The plugin will be located at `build/libhy3.so`, and you can load it normally
|
|
|
|
(See [the hyprland wiki](https://wiki.hyprland.org/Plugins/Using-Plugins/#installing--using-plugins) for details.)
|