From dbe62696d62a1cd3e4b05d7e961d9aa3714e6ea6 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Wed, 19 Oct 2022 16:22:42 +0300 Subject: [PATCH] overall formatting --- README.md | 6 +- README.md.save | 10 ++ pages/Configuring/Animations.md | 3 + pages/Configuring/Binds.md | 46 ++++++--- pages/Configuring/Configuring-Hyprland.md | 9 +- pages/Configuring/Dispatchers.md | 98 ++++++++++--------- pages/Configuring/Dwindle-Layout.md | 38 +++---- pages/Configuring/Expanding-functionality.md | 4 +- pages/Configuring/Keywords.md | 35 ++++--- pages/Configuring/Master-Layout.md | 37 +++---- pages/Configuring/Monitors.md | 7 +- pages/Configuring/Uncommon-tips-&-tricks.md | 3 + pages/Configuring/Using-hyprctl.md | 30 ++++-- pages/Configuring/Variables.md | 20 ++-- pages/Configuring/Window-Rules.md | 63 ++++++------ pages/Configuring/XWayland.md | 42 ++++---- .../PR-Guidelines.md | 9 +- pages/Contributing and Debugging/_index.md | 16 +-- pages/Crashes and Bugs/_index.md | 5 +- pages/FAQ/_index.md | 74 ++++++++------ pages/Getting Started/Installation.md | 37 +++---- pages/Getting Started/Quick-start.md | 21 ++-- pages/Home.md | 6 +- pages/IPC/_index.md | 44 +++++---- pages/Nix/_index.md | 36 ++++--- pages/Nvidia/_index.md | 6 +- pages/Useful Utilities/App-Clients.md | 11 +++ pages/Useful Utilities/App-Launchers.md | 2 + pages/Useful Utilities/Color-Pickers.md | 6 +- pages/Useful Utilities/Screen-Sharing.md | 4 +- pages/Useful Utilities/Status-Bars.md | 4 + pages/Useful Utilities/Wallpapers.md | 8 +- pages/Useful Utilities/_index.md | 2 + 33 files changed, 450 insertions(+), 292 deletions(-) create mode 100644 README.md.save diff --git a/README.md b/README.md index 22f47d5..28cfcb2 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ Welcome to the Hyprland Wiki! Here we store the wiki pages. They are automatically updated on the website whenever a change occurs, within a reasonable timeframe. (usually 1–2 minutes) -# Contributing +## Contributing to the Wiki -Feel free to open an issue or a PR. Make sure to clearly state the reason for the change. +Feel free to open an issue or a PR if you feel anything is necessary. +Make sure to clearly state the reason for the changes. If you have questions regarding the wiki, +you should consider joining our [Discord Server]() instead. diff --git a/README.md.save b/README.md.save new file mode 100644 index 0000000..8727c47 --- /dev/null +++ b/README.md.save @@ -0,0 +1,10 @@ +PPPP# Hyprland Wiki + +Welcome to the Hyprland Wiki! Here we store the wiki pages. They are automatically updated on the +website whenever a change occurs, within a reasonable timeframe. (usually 1–2 minutes) + +## Contributing to the Wiki + +Feel free to open an issue or a PR if you feel anything is necessary. +Make sure to clearly state the reason for the changes. If you have questions regarding the wiki, +you should consider joining our [Discord Server]() instead. diff --git a/pages/Configuring/Animations.md b/pages/Configuring/Animations.md index a6bd528..7254aa2 100644 --- a/pages/Configuring/Animations.md +++ b/pages/Configuring/Animations.md @@ -1,4 +1,7 @@ +# Animations + ## Table of contents + {{< toc >}} ## General diff --git a/pages/Configuring/Binds.md b/pages/Configuring/Binds.md index 8524801..5f56848 100644 --- a/pages/Configuring/Binds.md +++ b/pages/Configuring/Binds.md @@ -1,5 +1,7 @@ +# Binds + +## Table of Contents -## Table of contents {{< toc >}} ## Basic @@ -18,14 +20,16 @@ will bind opening firefox to SUPER + SHIFT + Q {{< hint type=tip >}} For binding keys without a modkey, leave it empty: + ```ini bind=,Print,exec,grim ``` + {{< /hint >}} -*For a complete mod list, see [Variables](../Variables/#variable-types).* +_For a complete mod list, see [Variables](../Variables/#variable-types)._ -*The dispatcher list can be found in [Dispatchers](../Dispatchers).* +_The dispatcher list can be found in [Dispatchers](../Dispatchers)._ ## Uncommon syms / binding with a keycode @@ -50,6 +54,7 @@ can also use `xev` or `wev` to find keycodes. ## Misc ### Unbind + You can also unbind with `unbind`, e.g.: ```ini @@ -58,7 +63,12 @@ unbind=SUPER,O May be useful for dynamic keybindings with `hyprctl`. +```sh +hyprctl keyword unbind SUPER,O +``` + ### Mouse buttons + You can also bind mouse buttons, by prefacing the mouse keycode with `mouse:`, for example: @@ -69,6 +79,7 @@ bind=SUPER,mouse:272,exec,amongus will bind it to SUPER + LMB. ### Only modkeys + For binding only modkeys, you need to use the TARGET modmask (with the activating mod) and the `r` flag, e.g.: @@ -77,17 +88,23 @@ bindr=SUPERALT,Alt_L,exec,amongus ``` ### Mouse wheel + You can also bind the mouse wheel with `mouse_up` and `mouse_down`: + ```ini bind=SUPER,mouse_down,workspace,e-1 ``` + (control the reset time with `binds:scroll_event_delay`) ### Switches + Useful for binding e.g. the lid close/open event: + ``` bindl=,switch:[switch name],exec,swaylock ``` + check out your switches in `hyprctl devices`. ## Bind flags @@ -114,6 +131,7 @@ m -> mouse, see below ``` ## Mouse Binds + Mouse binds are binds that heavily rely on a mouse, usually its movement. They will have one less arg, and look for example like this: @@ -124,20 +142,21 @@ bindm=ALT,mouse:272,movewindow this will create a bind with ALT + LMB to move the window with your mouse. -*Available mouse binds*: +_Available mouse binds_: -| Name | Description | -| -----|------------ | -| movewindow | moves the active window | +| Name | Description | +| ------------ | ------------------------- | +| movewindow | moves the active window | | resizewindow | resizes the active window | -*Common mouse buttons' codes:* +_Common mouse buttons' codes:_ + ``` LMB -> 272 RMB -> 273 ``` -*for more, you can of course use `wev` to check.* +_for more, you can of course use `wev` to check._ {{< hint type=tip >}} Mouse binds, despite their name, behave like normal binds. You are free to use @@ -153,10 +172,11 @@ bindr=ALT,Alt_L,exec,amongus ``` ## Global Keybinds + Yes, you heard this right, Hyprland does support global keybinds for ALL apps, including OBS, Discord, Firefox, etc. -See the `pass` dispatcher for keybinds. +See the [`pass` dispatcher](./Dispatchers/#dispatchers) for keybinds. e.g.: @@ -164,9 +184,11 @@ I've set the "Start/Stop Recording" keybind in OBS to SUPER + F10, and I want it to be global. Simple, add + ```ini bind = SUPER,F10,pass,^(com\.obsproject\.Studio)$ ``` + to your config and you're done. `pass` will pass the PRESS and RELEASE events by itself, no need for a `bindr`. @@ -184,7 +206,7 @@ keybind", otherwise passing from a different XWayland app may not work. It works flawlessly with all native Wayland applications though. -*Side note*: **OBS** on Wayland really dislikes keybinds with modifiers. If +_Side note_: **OBS** on Wayland really dislikes keybinds with modifiers. If they don't work, try removing mods and binding them to e.g. F1. Combining this with a submap should yield neat and usable results. {{< /hint >}} @@ -209,7 +231,7 @@ binde=,up,resizeactive,0 -10 binde=,down,resizeactive,0 10 # use reset to go back to the global submap -bind=,escape,submap,reset +bind=,escape,submap,reset # will reset the submap, meaning end the current one and return to the global one submap=reset diff --git a/pages/Configuring/Configuring-Hyprland.md b/pages/Configuring/Configuring-Hyprland.md index cd1fd0f..cf74b7b 100644 --- a/pages/Configuring/Configuring-Hyprland.md +++ b/pages/Configuring/Configuring-Hyprland.md @@ -6,11 +6,12 @@ autogenerated config. By removing the line `autogenerated=1` you'll remove the yellow warning. There is no "reload" keybind. The config is reloaded the moment you save it. +However, some options may require a restart before taking effect. -Start a section with `name {` and end in `}` ***in separate lines!*** +Start a section with `name {` and end in `}` **_in separate lines!_** {{< hint type=important >}} -The default config is *very* barebones. Please refer to this wiki page and the pages +The default config is _very_ barebones. Please refer to this wiki page and the pages linked further down here for full configuration instructions. **Make sure to read the "Variables" page as well**. It covers all the @@ -19,7 +20,7 @@ toggleable / numerical options. # Line style -every config line is a command followed by a value. +Every config line is a command followed by a value. ```ini COMMAND=VALUE @@ -45,7 +46,7 @@ To configure the "options" of Hyprland, animations, styling, etc. see # Advanced configuring -Some keywords (binds, curves, execs, monitors, etc.) arent variables but define +Some keywords (binds, curves, execs, monitors, etc.) are not variables but define special behaviour. See all of them in [Keywords](../Keywords) and the sidebar. diff --git a/pages/Configuring/Dispatchers.md b/pages/Configuring/Dispatchers.md index eed54af..c4dcf16 100644 --- a/pages/Configuring/Dispatchers.md +++ b/pages/Configuring/Dispatchers.md @@ -1,4 +1,7 @@ +# Dispatchers + # Table of contents + {{< toc >}} Please keep in mind some layout-specific dispatchers will be listed in the @@ -6,53 +9,53 @@ layout pages (See the sidebar). ## Parameter explanation -| Param type | Description | -| ---------- | ----------- | -| window | a window. Any of the following: Class regex, `title:` and a title regex, `pid:` and the pid, `address:` and the address | -| workspace | see below. | -| direction | `l` `r` `u` `d` left right up down | -| monitor | One of: direction, ID, name, `current` | -| resizeparams | Pixel delta vec2 (e.g. `10 -10`) or `exact` followed by exact vec2, e.g. `exact 1280 720`) | -| floatdelta | a float value delta, e.g `-0.2` or `+0.2`. | -| workspaceopt | see below. | +| Param type | Description | +| ------------ | ----------------------------------------------------------------------------------------------------------------------- | +| window | a window. Any of the following: Class regex, `title:` and a title regex, `pid:` and the pid, `address:` and the address | +| workspace | see below. | +| direction | `l` `r` `u` `d` left right up down | +| monitor | One of: direction, ID, name, `current` | +| resizeparams | Pixel delta vec2 (e.g. `10 -10`) or `exact` followed by exact vec2, e.g. `exact 1280 720`) | +| floatdelta | a float value delta, e.g `-0.2` or `+0.2`. | +| workspaceopt | see below. | -# Dispatchers: +# Dispatchers -| Dispatcher | Description | Params | -| ---------- | ----------- | ------ | -| exec | executes a shell command | command | -| pass | passes the key (with mods) to a specified window. Can be used as a workaround to global keybinds not working on Wayland. | window | -| killactive | closes (not kills) the active window | none | -| closewindow | closes a specified window | window | -| workspace | changes the workspace | workspace | -| movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window | -| movetoworkspacesilent | same as above, but doesnt switch to the workspace | workspace OR `workspace,window` for a specific window | -| togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window | -| fullscreen | toggles the focused window's fullscreen state | 0 - fullscreen (takes your entire screen), 1 - maximize (keeps gaps and bar(s)) | -| dpms | sets all monitors' DPMS status. Do not use with a keybind directly. | `on` or `off`, for specific monitor add monitor name after a space | -| pseudo | toggles the focused window's pseudo mode | none | -| pin | pins the active window (shown on all workspaces) *note: floating only* | none | -| movefocus | moves the focus in a direction | direction | -| movewindow | moves the active window in a direction or to a monitor | direction or `mon:` and a monitor | -| resizeactive | resizes the active window | resizeparams | -| moveactive | moves the active window | resizeparams | -| resizewindowpixel | resizes a selected window | `resizeparams,window`, e.g. `100 100,^(kitty)$` | -| movewindowpixel | moves a selected window | `resizeparams,window` | -| cyclenext | focuses the next window on a workspace | none (for next) or `prev` (for previous) | -| swapnext | swaps the focused window with the next window on a workspace | none (for next) or `prev` (for previous) | -| focuswindow | focuses the first window matching | window | -| focusmonitor | focuses a monitor | monitor | -| splitratio | changes the split ratio | floatdelta | -| toggleopaque | toggles the current window to always be opaque | none | -| movecursortocorner | moves the cursor to the corner of the active window | direction, 0 - 3, bottom left - 0, bottom right - 1, top right - 2, top left - 3 | -| workspaceopt | toggles a workspace option for the active workspace. | workspaceopt | -| exit | exits the compositor with no questions asked. | none | -| forcerendererreload | forces the renderer to reload all resources and outputs | none | -| movecurrentworkspacetomonitor | Moves the active workspace to a monitor | monitor | -| moveworkspacetomonitor | Moves a workspace to a monitor | workspace and a monitor separated by a space | -| swapactiveworkspaces | Swaps the active workspaces between two monitors | two monitors separated by a space | -| bringactivetotop | Brings the current window to the top of the stack | none | -| togglespecialworkspace | toggles the special workspace on/off | none | +| Dispatcher | Description | Params | +| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- | +| exec | executes a shell command | command | +| pass | passes the key (with mods) to a specified window. Can be used as a workaround to global keybinds not working on Wayland. | window | +| killactive | closes (not kills) the active window | none | +| closewindow | closes a specified window | window | +| workspace | changes the workspace | workspace | +| movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window | +| movetoworkspacesilent | same as above, but doesnt switch to the workspace | workspace OR `workspace,window` for a specific window | +| togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window | +| fullscreen | toggles the focused window's fullscreen state | 0 - fullscreen (takes your entire screen), 1 - maximize (keeps gaps and bar(s)) | +| dpms | sets all monitors' DPMS status. Do not use with a keybind directly. | `on` or `off`, for specific monitor add monitor name after a space | +| pseudo | toggles the focused window's pseudo mode | none | +| pin | pins the active window (shown on all workspaces) _note: floating only_ | none | +| movefocus | moves the focus in a direction | direction | +| movewindow | moves the active window in a direction or to a monitor | direction or `mon:` and a monitor | +| resizeactive | resizes the active window | resizeparams | +| moveactive | moves the active window | resizeparams | +| resizewindowpixel | resizes a selected window | `resizeparams,window`, e.g. `100 100,^(kitty)$` | +| movewindowpixel | moves a selected window | `resizeparams,window` | +| cyclenext | focuses the next window on a workspace | none (for next) or `prev` (for previous) | +| swapnext | swaps the focused window with the next window on a workspace | none (for next) or `prev` (for previous) | +| focuswindow | focuses the first window matching | window | +| focusmonitor | focuses a monitor | monitor | +| splitratio | changes the split ratio | floatdelta | +| toggleopaque | toggles the current window to always be opaque | none | +| movecursortocorner | moves the cursor to the corner of the active window | direction, 0 - 3, bottom left - 0, bottom right - 1, top right - 2, top left - 3 | +| workspaceopt | toggles a workspace option for the active workspace. | workspaceopt | +| exit | exits the compositor with no questions asked. | none | +| forcerendererreload | forces the renderer to reload all resources and outputs | none | +| movecurrentworkspacetomonitor | Moves the active workspace to a monitor | monitor | +| moveworkspacetomonitor | Moves a workspace to a monitor | workspace and a monitor separated by a space | +| swapactiveworkspaces | Swaps the active workspaces between two monitors | two monitors separated by a space | +| bringactivetotop | Brings the current window to the top of the stack | none | +| togglespecialworkspace | toggles the special workspace on/off | none | {{< hint type=warning >}} it is NOT recommended to set DPMS with a keybind directly, as it @@ -61,6 +64,7 @@ might cause undefined behavior. Instead, consider something like ``` bind = MOD,KEY,exec,sleep 1 && hyprctl dispatch dpms off ``` + {{< /hint >}} # Workspaces @@ -93,12 +97,12 @@ workspace that you can toggle on/off on any monitor. {{< hint >}} You cannot have floating windows in the Special workspace. Making a window floating -will send it to the currently active *real* workspace. +will send it to the currently active _real_ workspace. {{< /hint >}} ## Workspace options + ``` allfloat -> makes all new windows floating (also floats/unfloats windows on toggle) allpseudo -> makes all new windows pseudo (also pseudos/unpseudos on toggle) ``` - diff --git a/pages/Configuring/Dwindle-Layout.md b/pages/Configuring/Dwindle-Layout.md index fb11249..f6bbe3b 100644 --- a/pages/Configuring/Dwindle-Layout.md +++ b/pages/Configuring/Dwindle-Layout.md @@ -1,7 +1,9 @@ +# Dwindle Layout + Dwindle is a BSPWM-like layout, where every window on a workspace is a member of a binary tree. -# Quirks +## Quirks Dwindle splits are NOT PERMANENT. The split is determined dynamically with the W/H ratio of the parent node. If W > H, it's side-by-side. If H > W, it's @@ -28,26 +30,26 @@ Closing windows within the groups is allowed, however, since the groups in the backend are still a tree, if you remove a node that makes the original node container get removed, the group will be broken back to its dwindle form. -# Config +## Config category name: `dwindle` -| name | description | type | default | -|---|---|---|---|---| -| pseudotile | enable pseudotiling. Pseudotiled windows retain their floating size when tiled. | bool | false | -| col.group_border | inactive (out of focus) group border color | color | 0x66777700 | -| col.group_border_active | active group border color | color | 0x66ffff00 | -| force_split | 0 -> split follows mouse, 1 -> always split to the left (new = left or top) 2 -> always split to the right (new = right or bottom) | int | 0 | -| preserve_split | if enabled, the split (side/top) will not change regardless of what happens to the container. | bool | false | -| special_scale_factor | 0 - 1 -> specifies the scale factor of windows on the special workspace | float | 0.8 | -| split_width_multiplier | specifies the auto-split width multiplier | float | 1.0 | -| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false | -| use_active_for_splits | whether to prefer the active window or the mouse position for splits | bool | true | +| name | description | type | default | +| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----- | ---------- | +| pseudotile | enable pseudotiling. Pseudotiled windows retain their floating size when tiled. | bool | false | +| col.group_border | inactive (out of focus) group border color | color | 0x66777700 | +| col.group_border_active | active group border color | color | 0x66ffff00 | +| force_split | 0 -> split follows mouse, 1 -> always split to the left (new = left or top) 2 -> always split to the right (new = right or bottom) | int | 0 | +| preserve_split | if enabled, the split (side/top) will not change regardless of what happens to the container. | bool | false | +| special_scale_factor | 0 - 1 -> specifies the scale factor of windows on the special workspace | float | 0.8 | +| split_width_multiplier | specifies the auto-split width multiplier | float | 1.0 | +| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false | +| use_active_for_splits | whether to prefer the active window or the mouse position for splits | bool | true | ## Bind Dispatchers -| dispatcher | description | params | -|---|---|---| -| togglegroup | toggles the current window and its siblings (recursively) into a group | none | -| changegroupactive | switches to the next window in a group. | b - back, f - forward. | -| togglesplit | toggles the split (top/side) of the current window | none | +| dispatcher | description | params | +| ----------------- | ---------------------------------------------------------------------- | ---------------------- | +| togglegroup | toggles the current window and its siblings (recursively) into a group | none | +| changegroupactive | switches to the next window in a group. | b - back, f - forward. | +| togglesplit | toggles the split (top/side) of the current window | none | diff --git a/pages/Configuring/Expanding-functionality.md b/pages/Configuring/Expanding-functionality.md index 680250f..3f1e021 100644 --- a/pages/Configuring/Expanding-functionality.md +++ b/pages/Configuring/Expanding-functionality.md @@ -1,3 +1,5 @@ +# Expanding Functionality + Hyprland exposes two powerful sockets for you to use. The first, socket1, can be fully controlled with `hyprctl`, see its usage @@ -12,7 +14,7 @@ to react to different events. See its description This bash script will change the outer gaps to 20 if the currently focused monitor is DP-1, and 30 otherwise. -```bash +```sh #!/bin/sh function handle { diff --git a/pages/Configuring/Keywords.md b/pages/Configuring/Keywords.md index f91c169..ddb8a8b 100644 --- a/pages/Configuring/Keywords.md +++ b/pages/Configuring/Keywords.md @@ -1,10 +1,12 @@ +# Keywords + This page documents all of the more advanced config options. {{< hint type=important >}} Please remember, that for ALL arguments separated by a comma, if you want to -leave one of them empty, you cannot reduce the number of commas, *unless told -otherwise in a specific section*: +leave one of them empty, you cannot reduce the number of commas, _unless told +otherwise in a specific section_: ```ini three_param_keyword = A, B, C # OK @@ -18,17 +20,18 @@ three_param_keyword = A, B, # OK {{< /hint >}} -# Table of contents +## Table of contents + {{< toc format=html >}} -# Executing +## Executing you can execute a shell script on startup of the compositor or on each time it's reloaded. {{< hint type=info >}} -**Note:** The issue below was fixed in upstream. (since *after* v0.15.0beta) +**Note:** The issue below was fixed in upstream. (since _after_ v0.15.0beta) There currently is a bug with the exec that makes the executed app unable to die if killed, use `SIGKILL` (e.g. `killall name -9`) or launch from a @@ -40,8 +43,7 @@ script (`exec-once=~/myscript.sh` and do `myapp &` in the script) `exec=command` will execute on each reload - -# Defining variables +## Defining variables You can define your own custom variables like this: @@ -67,7 +69,7 @@ You ARE allowed to do this: col.active_border=ff$MyRedValue1111 ``` -# Sourcing (multi-file) +## Sourcing (multi-file) Use the `source` keyword to source another file. @@ -82,14 +84,14 @@ And Hyprland will enter that file and parse it like a Hyprland config. Please note it's LINEAR. Meaning lines above the `source=` will be parsed first, then lines inside `~/.config/hypr/myColors.conf`, then lines below. -# Gestures +## Gestures Use something like [libinput-gestures](https://github.com/bulletmark/libinput-gestures), with `hyprctl` if you want to expand Hyprland's gestures beyond what's offered in [Variables](../Variables). -# Per-device input configs +## Per-device input configs Per-device config options will overwrite your options set in the `input` section. It's worth noting that ONLY values explicitly changed will be @@ -111,6 +113,7 @@ Inside of it, put your config options. All options from the `input` category force_no_accel, follow_mouse, float_switch_override_focus Properties that change names: + ```plain touchdevice:transform -> touch_transform touchdevice:output -> touch_output @@ -126,26 +129,28 @@ device:ROYUAN Akko Multi-modes Keyboard-B { } ``` -*remember about the space after the end of the device's name (before the `{`)!* +_remember about the space after the end of the device's name (before the `{`)!_ {{< hint type=tip >}} With hyprctl, the category's spaces get turned into `-`, and everything is lowercase. So, for `hyprctl` calls, do for example: + ```sh hyprctl keyword device:royuan-akko-multi-modes-keyboard-b:kb_layout us ``` + {{< /hint >}} -# Wallpapers +## Wallpapers The hyprland background you see when you first start Hyprland is **NOT A WALLPAPER**, it's the default image rendered at the bottom of the render stack. To set a wallpaper, use a wallpaper utility like [hyprpaper](https://github.com/hyprwm/hyprpaper) or -[swaybg](https://github.com/swaywm/swaybg). +[swaybg](https://github.com/swaywm/swaybg). More can be found in [Useful Utilities](../Useful-Utilities). -# Blurring layerSurfaces +## Blurring layerSurfaces LayerSurfaces are not windows. These are for example: Your wallpapers, notification overlays, bars, etc. @@ -159,7 +164,7 @@ blurls=NAMESPACE where `NAMESPACE` is the namespace of the layerSurface. (You can get it from `hyprctl layers`) -to remove a namespace from being blurred (useful in dynamic situations) use: +To remove a namespace from being blurred (useful in dynamic situations) use: ```ini blurls=remove,NAMESPACE diff --git a/pages/Configuring/Master-Layout.md b/pages/Configuring/Master-Layout.md index 0116d60..b9e54aa 100644 --- a/pages/Configuring/Master-Layout.md +++ b/pages/Configuring/Master-Layout.md @@ -1,39 +1,41 @@ +# Master Layout + The master layout makes one window be the "master", taking the left part of the screen, and tiles the rest on the right. -# Quirks +## Quirks The right, "slave" windows will always be split uniformly. You cannot change their size. ![master1](https://user-images.githubusercontent.com/43317083/179357849-321f042c-f536-44b3-9e6f-371df5321836.gif) -You can, however, resize the master window. +However, you can resize the master window. ![master2](https://user-images.githubusercontent.com/43317083/179357863-928b0b5a-ff10-4edc-aa76-3ff88c59c980.gif) -# Config +## Config -*category name `master`* +_category name `master`_ -| name | description | type | default | -|---|---|---|---|---| -| special_scale_factor | (0.0 - 1.0) the scale of the special workspace windows | float | 0.8 | -| new_is_master | whether a newly open window should replace the master or join the slaves. | bool | false | -| new_on_top | whether a newly open window should be on the top of the stack | bool | false | -| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false | +| name | description | type | default | +| -------------------- | ------------------------------------------------------------------------------------ | ----- | ------- | +| special_scale_factor | (0.0 - 1.0) the scale of the special workspace windows | float | 0.8 | +| new_is_master | whether a newly open window should replace the master or join the slaves. | bool | false | +| new_on_top | whether a newly open window should be on the top of the stack | bool | false | +| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false | ## Dispatchers `layoutmsg` params: -| param | description | -| --- | --- | -| swapwithmaster | swaps the current window with master | -| cyclenext | focuses the next window respecting the layout | -| cycleprev | focuses the previous window respecting the layout | -| swapnext | swaps the focused window with the next window respecting the layout | -| swapprev | swaps the focused window with the previous window respecting the layout | +| param | description | +| -------------- | ----------------------------------------------------------------------- | +| swapwithmaster | swaps the current window with master | +| cyclenext | focuses the next window respecting the layout | +| cycleprev | focuses the previous window respecting the layout | +| swapnext | swaps the focused window with the next window respecting the layout | +| swapprev | swaps the focused window with the previous window respecting the layout | {{< hint type=info >}} example usage: @@ -41,4 +43,5 @@ example usage: ```ini bind=MOD,KEY,layoutmsg,cyclenext ``` + {{< /hint >}} diff --git a/pages/Configuring/Monitors.md b/pages/Configuring/Monitors.md index 067332b..d6619c7 100644 --- a/pages/Configuring/Monitors.md +++ b/pages/Configuring/Monitors.md @@ -1,3 +1,5 @@ +# Monitors + ## Table of contents {{< toc format=html >}} @@ -5,6 +7,7 @@ ## General The general config of a monitor looks like this + ```ini monitor=name,resolution,offset,scale ``` @@ -106,7 +109,7 @@ will occur on non-matching resolutions. {{< hint type=important >}} The monitor transform and workspace keywords depend on a monitor rule set -specifically for the targeted monitor, and ***MUST*** be after it. +specifically for the targeted monitor, and **_MUST_** be after it. {{< /hint >}} @@ -146,11 +149,13 @@ flipped + 270 degrees -> 7 A workspace can be bound to a monitor, meaning by default it will ALWAYS open on the selected monitor. You can do this with + ```ini wsbind=WORKSPACE,MONITOR ``` for example: + ```ini wsbind=5,DP-1 wsbind=name:secret,DP-2 diff --git a/pages/Configuring/Uncommon-tips-&-tricks.md b/pages/Configuring/Uncommon-tips-&-tricks.md index 1de8f06..0ae8d44 100644 --- a/pages/Configuring/Uncommon-tips-&-tricks.md +++ b/pages/Configuring/Uncommon-tips-&-tricks.md @@ -1,6 +1,9 @@ +# Uncommon Tips & Tricks + ## Switchable keyboard layouts The easiest way to accomplish this is to set this using XKB settings, for example: + ``` input { kb_layout = us,pl diff --git a/pages/Configuring/Using-hyprctl.md b/pages/Configuring/Using-hyprctl.md index 2fe9c53..1bc15b9 100644 --- a/pages/Configuring/Using-hyprctl.md +++ b/pages/Configuring/Using-hyprctl.md @@ -12,7 +12,7 @@ If it's not, go to the repo root and `/hyprctl`. Issue a `make all` and then {{< hint type=warning >}} -*hyprctl* calls will be dispatched by the compositor *synchronously*, +_hyprctl_ calls will be dispatched by the compositor _synchronously_, meaning any spam of the utility will cause slowdowns. It's recommended to use `--batch` for many control calls, and limiting the amount of info calls. @@ -31,7 +31,7 @@ An arg has to be present, for dispatchers without parameters it can be anything. Examples: -``` +```sh hyprctl dispatch exec kitty hyprctl dispatch pseudo x @@ -39,13 +39,15 @@ hyprctl dispatch pseudo x Returns: `ok` on success, an error message on fail. +See [Dispatchers](./Dispatchers) for a list of dispatchers. + ### Keyword issue a `keyword` to call a config keyword dynamically. Examples: -``` +```sh hyprctl keyword bind SUPER,O,pseudo hyprctl keyword general:border_size 10 @@ -73,13 +75,13 @@ params: theme and size e.g.: -``` +```sh hyprctl setcursor Bibata-Modern-Classic 24 ``` ## Info -``` +```sh version - prints the hyprland version, meaning flags, commit and branch of build. monitors - lists all the outputs with their properties workspaces - lists all workspaces with their properties @@ -91,13 +93,27 @@ splash - prints the current random splash getoption [option] - gets the config option status (values) ``` +For the `getoption` command, you need to pass the command in the following format: + +```sh +hyprctl getoption section:option +``` + +e.g. + +```sh +hyprctl getoption general:border_size +``` + +See [Variables](./Variables) for section and options you can use. + # Batch You can also use `--batch` to specify a batch of commands to execute e.g. -``` +```sh hyprctl --batch "keyword general:border_size 2 ; keyword general:gaps_out 20" ``` @@ -107,7 +123,7 @@ hyprctl --batch "keyword general:border_size 2 ; keyword general:gaps_out 20" You can specify flags for the request like this: -``` +```sh hyprctl -j monitors ``` diff --git a/pages/Configuring/Variables.md b/pages/Configuring/Variables.md index 9de7f7f..3b23dab 100644 --- a/pages/Configuring/Variables.md +++ b/pages/Configuring/Variables.md @@ -1,13 +1,14 @@ -For basic syntax info, see -[Configuring Hyprland](../Configuring-Hyprland). +# Variables + +For basic syntax info, see [Configuring Hyprland](../Configuring-Hyprland). This page documents all the "options" of Hyprland. For binds, monitors, animations, etc. see the sidebar. For anything else, see [Keywords](../Keywords). Please keep in mind some options that are layout-specific will be documented in -the layout pages and not here. (See the Sidebar) +the layout pages and not here. (See the Sidebar for Dwindle and Master layouts) -# Variable types +## Variable types | type | description | |---|---| @@ -40,9 +41,9 @@ SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5 {{< /hint >}} -# Sections +## Sections -## General +### General | name | description | type | default | |---|---|---|---|---| @@ -63,7 +64,8 @@ SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5 Prefer using `input:sensitivity` over `general:sensitivity` to avoid bugs, especially with Wine/Proton apps. {{< /hint >}} -## Decoration +### Decoration + | name | description | type | default | |---|---|---|---|---| | rounding | rounded corners' radius (in layout px) | int | 0 | @@ -103,7 +105,7 @@ Using `blur_new_optimizations` with an animated wallpaper may actually increase {{< /hint >}} -## Animations +### Animations | name | description | type | default | |---|---|---|---|---| @@ -115,7 +117,7 @@ _[More about Animations](../Animations)._ {{< /hint >}} -## Input +### Input | name | description | type | default | |---|---|---|---|---| diff --git a/pages/Configuring/Window-Rules.md b/pages/Configuring/Window-Rules.md index 7584046..eac0342 100644 --- a/pages/Configuring/Window-Rules.md +++ b/pages/Configuring/Window-Rules.md @@ -1,4 +1,7 @@ +# Window Rules + ## Table of contents + {{< toc >}} ## Window Rules V1 @@ -27,17 +30,19 @@ windowrule=move 0 0,title:^(Firefox)(.*)$ ## Window Rules V2 -In order to allow more flexible rules, while also not breaking compatibility with the above -rule system, window rules v2 were implemented. +In order to allow more flexible rules, while retaining compatibility with the above +rule system, window rules V2 were implemented. In V2, you are allowed to match multiple variables. the `RULE` field is unchanged, but in the `WINDOW` field, you can put regexes for multiple values like so: + ```ini windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ ``` For now, the supported fields are: + ```ini class - class regex title - title regex @@ -45,34 +50,35 @@ xwayland - 0/1 floating - 0/1 ``` -Keep in mind you do *not* need to define all of them, but you need to define at least one. +Keep in mind you do _not_ need to define all of them, but you need to define at least one. ## Rules -| Rule | Description | -| ---- | ----------- | -| float | floats a window | -| tile | tiles a window | -| fullscreen | fullscreens a window | -| move \[x\] \[y\] | moves a floating window (x,y -> int or %, e.g. 20% or 100) | -| size \[x\] \[y\] | resizes a floating window (x,y -> int or %, e.g. 20% or 100) | -| minsize \[x\] \[y\] | sets the minimum size on creation (x,y -> int) | -| maxsize \[x\] \[y\] | sets the maximum size on creation (x,y -> int) | -| center | if the window is floating, will center it on the monitor | -| pseudo | pseudotiles a window | -| monitor \[id\] | sets the monitor on which a window should open | -| workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [dispatchers->workspaces](../Dispatchers#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. | -| opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an opacity OR `float float` -> sets activeopacity and inactiveopacity respectively | -| opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) | -| animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. | -| rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. | -| noblur | disables blur for the window | -| nofocus | disables focus to the window | -| forceinput | forces an XWayland window to receive input, even if it requests not to do so. (Might fix issues like e.g. Game Launchers not receiving focus for some reason) | -| pin | pins the window *note: floating only* | -| noanim | disables the animations for the window | +| Rule | Description | +| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| float | floats a window | +| tile | tiles a window | +| fullscreen | fullscreens a window | +| move \[x\] \[y\] | moves a floating window (x,y -> int or %, e.g. 20% or 100) | +| size \[x\] \[y\] | resizes a floating window (x,y -> int or %, e.g. 20% or 100) | +| minsize \[x\] \[y\] | sets the minimum size on creation (x,y -> int) | +| maxsize \[x\] \[y\] | sets the maximum size on creation (x,y -> int) | +| center | if the window is floating, will center it on the monitor | +| pseudo | pseudotiles a window | +| monitor \[id\] | sets the monitor on which a window should open | +| workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [dispatchers->workspaces](../Dispatchers#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. | +| opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an opacity OR `float float` -> sets activeopacity and inactiveopacity respectively | +| opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) | +| animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. | +| rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. | +| noblur | disables blur for the window | +| nofocus | disables focus to the window | +| forceinput | forces an XWayland window to receive input, even if it requests not to do so. (Might fix issues like e.g. Game Launchers not receiving focus for some reason) | +| pin | pins the window _note: floating only_ | +| noanim | disables the animations for the window | + +_Examples_: -*Examples*: ```ini windowrule = move 100 100,^(kitty)$ windowrule = animation popin,^(kitty)$ @@ -81,11 +87,10 @@ windowrule = noblur,^(firefox)$ {{< hint type=tip >}} -Opacity is always a PRODUCT of all opacities. E.g. active_opacity to +Opacity is _always_ a PRODUCT of all opacities. E.g. active_opacity to 0.5 and windowrule opacity to 0.5 will result in a total opacity 0.25. You are allowed to set opacities over 1, but any opacity product over 1 will cause -graphical glitches. E.g. 0.5 * 2 = 1, and it will be fine, 0.5 * 4 will cause +graphical glitches. E.g. 0.5 _2 = 1, and it will be fine, 0.5_ 4 will cause graphical glitches. {{< /hint >}} - diff --git a/pages/Configuring/XWayland.md b/pages/Configuring/XWayland.md index 0a4ef03..118e652 100644 --- a/pages/Configuring/XWayland.md +++ b/pages/Configuring/XWayland.md @@ -1,9 +1,11 @@ +# XWayland + XWayland is the bridging mechanism between legacy Xorg programs and Wayland compositors. -# HiDPI XWayland +## HiDPI XWayland -Currently, XWayland on HiDPI screens looks pixelated/blurry, due to Xorg's +Currently XWayland on HiDPI screens looks pixelated/blurry, due to Xorg's inability to scale. There are attempts to add a standard scaling mechanism, such as [MR 733](https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/733). @@ -17,25 +19,29 @@ and [Pacman patching](https://wiki.archlinux.org/title/Patching_packages). {{< /hint >}} 1. Have the latest `xwayland` package patched with at least -[the HiDPI patch](https://github.com/hyprwm/Hyprland/blob/main/nix/xwayland-hidpi.patch) -(based on the MR's implementation, but updated). + [the HiDPI patch](https://github.com/hyprwm/Hyprland/blob/main/nix/xwayland-hidpi.patch) + (based on the MR's implementation, but updated). 2. Make sure you have the required Hyprland `wlroots`, patched with -[the HiDPI xwayland patch](https://gitlab.freedesktop.org/lilydjwg/wlroots/-/commit/6c5ffcd1fee9e44780a6a8792f74ecfbe24a1ca7) -and [this commit](https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af) -**reverted**. This is important, as not reverting it will make opening XWayland -programs crash Hyprland. + [the HiDPI xwayland patch](https://gitlab.freedesktop.org/lilydjwg/wlroots/-/commit/6c5ffcd1fee9e44780a6a8792f74ecfbe24a1ca7) + and [this commit](https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af) + **reverted**. This is important, as not reverting it will make opening XWayland + programs crash Hyprland. 3. Add this line to your configuration: - ```ini - exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2 - ``` - and configure toolkits to scale using their specific mechanisms, such as - ```sh - export GDK_SCALE=2 - export XCURSOR_SIZE=32 - ``` - {{< hint >}} -The GDK_SCALE variable won't conflict with wayland-native GTK programs. + ```ini + exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2 + ``` + + and configure toolkits to scale using their specific mechanisms, such as + + ```sh + export GDK_SCALE=2 + export XCURSOR_SIZE=32 + ``` + + {{< hint >}} + + The GDK_SCALE variable won't conflict with wayland-native GTK programs. {{< /hint >}} diff --git a/pages/Contributing and Debugging/PR-Guidelines.md b/pages/Contributing and Debugging/PR-Guidelines.md index 08a320b..954c95d 100644 --- a/pages/Contributing and Debugging/PR-Guidelines.md +++ b/pages/Contributing and Debugging/PR-Guidelines.md @@ -1,12 +1,15 @@ +# Pull Request Guidelines + ## PR Requirements - Clean, not hacky code -- Described changes and *why* they were there +- Described changes and _why_ they were there - Following the style (see below) ## Code Style Hyprland's code style: + ```cpp void myFunction(int arg) { @@ -58,7 +61,9 @@ public: > Why is the config variable getting so weird? Every variable from the config needs to be found in a hashmap. To limit the amount of hashmap searches, getting a config option looks like this: + ```cpp static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue; ``` -Since the hashmap *cannot* be mutated during runtime, this pointer will always be valid, and will not require hashmap lookups every single time it's read. \ No newline at end of file + +Since the hashmap _cannot_ be mutated during runtime, this pointer will always be valid, and will not require hashmap lookups every single time it's read. diff --git a/pages/Contributing and Debugging/_index.md b/pages/Contributing and Debugging/_index.md index d3590ef..00bb57a 100644 --- a/pages/Contributing and Debugging/_index.md +++ b/pages/Contributing and Debugging/_index.md @@ -5,21 +5,21 @@ PR, code styling and code FAQs are [here](./PR-Guidelines) For issues, please see [the guidelines](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md) -# Build in debug mode +## Build in debug mode -## Required packages +### Required packages `xcb` stuff, check with your local package provider. `wayland` - of course. -*Arch*: +_Arch_: `yay -S gdb ninja gcc cmake libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd` (If any are missing hmu) -## Recommended, CMake +### Recommended, CMake Install the VSCode C/C++ and CMake Tools extensions and use that. @@ -29,7 +29,7 @@ that you can copy to your .vscode/ folder in the repo root. With that, you can build in debug, go to the debugging tab and hit `(gdb) Launch`. -## Custom, CLI +### Custom, CLI `make debug` @@ -48,13 +48,13 @@ meaning you'll be unable to build any other wlroots compositor without a wlroots reinstall. {{< /hint >}} -# Running +## Running when running Hyprland in Debug mode, the config is `~/.config/hypr/hyprlandd.conf` and the logs can be found at `/tmp/hypr/[INSTANCE SIGNATURE]/hyprlandd.conf`. -# Logs, dumps, etc. +## Logs, dumps, etc You can use the logs and the GDB debugger, but running Hyprland in debug compile as a driver and using it for a while might give more insight to the more random @@ -71,7 +71,7 @@ watch -n 0.1 "cat /tmp/hypr/$(echo HYPRLAND_INSTANCE_SIGNATURE)/hyprland.log | g for live logs. (replace `hyprland` with `hyprlandd` for debug builds) -# Nesting Hyprland +## Nesting Hyprland Hyprland can run nested in a window. For that, make sure you did the following: diff --git a/pages/Crashes and Bugs/_index.md b/pages/Crashes and Bugs/_index.md index 3ee131b..71b6f7b 100644 --- a/pages/Crashes and Bugs/_index.md +++ b/pages/Crashes and Bugs/_index.md @@ -1,3 +1,5 @@ +# Crashes & Bugs + ## Getting the log If you are in a TTY, and the hyprland session that crashed was the last one you @@ -37,8 +39,7 @@ Report an issue on GitHub or on the Discord server. ## Bugs -First of all, ***READ THE -[FAQ PAGE](../FAQ)*** +First of all, **_READ THE [FAQ PAGE](../FAQ)_** If your bug is not listed there, you can ask on the Discord server or open an issue on GitHub. diff --git a/pages/FAQ/_index.md b/pages/FAQ/_index.md index d32caa8..9793f22 100644 --- a/pages/FAQ/_index.md +++ b/pages/FAQ/_index.md @@ -1,7 +1,8 @@ -  +# Frequently Asked Questions + {{< toc format=html >}} -### Nothing renders / screen is empty / crash on opening first app +## Nothing renders / screen is empty / crash on opening first app Possible causes: @@ -10,14 +11,14 @@ Possible causes: Use something like `qt5ct` (QT) and `lxappearance` (GTK) (\*for GTK you can also set up themes with envvars) to set up your themes. -> Your PC is very, very old. +> Your PC is very, _very_ old. In that case, see the [Installation Page](../../Getting-Started/Installation) and try compiling with LEGACY_RENDERER -*For more info about bugs and crashes, see this* -*[wiki page](../../Crashes-and-Bugs)* +_For more info about bugs and crashes, see this_ +_[wiki page](../../Crashes-and-Bugs)_ ### Me cursor no render? @@ -34,19 +35,19 @@ do much about it other than wait for the wlroots devs to fix it: For Nvidia graphics - unfortunately, it's a wlroots issue as well, most likely due to Nvidia's lack of support and proprietary drivers. -There is a way to fix it that *might* work for you though: +There is a way to fix it that _might_ work for you though: -**Option 1:** Use *only* the external monitor +**Option 1:** Use _only_ the external monitor By using `WLR_DRM_DEVICES=/dev/dri/card1` (or `card0`) you can force Hyprland to use only your dGPU, meaning your laptop's screen will be gone but your external one will work. **Option 2:** Use all outputs, at the cost of battery life. -By switching your laptop to only use the dGPU in the BIOS, you *might* be able to get everything to work, +By switching your laptop to only use the dGPU in the BIOS, you _might_ be able to get everything to work, at the cost of high battery usage. -*Please note these are highly model-specific and might or might not work. If they don't, you're unfortunately out of luck.* +_Please note these are highly model-specific and might or might not work. If they don't, you're unfortunately out of luck._ You might try a USB-C to hdmi adapter though, maybe that could route the external monitor through the iGPU. @@ -61,7 +62,9 @@ GitHub pages). For a more complete utility, try our own [Grimblast](https://github.com/hyprwm/contrib). -### Screenshare / OBS no worky! +For recording videos, wf-recorder could be used. + +### Screenshare / OBS no worky Check [Screensharing](../Useful-Utilities/Screen-Sharing). @@ -73,7 +76,7 @@ See [Wallpapers](../Useful-Utilities/Wallpapers). You did the below, unknowingly. -### My games work poorly, especially proton ones! +### My games work poorly, especially proton ones Use `gamescope`, tends to fix any and all issues with wayland/Hyprland. @@ -87,7 +90,7 @@ turning off the blur and animations. You probably forgot to turn on `decoration:blur_new_optimizations`. Thank me later. -### My monitor no worky! +### My monitor no worky Try changing the mode in your config. If your preferred one doesn't work, try a lower one. A good way to list all modes is to get `wlr-randr` and do a @@ -95,8 +98,8 @@ lower one. A good way to list all modes is to get `wlr-randr` and do a ### How do I get a coredump? -*These instructions are ONLY for systemd. If you use anything else, you should -know what you're doing.* +_These instructions are ONLY for systemd. If you use anything else, you should +know what you're doing._ Launch `coredumpctl` in a terminal. Press END on the keyboard to go to the end. Note the **last** (the one furthest to the bottom) crash that has @@ -107,8 +110,12 @@ as a file. ### How do I update? -open a terminal where you cloned the repo. -`git pull && sudo make clear && sudo make install` +Open a terminal where you cloned the repo. +`git pull && sudo make clear && sudo make cleaninstall` + +If you are using the AUR (hyprland-git) package, you +will need to cleanbuild to update the package. Paru +has been problematic with updating before, use Yay. ### Waybar popups render behind the windows?? @@ -136,20 +143,20 @@ all good! If it still doesn't work... -### GTK Settings no work / whatever! +### GTK Settings no work / whatever [https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland](https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland) -### My \[program name\] is freezing! +### My \[program name\] is freezing Make sure you have a notification daemon running, for example `dunst`. Autostart it with the `exec-once` keyword. -### I want to use Waybar, but the workspaces don't work! +### I want to use Waybar, but the workspaces don't work Check [Status bars](../Useful-Utilities/Status-Bars). -### Waybar doesn't show the active workspace! +### Waybar doesn't show the active workspace Use the style for `#workspaces button.active` @@ -227,24 +234,27 @@ Please note this requires `socat` to be installed. Use [Open Tablet Driver](https://github.com/OpenTabletDriver/OpenTabletDriver) to configure your tablet. In the future it will be supported in the config. -Until then, OTD. +Until then, OTD is the way to go. ### Some of my apps take a really long time to open...? -*~/.config/hypr/hyprland.conf* +_~/.config/hypr/hyprland.conf_ ```ini exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP ``` + and + ```ini exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP ``` -Make sure that your portals launch *after* this gets executed. For some people, +Make sure that your portals launch _after_ this gets executed. For some people, they might launch before that has happened. In such cases, a script like this: + ```sh #!/bin/bash sleep 4 @@ -254,11 +264,12 @@ killall xdg-desktop-portal sleep 4 /usr/lib/xdg-desktop-portal & ``` + launched with `exec-once` should fix all issues. Adjust the sleep durations to taste. -### My cursor in QT apps is too big! +### My cursor in QT apps is too big -The QT cursor size can be fixed by setting the envvar `XCURSOR_SIZE=24`. You +Oh no! Anyway, the QT cursor size can be fixed by setting the envvar `XCURSOR_SIZE=24`. You should probably add it to your exported envvars. ### How do I export envvars for Hyprland? @@ -274,27 +285,28 @@ exec Hyprland and launch that. For Display Manager users, you can replace the `exec` entry in -the `.desktop` file to point to your script. +the `.desktop` file to point to your script. You are recommended +to use absolute paths, such as `/home/username/Script` instead of `~/Script` -### I get random white flashes! +### I get random white flashes Try disabling VFR with `misc:no_vfr=1`. ### How do I make Hyprland draw as little power as possible on my laptop? -I assume you already have `damage_tracking` on full. If you don't, do it. It's +I assume you already have `damage_tracking` on full. If you don't, change it. It's heavily advised to use `full` regardless of anything. Optimization options: -*feel free to ignore any that you find causing issues* +_feel free to ignore any that you find causing issues_ `decoration:blur_new_optimizations = true` `decoration:blur = false` -`decoration:drop_shadow = false` +`decoration:drop_shadow = false` `misc:no_vfr = false` -*possibly* `misc:disable_autoreload = true` +_possibly_ `misc:disable_autoreload = true` diff --git a/pages/Getting Started/Installation.md b/pages/Getting Started/Installation.md index 873a62e..cab856e 100644 --- a/pages/Getting Started/Installation.md +++ b/pages/Getting Started/Installation.md @@ -5,14 +5,14 @@ Hyprland. If you want to try Hyprland on Nvidia regardless (many people have reported successes), follow the [Nvidia page](../../Nvidia) after installing Hyprland. -### Distros +## Distros Arch, NixOS and openSUSE Tumbleweed are very supported. For any other distro (not based on Arch/Nix) you might have varying amounts of success. However, since Hyprland is extremely bleeding-edge, distros like Pop!\_OS, Ubuntu, etc. might have **major** issues running Hyprland. -# Installation +## Installation Installing Hyprland is very easy. Either you install it from your local package provider (if they provide pkgs for Hyprland) or you install/build it yourself. @@ -24,21 +24,20 @@ consider updating your packages with `yay -Syu --devel`, or your other preferred package manager. {{< /hint >}} -## Packages +### Packages **WARNING:** I do not maintain any packages. If they are broken, try building from source first. {{< tabs "uniqueid" >}} -{{< tab "Arch Linux" >}} *If you're on Arch Linux, I* ***heavily*** *recommend -you use the AUR.* +{{< tab "Arch Linux" >}} _If you're on Arch Linux, I_ **_heavily_** _recommend +you use the AUR._ ```plain hyprland-git - compiles from latest source hyprland - compiles from latest release source hyprland-bin - compiled latest release, prone to breaking on ARM devices as Hyprland binary is compiled for x86 - ``` {{< /tab >}} @@ -56,7 +55,7 @@ opi hyprland Alternatively, you can also follow the instructions under ["Manual (Manual Build)"](#manual-manual-build) to build Hyprland yourself. -Note: *Hyprland is not available for Leap, as most libraries (and compiler) that Hyprland needs are too old.* +Note: _Hyprland is not available for Leap, as most libraries (and compiler) that Hyprland needs are too old._ {{< /tab >}} {{< tab "Fedora" >}}{{< /tab >}} {{< tab "Gentoo" >}} @@ -71,7 +70,7 @@ emerge --ask --verbose hyprland {{< /tabs >}} -## Manual (Releases) +### Manual (Releases) Download the most recent release. @@ -89,17 +88,17 @@ the example config is in `examples/Hyprland.conf`. For updating later on, you can overwrite the binaries (hyprctl, hyprland and libwlroots), you don't need to update anything else. -## Manual (Manual Build) +### Manual (Manual Build) -*Arch dependencies*: +_Arch dependencies_: ```plain yay -S gdb ninja gcc cmake libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd ``` -(If any are missing hmu) +_(If any are missing, hmu)_ -*openSUSE dependencies*: +_openSUSE dependencies_: ```sh zypper in gcc-c++ git meson cmake "pkgconfig(cairo)" "pkgconfig(egl)" "pkgconfig(gbm)" "pkgconfig(gl)" "pkgconfig(glesv2)" "pkgconfig(libdrm)" "pkgconfig(libinput)" "pkgconfig(libseat)" "pkgconfig(libudev)" "pkgconfig(pango)" "pkgconfig(pangocairo)" "pkgconfig(pixman-1)" "pkgconfig(vulkan)" "pkgconfig(wayland-client)" "pkgconfig(wayland-protocols)" "pkgconfig(wayland-scanner)" "pkgconfig(wayland-server)" "pkgconfig(xcb)" "pkgconfig(xcb-icccm)" "pkgconfig(xcb-renderutil)" "pkgconfig(xkbcommon)" "pkgconfig(xwayland)" glslang-devel Mesa-libGLESv3-devel "pkgconfig(xcb-errors)" @@ -119,13 +118,15 @@ that (`gcc>=12.1.0` or `clang>=15`) ```Plain git clone --recursive https://github.com/hyprwm/Hyprland cd Hyprland -sudo make install +sudo make install ``` -Do note that `sudo make install` will copy the example .desktop file to `/usr/share/wayland-sessions/` directory, -promptly overriding the existent .desktop file from previous installations. +Do note that `sudo make install` will copy the example .desktop file to +`/usr/share/wayland-sessions/` directory, promptly overriding the existent +.desktop file from previous installations. -It's probably a good idea to run `sudo make cleaninstall` to update Hyprland later on, as it does not overwrite the desktop file. +It's probably a good idea to run `sudo make cleaninstall` to update Hyprland later on, +as it will not overwrite the desktop file. ### Meson @@ -152,7 +153,7 @@ for legacy renderer: sudo make clear && sudo make config && make legacyrenderer && sudo cp ./build/Hyprland /usr/bin && sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions ``` -*please note the legacy renderer may not support some graphical features.* +_please note the legacy renderer may not support some graphical features._

Any other config: (replace \[PRESET\] with your preset, `release` `debug` `legacyrenderer` `legacyrendererdebug`) @@ -205,7 +206,7 @@ Now, of course, install manually. sudo cp ./build/Hyprland /usr/bin && sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions ``` -# Launching +## Launching You can launch Hyprland by either going into a TTY and executing `Hyprland`, or with a login manager. diff --git a/pages/Getting Started/Quick-start.md b/pages/Getting Started/Quick-start.md index ad833d1..609d922 100644 --- a/pages/Getting Started/Quick-start.md +++ b/pages/Getting Started/Quick-start.md @@ -1,9 +1,11 @@ -After you've installed Hyprland, you can either launch it from a TTY with +# Quickstart + +After you have installed Hyprland, you can either launch it from a TTY with `Hyprland` or from a login manager. Although login managers aren't officially supported, I recommend `SDDM`, as it's been working flawlessly with wayland compositors. -It is recommended you have `kitty` for terminal access, (example and +It is recommended you have `kitty` installed for terminal access, (example and autogenerated configs have it bound to SUPER + Q). Alternatively, manually change it in the config before launching Hyprland. @@ -34,7 +36,7 @@ exec Hyprland ``` You can add as many exported envvars as you need (Nvidia users might need a -lot), but I recommend having *at least* the shown two. +lot), but I recommend having _at least_ the shown two. You should now launch Hyprland with `wrappedhl` instead of `Hyprland`. Make sure to copy your `.desktop` file in `/usr/share/wayland-sessions/` and edit it if you use a @@ -44,7 +46,7 @@ usually not ran through the user account. {{< hint type=important >}} It is highly recommended to copy the desktop file to e.g. `wrapped_hl.desktop` instead of editing the provided one, as many package managers (and `sudo make install`) will **overwrite** -the desktop file on updates. +the desktop file on updates. If you manually build Hyprland, consider using `sudo make cleaninstall` to preserve `hyprland.deskop` {{< /hint >}} ## Immediate @@ -63,7 +65,7 @@ want the warning to go away, remove the `autogenerated=1` line. ## Monitors -Use `hyprctl monitors` to list available outputs. `hyprctl` will *not* tell you +Use `hyprctl monitors` to list available outputs. `hyprctl` will _not_ tell you what your monitor is capable of though, so if you want to check your resolution / refresh rate, use a tool like `wlr-randr`. @@ -92,24 +94,25 @@ hyprctl keyword monitor DP-3,1920x1080@240,1920x0,1 {{< hint type=important >}} These changes are **not** permanent! If you want to make those changes persist, configure your outputs in the config! {{< /hint >}} -# Proper configuring +## Proper configuring Head onto the [Configuring Hyprland page](../../Configuring/Configuring-Hyprland) to learn all about configuring Hyprland to your likings. -# Apps / X11 replacements +## Apps / X11 replacements See the [Useful Utilities page](../../Useful-Utilities) and the [Sway wiki page](https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway) just about that. -# Screenshare / GTK slow launch issues +## Screenshare / GTK slow launch issues + [FAQ (GTK issue)](../../FAQ/#some-of-my-apps-take-a-really-long-time-to-open) [FAQ (screensharing)](../../FAQ/#screenshare--obs-no-worky) -# Screen broken on launch +## Screen broken on launch This usually happens due to your monitor not being very happy about the default settings. diff --git a/pages/Home.md b/pages/Home.md index 910d62f..9d7f4aa 100644 --- a/pages/Home.md +++ b/pages/Home.md @@ -6,9 +6,11 @@ Take a tour of the pages on the left and read ones that you may need. ## Wayland info (especially useful for Xorg users) -A Wayland compositor is a fully autonomous Display Server, like Xorg itself. +A Wayland compositor is a fully autonomous Display Server, like Xorg itself. It is **not** possible to mix'n'match Wayland compositors like you could on Xorg -with window managers and compositors. +with window managers and compositors. It is also not entirely possible to use +all Xorg applications on Wayland. See [../Useful-Utilities](this page) for a +list of recommended Wayland native/compatible programs. Wayland **compositors** should not be confused with Xorg **window managers**. diff --git a/pages/IPC/_index.md b/pages/IPC/_index.md index 3df2c5c..82d7039 100644 --- a/pages/IPC/_index.md +++ b/pages/IPC/_index.md @@ -1,3 +1,5 @@ +# IPC + Hyprland exposes 2 UNIX Sockets, for controlling / getting info about Hyprland via code / bash utilities. @@ -7,7 +9,7 @@ via code / bash utilities. echo $HYPRLAND_INSTANCE_SIGNATURE ``` -# /tmp/hypr/\[HIS\]/.socket.sock +## /tmp/hypr/\[HIS\]/.socket.sock Used for hyprctl-like requests. See the [Hyprctl page](../Configuring/Using-hyprctl) for @@ -15,7 +17,7 @@ commands. basically, write `command args`. -# /tmp/hypr/\[HIS\]/.socket2.sock +## /tmp/hypr/\[HIS\]/.socket2.sock Used for events. Hyprland will write to each connected client live events like this: @@ -24,26 +26,26 @@ this: e.g.: `workspace>>2` -## Events list: +### Events list -| name | description | data | -| --- | --- | --- | -| workspace | emitted on workspace change. Is emitted ONLY when a user requests a workspace change, and is not emitted on mouse movements (see `activemon`) | `WORKSPACENAME` | -| focusedmon | emitted on the active monitor being changed. | `MONNAME,WORKSPACENAME` | -| activewindow | emitted on the active window being changed. | `WINDOWCLASS,WINDOWTITLE` | -| fullscreen | emitted when a fullscreen status of a window changes. | `0/1` (exit fullscreen / enter fullscreen) | -| monitorremoved | emitted when a monitor is removed (disconnected) | `MONITORNAME` | -| monitoradded | emitted when a monitor is added (connected) | `MONITORNAME` | -| createworkspace | emitted when a workspace is created | `WORKSPACENAME` | -| destroyworkspace | emitted when a workspace is destroyed | `WORKSPACENAME` | -| moveworkspace | emitted when a workspace is moved to a different monitor | `WORKSPACENAME,MONNAME` | -| activelayout | emitted on a layout change of the active keyboard | `KEYBOARDNAME,LAYOUTNAME` | -| openwindow | emitted when a window is opened | `WINDOWADDRESS`,`WORKSPACENAME`,`WINDOWCLASS`,`WINDOWTITLE` | -| closewindow | emitted when a window is closed | `WINDOWADDRESS` | -| movewindow | emitted when a window is moved to a workspace | `WINDOWADDRESS`,`WORKSPACENAME` | -| openlayer | emitted when a layerSurface is mapped | `NAMESPACE` | -| closelayer | emitted when a layerSurface is unmapped | `NAMESPACE` | -| submap | emitted when a keybind submap changes. Empty means default. |`SUBMAPNAME` | +| name | description | data | +| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| workspace | emitted on workspace change. Is emitted ONLY when a user requests a workspace change, and is not emitted on mouse movements (see `activemon`) | `WORKSPACENAME` | +| focusedmon | emitted on the active monitor being changed. | `MONNAME,WORKSPACENAME` | +| activewindow | emitted on the active window being changed. | `WINDOWCLASS,WINDOWTITLE` | +| fullscreen | emitted when a fullscreen status of a window changes. | `0/1` (exit fullscreen / enter fullscreen) | +| monitorremoved | emitted when a monitor is removed (disconnected) | `MONITORNAME` | +| monitoradded | emitted when a monitor is added (connected) | `MONITORNAME` | +| createworkspace | emitted when a workspace is created | `WORKSPACENAME` | +| destroyworkspace | emitted when a workspace is destroyed | `WORKSPACENAME` | +| moveworkspace | emitted when a workspace is moved to a different monitor | `WORKSPACENAME,MONNAME` | +| activelayout | emitted on a layout change of the active keyboard | `KEYBOARDNAME,LAYOUTNAME` | +| openwindow | emitted when a window is opened | `WINDOWADDRESS`,`WORKSPACENAME`,`WINDOWCLASS`,`WINDOWTITLE` | +| closewindow | emitted when a window is closed | `WINDOWADDRESS` | +| movewindow | emitted when a window is moved to a workspace | `WINDOWADDRESS`,`WORKSPACENAME` | +| openlayer | emitted when a layerSurface is mapped | `NAMESPACE` | +| closelayer | emitted when a layerSurface is unmapped | `NAMESPACE` | +| submap | emitted when a keybind submap changes. Empty means default. | `SUBMAPNAME` | {{< hint type=warning >}} A fullscreen event is not guaranteed to fire on/off once in succession. diff --git a/pages/Nix/_index.md b/pages/Nix/_index.md index be95f53..7120c20 100644 --- a/pages/Nix/_index.md +++ b/pages/Nix/_index.md @@ -1,4 +1,7 @@ +# Hyprland with Nix + ## Table of contents + {{< toc format=html >}} {{< hint type=warning >}} @@ -12,6 +15,9 @@ work as intended. Please use the Make sure to check out the options of the [Nix module](https://github.com/hyprwm/Hyprland/blob/main/nix/module.nix). +Do note that the Nixpkg for Hyprland is no actively maintained, and may be outdated. +Installation using the Flake is recommended. + ### With flakes ```nix @@ -30,7 +36,7 @@ Make sure to check out the options of the nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem { # ... modules = [ - hyprland.nixosModules.default + hyprland.nixosModules.default { programs.hyprland.enable = true; } # ... ]; @@ -58,7 +64,7 @@ in { imports = [ hyprland.nixosModules.default ]; - + programs.hyprland = { enable = true; package = hyprland.packages.${pkgs.system}.default; @@ -92,7 +98,7 @@ You can use the Home Manager module by adding it to your configuration: homeConfigurations."USER@HOSTNAME"= home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.x86_64-linux; modules = [ - hyprland.homeManagerModules.default + hyprland.homeManagerModules.default { wayland.windowManager.hyprland.enable = true; } # ... ]; @@ -127,13 +133,13 @@ For a list of available options, check the ## Modules mix'n'match - If you plan on using the HM module alongside the NixOS module, set the NixOS -`programs.hyprland.package = null;`. + `programs.hyprland.package = null;`. - If you don't plan on using the NixOS module, but want to use the HM module, you -will have to enable all the options the NixOS module enables. + will have to enable all the options the NixOS module enables. - If you don't plan on using any module, manually enable whatever options the -modules set. + modules set. ## Non-NixOS install @@ -144,30 +150,36 @@ First, [enable flakes](https://nixos.wiki/wiki/Flakes#Enable_flakes). Once you have flakes working, install Hyprland through `nix profile`: ```sh -$ nix profile install github:hyprwm/Hyprland +nix profile install github:hyprwm/Hyprland ``` Since you're using Hyprland outside of NixOS, it won't be able to find graphics drivers. To get around that, you can use [nixGL](https://github.com/guibou/nixGL). First, install it, in the same manner you installed Hyprland: + ```sh -$ nix profile install github:guibou/nixGL --impure +nix profile install github:guibou/nixGL --impure ``` + Impure is needed due to `nixGL`'s reliance on hardware information. From now on, you can run Hyprland by invoking it with nixGL + ```sh -$ nixGL Hyprland +nixGL Hyprland ``` + or by creating a wrapper script that runs the above command inside. ### Upgrading In order to upgrade all your packages, you can run + ```sh -$ nix profile upgrade '.*' +nix profile upgrade '.*' ``` + Check the [nix profile](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-profile.html) command documentation for other upgrade options. @@ -177,7 +189,7 @@ command documentation for other upgrade options. XWayland is enabled by default in the Nix package. You can disable it either in the package itself, or through the Home Manager module. -#### Package +### Package ```nix (inputs.hyprland.packages.${pkgs.default}.default.override { @@ -221,7 +233,7 @@ The GDK_SCALE variable won't conflict with wayland-native GTK programs. Usually, there's no reason to disable this functionality, as it won't affect people who don't have HiDPI screens. -If you *do* insist on disabling it though (e.g. for adding your own patches +If you _do_ insist on disabling it though (e.g. for adding your own patches to wlroots), you can do so by either using the `hyprland-no-hidpi` package, or by passing the `hidpiXWayland = false;` flag, the same way as [disabling XWayland](#package) diff --git a/pages/Nvidia/_index.md b/pages/Nvidia/_index.md index c89e6d4..2fa000b 100644 --- a/pages/Nvidia/_index.md +++ b/pages/Nvidia/_index.md @@ -1,3 +1,5 @@ +# Hyprland on NVIDIA GPUs + ## Foreword There is no _official_ support for Nvidia. Unfortunately, their drivers are so @@ -16,7 +18,7 @@ parameters. Follow the information available here: in `/etc/mkinitcpio.conf` add `nvidia nvidia_modeset nvidia_uvm nvidia_drm` to your `MODULES` -run `# mkinitcpio --config /etc/mkinitcpio.conf --generate /boot/initramfs-custom.img` +run `# mkinitcpio --config /etc/mkinitcpio.conf --generate /boot/initramfs-custom.img` add a new line to `/etc/modprobe.d/nvidia.conf` (make it if it does not exist) and add the line `options nvidia-drm modeset=1` @@ -47,8 +49,10 @@ Launch Hyprland with the wrapper. It _should_ work now. ### Fixing random flickering, method 1 + If you take a look at the wlroots patches in the [nix flake](https://github.com/hyprwm/Hyprland/blob/main/nix/wlroots.nix) you will find a one-line patch: + ```sh substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();" ``` diff --git a/pages/Useful Utilities/App-Clients.md b/pages/Useful Utilities/App-Clients.md index e078804..f22e1e3 100644 --- a/pages/Useful Utilities/App-Clients.md +++ b/pages/Useful Utilities/App-Clients.md @@ -1,3 +1,5 @@ +# Alternative App Clients + Some clients are known for being a massive pain under Wayland. Here are great replacements for them: @@ -7,3 +9,12 @@ replacements for them: the latest Electron, with support for Wayland Ozone platform, as well as PipeWire screensharing. It has tons of great features and tries not to infringe on the Discord ToS. + +## Spotify + +It has been reported that Spotify does not follow window rules. This is possibly +because the client sets is class _after_ the window has opened, thus making it "immune" +to windowrules. An alternative to Spotify's GUI client is +[spotify-tui](https://github.com/Rigellute/spotify-tui) which can be launched in a terminal +with a custom class. While limited in functionality, it is quite powerful and could be +preferred over the GUI client if windowrules are a dealbreaker for you. diff --git a/pages/Useful Utilities/App-Launchers.md b/pages/Useful Utilities/App-Launchers.md index e31d44c..a06f3d4 100644 --- a/pages/Useful Utilities/App-Launchers.md +++ b/pages/Useful Utilities/App-Launchers.md @@ -1,3 +1,5 @@ +# App Launchers + ## Wofi Wofi is a GTK-based customizable launcher for wayland. diff --git a/pages/Useful Utilities/Color-Pickers.md b/pages/Useful Utilities/Color-Pickers.md index 03471e0..5de15f5 100644 --- a/pages/Useful Utilities/Color-Pickers.md +++ b/pages/Useful Utilities/Color-Pickers.md @@ -1,7 +1,9 @@ -Color pickers are useful for quickly grabbing a color of *something* on your screen. +# Color Pickers + +Color pickers are useful for quickly grabbing a color of _something_ on your screen. We recommend our own solution, which, so far, seems to be the only one that doesn't suck. ## Hyprpicker -Dead simple to use. Launch, click, and you're done. [GitHub](https://github.com/hyprwm/hyprpicker) \ No newline at end of file +Dead simple to use. Launch, click, and you're done. [GitHub](https://github.com/hyprwm/hyprpicker) diff --git a/pages/Useful Utilities/Screen-Sharing.md b/pages/Useful Utilities/Screen-Sharing.md index c00b271..f884673 100644 --- a/pages/Useful Utilities/Screen-Sharing.md +++ b/pages/Useful Utilities/Screen-Sharing.md @@ -1,6 +1,8 @@ +# Screensharing on Hyprland + Screensharing is done through PipeWire on Wayland. -## Prereqs +## Prerequsities Make sure you have `pipewire` and `wireplumber` installed, enabled and running if you don't have them yet. diff --git a/pages/Useful Utilities/Status-Bars.md b/pages/Useful Utilities/Status-Bars.md index f6cb74a..bb4d87c 100644 --- a/pages/Useful Utilities/Status-Bars.md +++ b/pages/Useful Utilities/Status-Bars.md @@ -1,3 +1,5 @@ +# Status Bars + Launch your bar with `exec-once=`. ## Waybar @@ -7,6 +9,8 @@ Waybar is a GTK status bar made specifically for wlroots compositors. To use it, it's recommended to use the AUR package `waybar-hyprland-git`, or compile manually with the `USE_EXPERIMENTAL` flag enabled. +### Compiling Manually + To compile manually: Clone the source, cd into it, then do: diff --git a/pages/Useful Utilities/Wallpapers.md b/pages/Useful Utilities/Wallpapers.md index 14f5bfc..5b70c10 100644 --- a/pages/Useful Utilities/Wallpapers.md +++ b/pages/Useful Utilities/Wallpapers.md @@ -1,12 +1,14 @@ +# Wallpaper Utilties + Launch your wallpaper utility with `exec-once=`. -## hyprpaper +## Hyprpaper Straight from our oven, `hyprpaper` is a wallpaper utility from the Hypr Development team. See its usage and config by following the README on the [GitHub Page](https://github.com/hyprwm/hyprpaper). -## swaybg +## Swaybg Great utility if all you want is one simple static wallpaper that will never change, and don't want to make a config file. Get it @@ -25,5 +27,5 @@ A neat mpv wrapper to play a video as your wallpaper. ## swww An efficient animated wallpaper daemon for wayland, controlled at runtime, -which means you can change wallpapers without even needing to restart. +which means you can change wallpapers without even needing to restart. [GitHub](https://github.com/Horus645/swww) diff --git a/pages/Useful Utilities/_index.md b/pages/Useful Utilities/_index.md index 2e391e7..ddfe1d8 100644 --- a/pages/Useful Utilities/_index.md +++ b/pages/Useful Utilities/_index.md @@ -1,3 +1,5 @@ +# Useful Utilities + This category is dedicated to short tutorials on how to get useful utilities for Hyprland working.