tonybtw.com

tonybtw.com

https://git.tonybtw.com/tonybtw.com.git git://git.tonybtw.com/tonybtw.com.git
24,303 bytes raw
1
#+TITLE: Hyprland on Arch — Minimal Setup Guide
2
#+AUTHOR: Tony, btw
3
#+DATE: 2025-08-24
4
#+HUGO_TITLE: Hyprland on Arch | Minimal Customization Tutorial
5
#+HUGO_FRONT_MATTER_FORMAT: yaml
6
#+HUGO_CUSTOM_FRONT_MATTER: :image "/img/hyprland.png" :showTableOfContents true
7
#+HUGO_CUSTOM_FRONT_MATTER: :showTableOfContents true
8
#+HUGO_BASE_DIR: ~/www/tonybtw.com
9
#+HUGO_SECTION: tutorial/hyprland
10
#+EXPORT_FILE_NAME: index
11
#+OPTIONS: toc:nil broken-links:mark
12
#+HUGO_AUTO_SET_HEADLINE_SECTION: nil
13
#+DESCRIPTION: A zero to hero Hyprland setup, which if you follow along, will help you produce a rice thats truly yours.
14
15
* Table of Contents :toc:noexport:
16
- [[#intro][Intro]]
17
- [[#install-arch-linux][Install Arch Linux]]
18
- [[#install-required-tools-for-hyprland][Install required tools for hyprland]]
19
- [[#create-config-file][Create config file]]
20
- [[#load-hyprland][Load hyprland]]
21
- [[#foot-config][Foot config]]
22
- [[#hyprland-and-waybar][Hyprland and Waybar]]
23
- [[#waybar][Waybar]]
24
  - [[#configjsonc][Config.jsonc]]
25
  - [[#styles][Styles]]
26
- [[#wallpaper][Wallpaper]]
27
- [[#wofi][Wofi]]
28
- [[#hyprland-keybinds][Hyprland Keybinds]]
29
  - [[#directional-focus][Directional Focus]]
30
  - [[#workspaces][Workspaces]]
31
  - [[#special-workspace][Special Workspace]]
32
  - [[#scroll-to-switch-workspaces][Scroll to Switch Workspaces]]
33
- [[#final-thoughts][Final Thoughts]]
34
35
* Intro
36
What's up guys, my name is Tony, and today, I'm going to give you a quick and painless guide
37
on installing Hyprland on Arch linux.
38
39
Hyprland is a dynamic window manager and wayland compositor that is highly customizable, and it
40
emphasizes aesthetics, functionality, and extensibility.
41
42
We're going to be using Arch linux today, but hyprland is available on most distrobutions, so if you
43
are a NixOS user, or Gentoo, or even Debian, check out the wiki for installation instructions, but other
44
than that, the customization aspect of this guide will still apply to you.
45
46
At the end of this guide, you will no longer be using x11, and you will be able to fully
47
customize your own build of hyprland on your own hardware.
48
49
* Install Arch Linux
50
- basic stuff
51
- pacstrap everything
52
53
The first thing I'm going to do is install a fresh Arch linux, and since today's guide is not about
54
how to install Arch linux, I'm going to speed through that process and catch you guys at the login
55
screen. If you want help installing arch linux, check out my Arch Linux tutorial.
56
57
[[https://youtu.be/oeDbo-HRaZo][Arch Linux Tutorial]]
58
59
* Install required tools for hyprland
60
61
Alright, so we're staring at a very minimal arch build, we only installed base, base-devel, linux, linux-firmware, and sof-firmware.
62
That's all you need to get started, and if you are an arch user, you can start basically anywhere as long as you've installed these
63
basic packages, and got a bootloader up and running.
64
65
So lets start by installing all of the required packages for today's setup. The beatiful thing about starting on a fresh install
66
like this is that, you guys get to see the most minimal setup as possible in terms of packages. So let's grab all the hyprland
67
tools.
68
69
The 'hyprland' package actually comes with a lot on Arch linux. It comes with the wayland compositor among other things. Let's grab that,
70
xorg-xwayland (just in case we need to use xwayland utils), and hyprpaper (a minimal hyprland wallpaper tool)
71
72
[[https://archlinux.org/packages/extra/x86_64/hyprland/][Hyprland Arch Wiki Page]]
73
74
For other packages, I'm going to be using vim today to edit all the files, you can feel free to use your text editor of choice.
75
We need wofi (an application launcher for wayland), foot (a terminal emulator in wayland), waybar (the powerbar that we'll be using today),
76
dolphin (a file manager that works in wayland), and firefox. Let's also grab git for version controlling.
77
78
Lastly, we want a nerd font to render some of the icons here, so lets grab `ttf-jetbrains-mono-nerd`
79
80
And that's basically it. We really don't need much, and if we need anything else along the way, we can just grab it from pacman.
81
82
- hyprland
83
- vim
84
- git
85
- foot
86
- waybar
87
- firefox
88
- wofi
89
- kitty (hyprland default terminal)
90
- dolphin
91
- jetbrains mono nerd
92
93
#+begin_src sh
94
sudo pacman -S hyprland xorg-xwayland hyprpaper
95
sudo pacman -S vim wofi git foot waybar firefox dolphin
96
sudo pacman -S ttf-jetbrains-mono-nerd
97
#+end_src
98
99
* Create config file
100
101
Let's create the directory for the hyprland config file here, and copy the template config file into it. This is important because we're using foot
102
instead of kitty, we have to do this before launching hyprland.
103
104
#+begin_src sh
105
mkdir -p ~/.config/hypr; cp /usr/share/hypr/hyprland.conf ~/.config/hypr/
106
#+end_src
107
108
Edit this file, swap kitty with foot.
109
110
#+begin_src hyprlang
111
$terminal = foot;
112
#+end_src
113
114
* Load hyprland
115
116
We're ready to launch hyprland, and we can do so easily by just typing hyprland.
117
118
#+begin_src sh
119
hyprland
120
#+end_src
121
122
From inside of hyprland, we'll open a terminal with super Q
123
and lets immediately edit the monitors block:
124
125
Since my monitor is 1920x1080, I'll set that in my hyprland config. Also, we'll change this last 'auto' flag to 1.0.
126
This is the scale flag, and auto will set it to 1.5.
127
128
#+begin_example
129
monitor=,1920x1080,auto,1.0
130
#+end_example
131
132
You can display what monitor we have with:
133
134
#+begin_src sh
135
hyprctl monitors
136
#+end_src
137
138
* Foot config
139
140
Now lets jump into our foot config to quickly make our terminal readable
141
lets set this up,
142
#+begin_src sh
143
mkdir .config/foot
144
vim .config/foot/foot.ini
145
#+end_src
146
147
#+begin_src ini
148
font=JetBrainsMono NF:size=16
149
pad=8x8 center-when-maximized-and-fullscreen
150
#+end_src
151
152
And we're going to go with a tokyonight theme for todays rice, so lets check this website out for tokyonight ports. I'll leave a link
153
to this site below the subscribe button of this video.
154
155
[[https://wixdaq.github.io/Tokyo-Night-Website/ports.html][Tokyo Night Theme Site]]
156
157
Let's navigate to 'foot', and copy this colors block, and add it to our foot.ini file.
158
159
#+begin_src ini
160
[colors]
161
foreground=c0caf5
162
background=1a1b26
163
164
## Normal/regular colors (color palette 0-7)
165
regular0=15161E  # black
166
regular1=f7768e  # red
167
regular2=9ece6a  # green
168
regular3=e0af68  # yellow
169
regular4=7aa2f7  # blue
170
regular5=bb9af7  # magenta
171
regular6=7dcfff  # cyan
172
regular7=a9b1d6  # white
173
174
## Bright colors (color palette 8-15)
175
bright0=414868   # bright black
176
bright1=f7768e   # bright red
177
bright2=9ece6a   # bright green
178
bright3=e0af68   # bright yellow
179
bright4=7aa2f7   # bright blue
180
bright5=bb9af7   # bright magenta
181
bright6=7dcfff   # bright cyan
182
bright7=c0caf5   # bright white
183
184
## dimmed colors (see foot.ini(5) man page)
185
dim0=ff9e64
186
dim1=db4b4b
187
188
alpha=0.9
189
#+end_src
190
191
Alright that looks great. Let's jump into the next step
192
193
* Hyprland and Waybar
194
195
When we modify hyprlands config file, it automatically refreshes hyprland on save, which is convenient.
196
lets jump back into the hyprland.conf file and change a few things for QoL
197
198
We're gonna use waybar today, and in order to quickly reload that, we can use one line command here:
199
Also, to add it to start when we load hyprland, lets add it to exec-once.
200
201
#+begin_src conf
202
$reload_waybar = pkill waybar; waybar &
203
exec-once = waybar &
204
#+end_src
205
206
And we scroll down here and ensure our reload waybar script is binded:
207
208
#+begin_src conf
209
bind = $mainMod, R, exec, $reload_waybar
210
#+end_src
211
212
While we're in the binding section, lets clean up some of these binds. I like Q for quit, Enter for
213
terminal, and D for $menu (which is wofi)
214
215
#+begin_src conf
216
bind = $mainMod, Return, exec, $terminal
217
bind = $mainMod, Q, killactive,
218
bind = $mainMod, D, exec, $menu
219
#+end_src
220
221
Now that these are good to go, lets do one or two more huge qol updates:
222
223
#+begin_src conf
224
input {
225
    # xset r rate 200 35
226
    # This allows your key repeat rate set to 200ms delay, 35 repeats per second
227
    repeat_rate = 35
228
    repeat_delay = 200
229
}
230
231
cursor {
232
    # this ensures your mouse cursor doesn't glitch out
233
    inactive_timeout = 30
234
    no_hardware_cursors = true
235
}
236
#+end_src
237
238
Alright, we should be good to go for now and move on to the next step.
239
240
* Waybar
241
242
Now that Waybar is binded to super R, lets go ahead and load it once with super R.
243
Let's customize this by opening up the config file:
244
Lets copy over the default waybar config, since its loading a null config file now.
245
To ensure we can edit it, we need to change ownership of the file from root to tony. (use your username here)
246
247
#+begin_src bash
248
sudo cp -R /etc/xdg/waybar ~/.config/waybar
249
sudo chown -R tony:tony .config/waybar
250
vim .config/waybar/.
251
#+end_src
252
253
So this has 2 parts to it, style.css, and config.jsconc. let's start with config.jsonc, thats where all the
254
widgets, and workspace stuff lives.
255
256
At the top of this file we see layer, position, etc. If you are a bottom bar user, you can swap this to bottom, and it would look like this:
257
We're gonna put the bar on the top today, and build it out from there.
258
259
** Config.jsonc
260
*** Left Modules
261
262
So we see in config.jsonc, there are a bunch of modules loaded on the left side.
263
264
#+begin_src json
265
"modules-left": [
266
    "sway/workspaces",
267
    "sway/mode",
268
    "sway/scratchpad",
269
    "custom/media"
270
],
271
#+end_src
272
273
We can delete the bottom 3 of these, they aren't needed. We only want the workspaces module on the left for now
274
and since we're not using sway, we're using hyprland, lets just change sway to hyprland. Sway is an i3 clone for
275
wayland. Will be a video on that in the future.
276
277
#+begin_src json
278
"modules-left": [
279
    "hyprland/workspaces",
280
],
281
#+end_src
282
283
So this module exists, but its not defined in our file, lets go down to where the sway/workspaces module was defined.
284
Luckily, these modules use the same syntax, so all we need to do is switch sway to hyprland here too.
285
286
#+begin_src json
287
"hyprland/workspaces": {
288
    "disable-scroll": true,
289
    "all-outputs": true,
290
    "warp-on-scroll": false,
291
    "format": "{name}: {icon}",
292
    "format-icons": {
293
        "1": "",
294
        "2": "",
295
        "3": "",
296
        "4": "",
297
        "5": "",
298
        "urgent": "",
299
        "focused": "",
300
        "default": ""
301
    }
302
},
303
#+end_src
304
305
So lets just uncomment this block, and change 'sway' to 'hyprland'.
306
Lets save this file, and reload waybar with that super R keybind.
307
308
And now we see this workpace module on the left side. Beautiful. Let's clean this up a little bit.
309
310
These Icons are customizable, similar to my dwm config, where if you know whats going on that workspace
311
at all times, you can use a font awesome or nerd font icon for that application, and throw it on that
312
workspace number. For us today, we're going to just go with the classic 1,2,3,4 ... so lets delete this block
313
here, and change this to just {name}
314
315
#+begin_src json
316
"hyprland/workspaces": {
317
    "disable-scroll": true,
318
    "all-outputs": true,
319
    "warp-on-scroll": false,
320
    "format": "{name}",
321
},
322
#+end_src
323
324
We can reload this again with super R, and there we go. much better already.
325
326
Also, we'll add persistent-workspaces, so that all the numbers show even if they aren't active.
327
328
#+begin_src json
329
    "persistent-workspaces": {
330
        "*": 9,
331
    }
332
#+end_src
333
334
One more thing for now, lets add the window module that displays what is open in your current window.
335
lets just put it on the left side for now
336
337
And let's define this module here, and add 2 attributes to it:
338
max-length, and separate-outputs: false
339
Max length is just making the max length 40 characters, so it doesn't impede on the right side that we'll setup next.
340
Separate-outputs: This is for those of you with multiple monitors, it will show the window thats focused on all monitors
341
instead of showing it on a per monitor basis.
342
343
#+begin_src json
344
"modules-left": [
345
    "hyprland/workspaces",
346
    "hyprland/window"
347
],
348
349
"hyprland/window": {
350
    "max-length": 40,
351
    "separate-outputs": false
352
},
353
#+end_src
354
355
Let's work on some of these right-side modules.
356
357
*** Center Module
358
359
Lets leave this empty for now. It's easier to handle spacing imo if we just do left and right side modules.
360
361
#+begin_src json
362
"modules-center": [],
363
#+end_src
364
365
*** Right Modules
366
367
Lets start by deleting a lot of these modules. most of them aren't needed, and we are going for a semi-minimal
368
config today. Remember, that you can take this information from this tutorial, and really make your bar custom for
369
your own setup.
370
371
#+begin_src json
372
"modules-right": [
373
    "mpd",
374
    "idle_inhibitor",
375
    "pulseaudio",
376
    "network",
377
    "power-profiles-daemon",
378
    "cpu",
379
    "memory",
380
    "temperature",
381
    "backlight",
382
    "keyboard-state",
383
    "sway/language",
384
    "battery",
385
    "battery#bat2",
386
    "clock",
387
    "tray",
388
    "custom/power"
389
],
390
#+end_src
391
392
Let's trim this down to just this for now: we can remove all of these, lets remove temperature
393
, lets get backlight, keyboard-state, language out of here. if you're on a laptop, keep batery. otherwise, get rid of it.
394
lets keep clock, and keep tray. we'll add some in here as well, but this is good for now.
395
396
#+begin_src json
397
"modules-right": [
398
    "network",
399
    "cpu",
400
    "memory",
401
    // "battery",
402
    "clock",
403
    "tray"
404
],
405
#+end_src
406
407
Let's reload this with super R, and there we go. super minimal config for now. lets add 1 or 2 custom modules here, and then move onto
408
the styling.
409
410
Let's make this network widget super minimal.
411
412
#+begin_src json
413
"network": {
414
    "format": "Online",
415
    "format-disconnected": "Disconnected ()"
416
},
417
#+end_src
418
419
Let's change the CPU widget to something more clean:
420
421
#+begin_src json
422
"cpu": {
423
    "format": "CPU: {usage}%",
424
    "tooltip": false
425
},
426
#+end_src
427
428
Same thing for RAM:
429
430
#+begin_src json
431
"memory": {
432
    "format": "Mem: {used}GiB"
433
},
434
#+end_src
435
436
Let's add a disk widget, and this is inspired by DT's xmonad widgets a little bit, which i've been interested in for my qtile setup.
437
438
Interval so that it doesnt run every 1 seconds (the default value)
439
#+begin_src json
440
"disk": {
441
    "interval": 60,
442
    "path": "/",
443
    "format": "Disk: {free}",
444
},
445
#+end_src
446
447
And let's add "disk" to the right modules array:
448
449
#+begin_src json
450
"modules-right": [
451
    "cpu",
452
    "memory",
453
    "disk",
454
    "battery",
455
    "clock",
456
    "tray"
457
],
458
#+end_src
459
460
Heres the battery modifications: (for those of you with laptops, this should be included)
461
462
#+begin_src json
463
"battery": {
464
    "states": {
465
        "good": 80,
466
        "warning": 30,
467
        "critical": 15
468
    },
469
    "format": "Bat: {capacity}% {icon} {time}",
470
    "format-alt": "Bat: {capacity}%",
471
    "format-time": "{H}:{M}",
472
    "format-icons": ["", "", "", "", ""]
473
},
474
#+end_src
475
476
And lets add a simple separator module as follows:
477
478
#+begin_src json
479
"custom/sep": {
480
    "format": "|",
481
    "interval": 0,
482
    "tooltip": false
483
},
484
#+end_src
485
486
Now lets add this separator in between all of our widgets. it will look weird for now, but we'll fix the styling after.
487
488
#+begin_src json
489
"modules-left": [
490
    "hyprland/workspaces",
491
    "custom/sep",
492
    "hyprland/window",
493
    "custom/sep"
494
],
495
"modules-center": [
496
],
497
498
"modules-right": [
499
    "custom/sep",
500
    "network",
501
    "custom/sep",
502
    "cpu",
503
    "custom/sep",
504
    "memory",
505
    "custom/sep",
506
    "disk",
507
    "custom/sep",
508
    "clock",
509
    "custom/sep",
510
    "tray"
511
],
512
#+end_src
513
514
And thats it for the modules, we can move into the styles of these now.
515
516
** Styles
517
518
The first thing we want to do is have our colors match the tokyonight aesthetic, so lets define these colors at the top of the file. Note, you can just copy and
519
paste these from my github repo.
520
521
[[https://github.com/tonybanters/hyprland-btw][Github Repo]]
522
523
#+begin_src css
524
@define-color bg    #1a1b26;
525
@define-color fg    #a9b1d6;
526
@define-color blk   #32344a;
527
@define-color red   #f7768e;
528
@define-color grn   #9ece6a;
529
@define-color ylw   #e0af68;
530
@define-color blu   #7aa2f7;
531
@define-color mag   #ad8ee6;
532
@define-color cyn   #0db9d7;
533
@define-color brblk #444b6a;
534
@define-color wht   #ffffff;
535
#+end_src
536
537
Alright, now we see the global styles with '*', lets add some options here.
538
539
#+begin_src css
540
,* {
541
    font-family: "JetBrainsMono Nerd Font", monospace;
542
    font-size: 16px;
543
    font-weight: bold;
544
}
545
#+end_src
546
547
We're just changing the font to Jetbrains mono, and we are making it bold, and increasing the zie a little bit so its readable.
548
549
Now for the actual window on waybar, lets change some stuff here:
550
#+begin_src css
551
window#waybar {
552
  background: @bg;
553
  color: @fg;
554
}
555
#+end_src
556
557
Let's get rid of the border, and get rid of the transition propertys for now. Keep it minimal,
558
since we added those variables at the top for the colors, its going to make our lives much easier when setting up these styles.
559
560
And yea, this is already looking much better as far as usability, and stylistically speaking. Let's keep going.
561
562
Lets handle the behaviour of the workspace toggles, so that the colors of the workspaces that have applications running on them
563
are all the same, but there is a visual indicator of the active workspace.
564
565
#+begin_src css
566
#workspaces button {
567
    padding: 0 6px;
568
    color: @cyn;
569
    background: transparent;
570
    border-bottom: 3px solid @bg;
571
}
572
#workspaces button.active {
573
    color: @cyn;
574
    border-bottom: 3px solid @mag;
575
}
576
#workspaces button.empty {
577
    color: @wht;
578
}
579
#workspaces button.empty.active {
580
    color: @cyn;
581
    border-bottom: 3px solid @mag;
582
}
583
#+end_src
584
585
So this basically says that if the workspace is active, it will be visually indicated with the purple underline. if it
586
is not active, but not empty, it will still be cyan, but not be underlined. Waybar has a weird issue where when you swap
587
to a new workspace, and dont open an application on it yet, its technically empty, and active. so we will cover for that case here
588
as well. Feel free to copy and paste this from my config file.
589
590
Let's clean up this file now. I think we can delete pretty much everything except this massive block that just adds padding to every
591
widget here.
592
593
We're going to add custom separators here, so lets add that to this list, and add the css for it now, so when we jump back into the json file
594
we can already have it styled
595
596
#+begin_src css
597
#clock,
598
#custom-sep,
599
#battery,
600
#cpu,
601
#memory,
602
#disk,
603
#network,
604
#tray {
605
    padding: 0 8px;
606
    color: @white;
607
}
608
609
#custom-sep {
610
    color: @brblk;
611
}
612
#+end_src
613
614
This tells waybar to show a white font for all the text on all these widgets by default, and
615
also tells the separator to use this special black font, which will add later.
616
617
Let's quickly go through these right side widgets, and make them more minimal.
618
I like the underline style here, feel free to tinker with the colors on your setup, but im going for the
619
more minimal tokyonight style.
620
621
#+begin_src css
622
#clock {
623
    color: @cyn;
624
    border-bottom: 4px solid @cyn;
625
}
626
627
#battery {
628
    color: @mag;
629
    border-bottom: 4px solid @mag;
630
}
631
632
#disk {
633
    color: @ylw;
634
    border-bottom: 4px solid @ylw;
635
}
636
637
#memory {
638
    color: @mag;
639
    border-bottom: 4px solid @mag;
640
}
641
642
#cpu {
643
    color: @grn;
644
    border-bottom: 4px solid @grn;
645
}
646
647
#network {
648
    color: @blu;
649
    border-bottom: 4px solid @blu;
650
}
651
#+end_src
652
653
Alright, thats enough css for one day... This bar is looking really good. Feel free to customize it even further from here.
654
Let's setup wofi, add a wallpaper, and get this show on the road.
655
656
* Wallpaper
657
First thing we need to do is get a wallpaper.. so lets head over to firefox and grab this one i picked out for this rice, its on my github.
658
Let's save this into a folder in the home directory called walls, and save it is wall1.png
659
660
Now let's create a hyprpaper.conf file in the hypr directory like so:
661
662
vim .config/hypr/hyprpaper.conf
663
#+begin_src conf
664
preload = ~/walls/wall1.jpg
665
wallpaper = ,~/walls/wall1.jpg
666
#+end_src
667
668
Now in our hyprland.conf, lets turn on hyprpaper like so:
669
670
#+begin_src
671
exec-once waybar & hyprpaper
672
#+end_src
673
674
I'll run this in a terminal here but it will now always launch when we start hyprland. And there we go. Awesome
675
Last thing to do is get a proper config for wofi.
676
677
* Wofi
678
679
For this wofi config, we'll grab it from that same website of tokyonight configs, but I modified it slightly as follows:
680
#+begin_src sh
681
mkdir .config/wofi
682
vim .config/wofi/config
683
#+end_src
684
685
#+begin_src
686
# mode & placement
687
show=drun
688
location=top
689
width=700
690
lines=8
691
columns=2
692
dynamic_lines=false
693
694
# icons
695
allow_images=true
696
image_size=36
697
698
# search & UX
699
matching=fuzzy
700
insensitive=true
701
hide_scroll=false
702
prompt=
703
704
# terminal
705
term=foot
706
707
# keybinds (vim-ish)
708
key_up=Ctrl-k
709
key_down=Ctrl-j
710
key_left=Ctrl-h
711
key_right=Ctrl-l
712
key_submit=Return
713
key_forward=Tab
714
key_backward=Shift-ISO_Left_Tab
715
716
# stylesheet
717
style=/home/tony/.config/wofi/style.css
718
#+end_src
719
720
And to make that stylesheet, its right here in the style.css file of that config,
721
722
so lets make this file:
723
#+begin_src sh
724
vim ~/.config/wofi/style.css
725
#+end_src
726
727
#+begin_src css
728
,* {
729
    font-family: "JetBrainsMono Nerd Font", monospace;
730
    font-size: 16px;
731
    font-weight: bold;
732
}
733
734
window {
735
    margin: 0px;
736
    border: 2px solid #414868;
737
    border-radius: 5px;
738
    background-color: #24283b;
739
    font-family: monospace;
740
    font-size: 12px;
741
}
742
743
#input {
744
    margin: 5px;
745
    border: 1px solid #24283b;
746
    color: #c0caf5;
747
    background-color: #24283b;
748
}
749
750
#input image {
751
    color: #c0caf5;
752
}
753
754
#inner-box {
755
    margin: 5px;
756
    border: none;
757
    background-color: #24283b;
758
}
759
760
#outer-box {
761
    margin: 5px;
762
    border: none;
763
    background-color: #24283b;
764
}
765
766
#scroll {
767
    margin: 0px;
768
    border: none;
769
}
770
771
#text {
772
    margin: 5px;
773
    border: none;
774
    color: #c0caf5;
775
}
776
777
#entry:selected {
778
    background-color: #414868;
779
    font-weight: normal;
780
}
781
782
#text:selected {
783
    background-color: #414868;
784
    font-weight: normal;
785
}
786
#+end_src
787
788
And this system is looking pretty good. We got our waybar all setup, our widgets, we have our foot terminal looking good, our wallpaper, and our wofi config.
789
This is just the beginning of hyprland, but this should be a great source for you to start customizing your own personal setup.
790
791
* Hyprland Keybinds
792
793
| Mod Key       | Key / Input  | Action                 | Target / Notes         |
794
|---------------+--------------+------------------------+-------------------------|
795
| SUPER         | Return       | exec                   | $terminal               |
796
| SUPER         | Q            | killactive             |                         |
797
| SUPER         | M            | exit                   |                         |
798
| SUPER         | E            | exec                   | $fileManager            |
799
| SUPER         | V            | togglefloating         |                         |
800
| SUPER         | D            | exec                   | $menu                   |
801
| SUPER         | R            | exec                   | $reload_waybar          |
802
| SUPER         | P            | pseudo                 | dwindle only            |
803
| SUPER         | J            | togglesplit            | dwindle only            |
804
805
** Directional Focus
806
807
| Mod Key       | Key      | Action      | Direction |
808
|---------------+----------+-------------+-----------|
809
| SUPER         | left     | movefocus   | l         |
810
| SUPER         | right    | movefocus   | r         |
811
| SUPER         | up       | movefocus   | u         |
812
| SUPER         | down     | movefocus   | d         |
813
814
** Workspaces
815
816
| Mod Key       | Key       | Action            | Workspace |
817
|---------------+-----------+-------------------+-----------|
818
| SUPER         | 1–0       | workspace         | 1–10      |
819
| SUPER+SHIFT   | 1–0       | movetoworkspace   | 1–10      |
820
821
** Special Workspace
822
823
| Mod Key       | Key       | Action                  | Workspace      |
824
|---------------+-----------+-------------------------+----------------|
825
| SUPER         | S         | togglespecialworkspace  | magic          |
826
| SUPER+SHIFT   | S         | movetoworkspace         | special:magic  |
827
828
** Scroll to Switch Workspaces
829
830
| Mod Key       | Mouse Input | Action     | Workspace     |
831
|---------------+-------------+------------+---------------|
832
| SUPER         | mouse_down  | workspace  | e+1 (next)     |
833
| SUPER         | mouse_up    | workspace  | e-1 (previous) |
834
835
* Final Thoughts
836
837
Thanks so much for checking out this tutorial. If you got value from it, and you want to find more tutorials like this, check out
838
my youtube channel here: [[https://youtube.com/@tony-btw][YouTube]], or my website here: [[https://www.tonybtw.com][tony,btw]]
839
840
You can support me here: [[https://ko-fi.com/tonybtw][kofi]]