diff --git a/pages/Configuring/Animations.md b/pages/Configuring/Animations.md index a6bd528..6439e2c 100644 --- a/pages/Configuring/Animations.md +++ b/pages/Configuring/Animations.md @@ -1,7 +1,8 @@ -## Table of contents +# Table of contents + {{< toc >}} -## General +# General Animations are declared with the `animation` keyword. @@ -11,13 +12,6 @@ or animation=NAME,ONOFF,SPEED,CURVE ``` -for example: - -```ini -animation=workspaces,1,8,default -animation=windows,1,10,myepiccurve,slide -``` - `ONOFF` can be either 0 or 1, 0 to disable, 1 to enable. `SPEED` is the amount of ds (1ds = 100ms) the animation will take @@ -27,11 +21,18 @@ animation=windows,1,10,myepiccurve,slide `STYLE` (optional) is the animation style The animations are a tree. If an animation is unset, it will inherit its -parent's values. +parent's values. See [the animation tree](#animation-tree). -_Animation tree:_ +## Examples +```ini +animation=workspaces,1,8,default +animation=windows,1,10,myepiccurve,slide ``` + +## Animation tree + +```txt global ↳ windows - styles: slide, popin ↳ windowsIn - window open @@ -48,18 +49,7 @@ global ↳ specialWorkspace - styles: same as workspaces ``` -## Extras - -For animation style `popin` in `windows`, you can specify a minimum percentage -to start from. For example: - -```ini -animation=windows,1,8,default,popin 80% -``` - -will make the animation 80% -> 100% of the size. - -## Curves +# Curves Defining your own Bezier curve can be done with the `bezier` keyword: @@ -69,10 +59,22 @@ bezier=NAME,X0,Y0,X1,Y1 where `NAME` is the name, and the rest are two points for the Cubic Bezier. A good website to design your bezier can be found -[here, on cssportal.com](https://www.cssportal.com/css-cubic-bezier-generator/). +[here, on cssportal.com](https://www.cssportal.com/css-cubic-bezier-generator/), but +if you want to instead choose from a list of beziers, you can check out [easings.net](https://easings.net). -Example curve: +## Example ```ini bezier=overshot,0.05,0.9,0.1,1.1 ``` + +# Extras + +For animation style `popin` in `windows`, you can specify a minimum percentage +to start from. For example: + +```ini +animation=windows,1,8,default,popin 80% +``` + +will make the animation 80% -> 100% of the size. diff --git a/pages/Configuring/Binds.md b/pages/Configuring/Binds.md index 8524801..a5af89f 100644 --- a/pages/Configuring/Binds.md +++ b/pages/Configuring/Binds.md @@ -1,8 +1,8 @@ +# Table of Contents -## Table of contents {{< toc >}} -## Basic +# Basic ```ini bind=MODS,key,dispatcher,params @@ -18,14 +18,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 @@ -47,9 +49,10 @@ bind=SUPER,28,exec,amongus Will bind SUPER + T. (T is keycode 28.) - You can also use `xev` or `wev` to find keycodes. -## Misc +# Misc + +## Unbind -### Unbind You can also unbind with `unbind`, e.g.: ```ini @@ -58,7 +61,12 @@ unbind=SUPER,O May be useful for dynamic keybindings with `hyprctl`. -### Mouse buttons +```sh +hyprctl keyword unbind SUPER,O +``` + +## Mouse buttons + You can also bind mouse buttons, by prefacing the mouse keycode with `mouse:`, for example: @@ -68,7 +76,8 @@ bind=SUPER,mouse:272,exec,amongus will bind it to SUPER + LMB. -### Only modkeys +## Only modkeys + For binding only modkeys, you need to use the TARGET modmask (with the activating mod) and the `r` flag, e.g.: @@ -76,23 +85,29 @@ activating mod) and the `r` flag, e.g.: bindr=SUPERALT,Alt_L,exec,amongus ``` -### Mouse wheel +## 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 +## Switches + Useful for binding e.g. the lid close/open event: -``` + +```ini bindl=,switch:[switch name],exec,swaylock ``` + check out your switches in `hyprctl devices`. -## Bind flags +# Bind flags -bind supports flags in this format: +`bind` supports flags in this format: ```ini bind[flags]=... @@ -104,47 +119,64 @@ e.g.: bindrl=MOD,KEY,exec,amongus ``` -flags: +Flags: ```ini -l -> locked, aka. works also when an input inhibitor is active +l -> locked, aka. works also when an an input inhibitor (e.g. a lockscreen) is active r -> release, will trigger on release of a key e -> repeat, will repeat when held. m -> mouse, see below ``` -## Mouse Binds +Example Usage: + +```ini +# Example volume button that allows press and hold +binde=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ + +# Example volume button that will activate even while an input inhibitor is active +bindl=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- + +# Start wofi opens wofi on first press, closes it on second +bindr=SUPER, SUPER_L, exec, pkill wofi || wofi + +# See Mouse Binds section for bindm usage +``` + +# 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: -``` +```ini 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 | +| movewindow | moves the active window | | resizewindow | resizes the active window | -*Common mouse buttons' codes:* -``` +_Common mouse buttons' codes:_ + +```txt 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 whatever keys / mods you please. When held, the mouse function will be activated. {{< /hint >}} -## Binding mods +# Binding mods You can bind a mod alone like this: @@ -152,21 +184,22 @@ You can bind a mod alone like this: bindr=ALT,Alt_L,exec,amongus ``` -## Global Keybinds +# 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.: +Let's take OBS as an example: the "Start/Stop Recording" keybind is set to +SUPER + F10, and you want to make it work globally. -I've set the "Start/Stop Recording" keybind in OBS to SUPER + -F10, and I want it to be global. +Simply add -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,12 +217,12 @@ 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 >}} -## Submaps +# Submaps If you want keybind submaps, for example if you press ALT + R, you can enter a "resize" mode, resize with arrow keys, and leave @@ -221,7 +254,7 @@ submap=reset this case, `escape`) If you get stuck inside a keymap, you can use `hyprctl dispatch submap reset` to -go back. If you do not have a terminal open, tough luck buddy. I warned you. +go back. If you do not have a terminal open, tough luck buddy. You have been warned. You can also set the same keybind to perform multiple actions, such as resize and close the submap, like so: diff --git a/pages/Configuring/Configuring-Hyprland.md b/pages/Configuring/Configuring-Hyprland.md index cd1fd0f..4ad5713 100644 --- a/pages/Configuring/Configuring-Hyprland.md +++ b/pages/Configuring/Configuring-Hyprland.md @@ -1,16 +1,16 @@ The config is located in `~/.config/hypr/hyprland.conf`. -I recommend you copy the `examples/hyprland.conf`, but you can also edit the +It is recommended to copy the `examples/hyprland.conf`, but you can also edit the 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. -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 +19,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 +45,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..f219934 100644 --- a/pages/Configuring/Dispatchers.md +++ b/pages/Configuring/Dispatchers.md @@ -1,10 +1,11 @@ # Table of contents + {{< toc >}} Please keep in mind some layout-specific dispatchers will be listed in the layout pages (See the sidebar). -## Parameter explanation +# Parameter explanation | Param type | Description | | ---------- | ----------- | @@ -16,7 +17,7 @@ layout pages (See the sidebar). | floatdelta | a float value delta, e.g `-0.2` or `+0.2`. | | workspaceopt | see below. | -# Dispatchers: +# List of Dispatchers | Dispatcher | Description | Params | | ---------- | ----------- | ------ | @@ -58,9 +59,10 @@ layout pages (See the sidebar). it is NOT recommended to set DPMS with a keybind directly, as it might cause undefined behavior. Instead, consider something like -``` +```ini bind = MOD,KEY,exec,sleep 1 && hyprctl dispatch dpms off ``` + {{< /hint >}} # Workspaces @@ -86,19 +88,19 @@ You have seven choices: `movetoworkspace`. Any other dispatcher will result in undocumented behavior. {{< /hint >}} -## Special Workspace +# Special Workspace Special workspace is what is called a "scratchpad" in some other places. A 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 -``` +# Workspace options + +```txt 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 2b58399..d6cde7f 100644 --- a/pages/Configuring/Dwindle-Layout.md +++ b/pages/Configuring/Dwindle-Layout.md @@ -7,7 +7,7 @@ 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 top-and-bottom. You can make them permanent by enabling `preserve_split`. -## Grouped (tabbed) windows +# Grouped (tabbed) windows Dwindle allows you to make a group with the `togglegroup` bind dispatcher, and cycle through it with `changegroupactive`. @@ -44,7 +44,7 @@ category name: `dwindle` | 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 +# Bind Dispatchers | dispatcher | description | params | |---|---|---| diff --git a/pages/Configuring/Expanding-functionality.md b/pages/Configuring/Expanding-functionality.md index 680250f..1a85e4a 100644 --- a/pages/Configuring/Expanding-functionality.md +++ b/pages/Configuring/Expanding-functionality.md @@ -7,12 +7,12 @@ The second, socket2, sends events for certain changes / actions and can be used to react to different events. See its description [here](../../IPC/). -## Example script +# Example script 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..6ad55cf 100644 --- a/pages/Configuring/Keywords.md +++ b/pages/Configuring/Keywords.md @@ -1,10 +1,13 @@ -This page documents all of the more advanced config options. +Keywords are not variables, but "commands" for more advanced configuring. On this +page, you will be presented with some that do not deserve their own page. + +See the sidebar for more keywords to control binds, animations, monitors, et cetera. {{< 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 @@ -19,6 +22,7 @@ three_param_keyword = A, B, # OK {{< /hint >}} # Table of contents + {{< toc format=html >}} # Executing @@ -26,21 +30,10 @@ three_param_keyword = A, B, # OK 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) - -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 -script (`exec-once=~/myscript.sh` and do `myapp &` in the script) - -{{< /hint >}} - `exec-once=command` will execute only on launch `exec=command` will execute on each reload - # Defining variables You can define your own custom variables like this: @@ -103,7 +96,7 @@ device:name { } ``` -the `name` can be easily obtained by doing `hyprctl devices`. +The `name` can be easily obtained by doing `hyprctl devices`. Inside of it, put your config options. All options from the `input` category (and all subcategories, e.g. `input:touchpad`) can be put inside, **EXCEPT**: @@ -111,6 +104,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,14 +120,16 @@ 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 @@ -142,8 +138,9 @@ 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). +[hyprpaper](https://github.com/hyprwm/hyprpaper) or [swaybg](https://github.com/swaywm/swaybg). + +More can be found in [Useful Utilities](../Useful-Utilities). # Blurring layerSurfaces @@ -159,7 +156,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..770b087 100644 --- a/pages/Configuring/Master-Layout.md +++ b/pages/Configuring/Master-Layout.md @@ -8,13 +8,13 @@ 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 -*category name `master`* +_category name `master`_ | name | description | type | default | |---|---|---|---|---| @@ -23,7 +23,7 @@ You can, however, resize the master window. | 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 +# Dispatchers `layoutmsg` params: @@ -41,4 +41,5 @@ example usage: ```ini bind=MOD,KEY,layoutmsg,cyclenext ``` + {{< /hint >}} diff --git a/pages/Configuring/Monitors.md b/pages/Configuring/Monitors.md index 067332b..aa2058a 100644 --- a/pages/Configuring/Monitors.md +++ b/pages/Configuring/Monitors.md @@ -1,10 +1,11 @@ -## Table of contents +# Table of contents {{< toc format=html >}} -## General +# General The general config of a monitor looks like this + ```ini monitor=name,resolution,offset,scale ``` @@ -74,7 +75,7 @@ To disable a monitor, use monitor=name,disable ``` -## Custom reserved area +# Custom reserved area If your workflow requires custom reserved area, you can add it with @@ -86,7 +87,7 @@ Where `TOP` `BOTTOM` `LEFT` `RIGHT` are integers in pixels of the reserved area to add. This does stack on top of the calculated one, (e.g. bars) but you may only use one of these rules per monitor in the config. -## Mirrored displays +# Mirrored displays If you want to mirror a display, add a `,mirror,[NAME]` at the end of the monitor rule, examples: @@ -101,12 +102,12 @@ second monitor, so if mirroring a 1080p screen onto a 4K one, the resolution will still be 1080p on the 4K display. This also means squishing and stretching will occur on non-matching resolutions. -## Rotating and the default workspace +# Rotating and the default workspace {{< 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 >}} @@ -142,15 +143,17 @@ flipped + 180 degrees -> 6 flipped + 270 degrees -> 7 ``` -## Binding workspaces to a monitor +# Binding workspaces to a monitor 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 a435ff1..580974d 100644 --- a/pages/Configuring/Uncommon-tips-&-tricks.md +++ b/pages/Configuring/Uncommon-tips-&-tricks.md @@ -1,4 +1,4 @@ -## Switchable keyboard layouts +# Switchable keyboard layouts The easiest way to accomplish this is to set this using XKB settings, for example: ``` @@ -16,7 +16,7 @@ For example: `us,ua` -> config binds would be e.g. `SUPER, A`, while on `ua,us` {{< /hint >}} -## Disabling keybinds with one master keybind +# Disabling keybinds with one master keybind If you want to disable all keybinds with another keybind (make a kaybind toggle of sorts) you can just use a submap with only a keybind to exit it. diff --git a/pages/Configuring/Using-hyprctl.md b/pages/Configuring/Using-hyprctl.md index 2fe9c53..14bb36b 100644 --- a/pages/Configuring/Using-hyprctl.md +++ b/pages/Configuring/Using-hyprctl.md @@ -8,11 +8,11 @@ the terminal. If it's not, go to the repo root and `/hyprctl`. Issue a `make all` and then `sudo cp ./hyprctl /usr/bin`. -# Commands +# Using Hyprctl {{< 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. @@ -21,7 +21,7 @@ For live event handling, see the [socket2](../../IPC/). {{< /hint >}} -## Control +## Commands ### Dispatch @@ -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 @@ -97,22 +99,22 @@ 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" ``` `;` separates the commands -# Flags +## Flags You can specify flags for the request like this: -``` +```sh hyprctl -j monitors ``` flag list: -``` +```txt j -> output in JSON ``` diff --git a/pages/Configuring/Variables.md b/pages/Configuring/Variables.md index 6b45bb1..8cf14b7 100644 --- a/pages/Configuring/Variables.md +++ b/pages/Configuring/Variables.md @@ -1,11 +1,10 @@ -For basic syntax info, see -[Configuring Hyprland](../Configuring-Hyprland). +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 @@ -64,6 +63,7 @@ Prefer using `input:sensitivity` over `general:sensitivity` to avoid bugs, espec {{< /hint >}} ## Decoration + | name | description | type | default | |---|---|---|---|---| | rounding | rounded corners' radius (in layout px) | int | 0 | @@ -103,7 +103,7 @@ Using `blur_new_optimizations` with an animated wallpaper may actually increase {{< /hint >}} -## Animations +# Animations | name | description | type | default | |---|---|---|---|---| @@ -115,6 +115,8 @@ _[More about Animations](../Animations)._ {{< /hint >}} +# Input + ## Input | name | description | type | default | @@ -138,20 +140,21 @@ _[More about Animations](../Animations)._ | scroll_method | set the libinput scroll method. Can be one of `2fg` (2 fingers), `edge`, `on_button_down`, `no_scroll`. | str | \[EMPTY\] {{< hint type=info >}} -### Follow Mouse + +## Follow Mouse - 0 - disabled - 1 - full - 2 - loose. Will focus mouse on other windows on focus but not the keyboard. - 3 - full loose, will not refocus on click, but allow mouse focus to be -detached from the keyboard like in 2. -{{< /hint >}} + detached from the keyboard like in 2. + {{< /hint >}} {{< hint type=info >}} For switchable keyboard configs, take a look at [the uncommon tips & tricks page entry](../Uncommon-tips--tricks/#switchable-keyboard-layouts). {{< /hint >}} -### Touchpad +## Touchpad _Subcategory `input:touchpad:`_ @@ -167,7 +170,8 @@ _Subcategory `input:touchpad:`_ {{< hint type=important >}} A subcategory is a nested category: -``` + +```ini input { # ... # ... @@ -182,7 +186,7 @@ input { Doing `input:touchpad {` is **invalid**! {{< /hint >}} -### Touchdevice +## Touchdevice _Subcategory `input:touchdevice:`_ @@ -191,11 +195,11 @@ _Subcategory `input:touchdevice:`_ | transform | transform the input from touchdevices. The possible transformations are the same as [those of the monitors](../Monitors/#rotating-and-the-default-workspace) | int | 0 | | output | the output to bind touch devices. Empty means unset and will use the current / autodetected. | string | \[EMPTY\] | -### Per-device input config +## Per-device input config Described [here](../Keywords#per-device-input-configs). -## Gestures +# Gestures | name | description | type | default | |---|---|---|---|---| @@ -207,7 +211,7 @@ Described [here](../Keywords#per-device-input-configs). | workspace_swipe_cancel_ratio | (0.0 - 1.0) how much the swipe has to proceed in order to commence it. (0.7 -> if > 0.7 * distance, switch, if less, revert) | float | 0.5 | | workspace_swipe_create_new | whether a swipe right on the last workspace should create a new one. | bool | true | -## Misc +# Misc | name | description | type | default | |---|---|---|---|---| @@ -224,7 +228,7 @@ Described [here](../Keywords#per-device-input-configs). | swallow_regex | The *class* regex to be used for windows that should be swallowed (usually, a terminal) | str | \[EMPTY\] | | focus_on_activate | Whether Hyprland should focus an app that requests to be focused (an `activate` request) | bool | true | -## Binds +# Binds | name | description | type | default | |---|---|---|---|---| @@ -233,7 +237,7 @@ Described [here](../Keywords#per-device-input-configs). | workspace_back_and_forth | If enabled, an attempt to switch to the currently focused workspace will instead switch to the previous workspace. Akin to i3's *auto_back_and_forth*. | bool | false | | allow_workspace_cycles | If enabled, workspaces don't forget their previous workspace, so cycles can be created by switching to the first workspace in a sequence, then endlessly going to the previous workspace. | bool | false | -## Debug +# Debug {{< hint type=warning >}} @@ -248,7 +252,7 @@ Only for developers. | disable_logs | self-explanatory | bool | false | | disable_time | disables time logging | bool | true | -## More +# More There are more config options described in other pages, which are layout- or circumstance-specific. See the sidebar for more pages. diff --git a/pages/Configuring/XWayland.md b/pages/Configuring/XWayland.md index 0a4ef03..d179b9c 100644 --- a/pages/Configuring/XWayland.md +++ b/pages/Configuring/XWayland.md @@ -3,7 +3,7 @@ compositors. # HiDPI XWayland -Currently, XWayland on HiDPI screens looks pixelated/blurry, due to Xorg's +XWayland currently looks pixelated/blurry on HiDPI screens, 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 +17,28 @@ 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. + 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..3ae5539 100644 --- a/pages/Contributing and Debugging/PR-Guidelines.md +++ b/pages/Contributing and Debugging/PR-Guidelines.md @@ -1,12 +1,13 @@ -## PR Requirements +# 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 +59,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..a9c0baf 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,22 +48,22 @@ 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 bugs. When Hyprland crashes, use `coredumpctl` and then `coredumpctl info PID` to see -the dump. +the dump. See the instructions below for more info about `coredumpctl`. -I also recommend the amazing command +You can also use the amazing command ```sh watch -n 0.1 "cat /tmp/hypr/$(echo HYPRLAND_INSTANCE_SIGNATURE)/hyprland.log | grep -v \"arranged\" | tail -n 40" @@ -71,7 +71,11 @@ 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 +### How do I get a coredump? + +See [`ISSUE_GUIDELINES.md`](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md). + +## Nesting Hyprland Hyprland can run nested in a window. For that, make sure you did the following: @@ -79,8 +83,7 @@ Hyprland can run nested in a window. For that, make sure you did the following: - removed ALL `exec=` and `exec-once=` keywords from your debug config (`hyprlandd.conf`) - set a resolution and are not using `preferred` -- made sure no keybinds overlap (I recommend using a different mod for your - keybinds altogether) +- made sure no keybinds overlap (use a different mod for your keybinds altogether) Once you launch, the display will probably be completely garbled. To fix that, in the parent, do a `hyprctl clients` and note the size of the window. Make sure diff --git a/pages/Crashes and Bugs/_index.md b/pages/Crashes and Bugs/_index.md index 3ee131b..ce6e686 100644 --- a/pages/Crashes and Bugs/_index.md +++ b/pages/Crashes and Bugs/_index.md @@ -1,4 +1,4 @@ -## Getting the log +# Getting the log If you are in a TTY, and the hyprland session that crashed was the last one you launched, the log will be printed with @@ -15,7 +15,7 @@ if you are in a Hyprland session, and you want the log of the last session, use cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 2 | tail -n 1)/hyprland.log ``` -## Crashes at launch +# Crashes at launch Diagnose the issue by what is in the log: @@ -31,14 +31,13 @@ Diagnose the issue by what is in the log: in the first point. - failing on `Hyprland` -> report an issue. -## Crashes not at launch +# Crashes not at launch Report an issue on GitHub or on the Discord server. -## Bugs +# 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/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 df871fc..bb306c7 100644 --- a/pages/Getting Started/Quick-start.md +++ b/pages/Getting Started/Quick-start.md @@ -1,9 +1,9 @@ -After you've installed Hyprland, you can either launch it from a TTY with +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 +supported, you might want to use `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. @@ -45,7 +45,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 it's recommended to have _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 @@ -55,26 +55,21 @@ 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 +# Immediate **OMG MY SCREEN IS BROKEN, FLASHY TEARY!** -> see the bottom of this page Once you log in, you'll be greeted with a yellow warning that will give you some -basic keybind info of your pregenerated config. +basic keybind info of your pre-generated config. -I recommend you use the config provided in `examples/hyprland.conf` though. +To make the warning to go away, remove the `autogenerated=1` line from hyprland.conf -Paste it into `~/.config/hypr/hyprland.conf` +# Monitors -You can, of course, start from the pregenerated config if you wish to. If you -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`. @@ -109,18 +104,19 @@ 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..38af919 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, nor recommended, +to try and 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..e8170f9 100644 --- a/pages/IPC/_index.md +++ b/pages/IPC/_index.md @@ -1,7 +1,7 @@ Hyprland exposes 2 UNIX Sockets, for controlling / getting info about Hyprland via code / bash utilities. -## Hyprland Instance Signature (HIS) +# Hyprland Instance Signature (HIS) ```sh echo $HYPRLAND_INSTANCE_SIGNATURE @@ -24,7 +24,7 @@ this: e.g.: `workspace>>2` -## Events list: +# Events list | name | description | data | | --- | --- | --- | @@ -51,7 +51,7 @@ A window might do for example 3 requests to be fullscreen'd, which would result in 3 fullscreen events. {{< /hint >}} -## How to use socket2 with bash +# How to use socket2 with bash example script using socket2 events with bash and `socat`: diff --git a/pages/Nix/_index.md b/pages/Nix/_index.md index be95f53..a37611d 100644 --- a/pages/Nix/_index.md +++ b/pages/Nix/_index.md @@ -1,4 +1,5 @@ -## Table of contents +# Table of contents + {{< toc format=html >}} {{< hint type=warning >}} @@ -7,12 +8,15 @@ work as intended. Please use the [flake](https://github.com/hyprwm/Hyprland/blob/main/flake.nix). {{< /hint >}} -## Install and configure Hyprland on NixOS +# Install and configure Hyprland on NixOS Make sure to check out the options of the [Nix module](https://github.com/hyprwm/Hyprland/blob/main/nix/module.nix). -### With flakes +Do note that the Nixpkgs Hyprland package is not actively maintained, and may be outdated. +As such, installation using the Flake is recommended. + +## With flakes ```nix # flake.nix @@ -30,7 +34,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; } # ... ]; @@ -40,7 +44,7 @@ Make sure to check out the options of the Don't forget to replace `HOSTNAME` with your hostname! -### Without flakes +## Without flakes {{< hint >}} If you're using Hyprland through an overlay, set @@ -58,7 +62,7 @@ in { imports = [ hyprland.nixosModules.default ]; - + programs.hyprland = { enable = true; package = hyprland.packages.${pkgs.system}.default; @@ -66,11 +70,11 @@ in { } ``` -## Install and configure through Home Manager +# Install and configure through Home Manager You can use the Home Manager module by adding it to your configuration: -### With flakes +## With flakes ```nix # flake.nix @@ -92,7 +96,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; } # ... ]; @@ -102,7 +106,7 @@ You can use the Home Manager module by adding it to your configuration: Don't forget to replace `USER@HOSTNAME` with your username and hostname! -### Without flakes +## Without flakes ```nix # home config @@ -124,60 +128,66 @@ in { For a list of available options, check the [module file](https://github.com/hyprwm/Hyprland/blob/main/nix/hm-module.nix). -## Modules mix'n'match +# 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 +# Non-NixOS install -### With flakes +## With flakes 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 +## 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. -## XWayland +# XWayland 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 { @@ -185,7 +195,7 @@ in the package itself, or through the Home Manager module. }) ``` -#### HM module +### HM module ```nix wayland.windowManager.hyprland = { @@ -194,7 +204,7 @@ wayland.windowManager.hyprland = { } ``` -### HiDPI +## HiDPI By default, the Nix package includes a patched wlroots that can render HiDPI XWayland windows. @@ -221,12 +231,12 @@ 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) -## Cachix +# Cachix A [Hyprland Cachix](https://app.cachix.org/cache/hyprland) exists to cache the `wlroots` package and speed up builds. @@ -244,7 +254,7 @@ this cache to download the binary directly, instead of building locally. } ``` -## Overrides +# Overrides You can override the package through `.override` or `.overrideAttrs`. This is easily achievable through NixOS or Home Manager. diff --git a/pages/Nvidia/_index.md b/pages/Nvidia/_index.md index 8102385..81e8af5 100644 --- a/pages/Nvidia/_index.md +++ b/pages/Nvidia/_index.md @@ -1,4 +1,4 @@ -## Foreword +# Foreword There is no _official_ support for Nvidia. Unfortunately, their drivers are so messy, and their products so random, that it's impossible for us to help if @@ -16,7 +16,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` @@ -46,9 +46,11 @@ Launch Hyprland with the wrapper. It _should_ work now. -### Fixing random flickering, method 1 +## 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();" ``` @@ -57,7 +59,7 @@ What this means, for non-nix users, is you have to (before building) go to `subprojects/wlroots/render/gles2/renderer.c` and replace all occurrences of `glFlush()` with `glFinish()`, and then compile Hyprland as usual. -### Fixing random flickering, method 2 (nuclear) +## Fixing random flickering, method 2 (nuclear) Do note though that this forces performance mode to be active, resulting in increased power-consumption (from 22W idle on a RTX 3070TI, to 74W). diff --git a/pages/Useful Utilities/Color-Pickers.md b/pages/Useful Utilities/Color-Pickers.md index 03471e0..d9ebe1f 100644 --- a/pages/Useful Utilities/Color-Pickers.md +++ b/pages/Useful Utilities/Color-Pickers.md @@ -1,7 +1,8 @@ -Color pickers are useful for quickly grabbing a color of *something* on your screen. +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. +It's preferred using _hyrpwm_'s 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..b58f6a3 100644 --- a/pages/Useful Utilities/Screen-Sharing.md +++ b/pages/Useful Utilities/Screen-Sharing.md @@ -1,6 +1,6 @@ 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..7dcb0e3 100644 --- a/pages/Useful Utilities/Status-Bars.md +++ b/pages/Useful Utilities/Status-Bars.md @@ -1,30 +1,25 @@ -Launch your bar with `exec-once=`. - -## Waybar +# Waybar 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. +To use it, it's recommended to use the AUR package `waybar-hyprland-git`. + +## Compiling Manually To compile manually: Clone the source, cd into it, then do: -```sh +```bash sed -i 's/zext_workspace_handle_v1_activate(workspace_handle_);/const std::string command = "hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());/g' src/modules/wlr/workspace_manager.cpp - meson --prefix=/usr --buildtype=plain --auto-features=enabled --wrap-mode=nodownload build meson configure -Dexperimental=true build -``` - -and finally: - -```sh sudo ninja -C build install ``` -If you want to use the workspaces module, it's called `wlr/workspaces`. +If you want to use the workspaces module, first, copy the configuration files from +`/etc/xdg/waybar/` into `~/.config/waybar/`. Then, in `~/.config/waybar/conf/` replace +all the references to `sway/workspaces/` with `wlr/workspaces`. For more info regarding configuration, see [The Waybar Wiki](https://github.com/Alexays/Waybar/wiki). @@ -36,11 +31,11 @@ it, either using your distro's package manager, by searching `eww-wayland`, or by manually compiling. In the latter case, you can follow the [instructions](https://elkowar.github.io/eww). -### Configuration +## Configuration After you've successfully installed Eww, you can move onto configuring it. There -are a few examples listed in the [Readme](https://github.com/elkowar/eww). We -highly recommend you also read through the +are a few examples listed in the [Readme](https://github.com/elkowar/eww). It's also +highly recommended to read through the [Configuration options](https://elkowar.github.io/eww/configuration.html). {{< hint type=important >}} diff --git a/pages/Useful Utilities/Wallpapers.md b/pages/Useful Utilities/Wallpapers.md index 14f5bfc..60b6dda 100644 --- a/pages/Useful Utilities/Wallpapers.md +++ b/pages/Useful Utilities/Wallpapers.md @@ -25,5 +25,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..1067f2a 100644 --- a/pages/Useful Utilities/_index.md +++ b/pages/Useful Utilities/_index.md @@ -1,7 +1,7 @@ This category is dedicated to short tutorials on how to get useful utilities for Hyprland working. -## List of Pages +# List of Pages - **[Status Bars](./Status-Bars)**