Browse Source

Add hyperland configuration

master
Tovi Jaeschke-Rogers 5 months ago
parent
commit
a7ad2b9aa4
7 changed files with 534 additions and 0 deletions
  1. +183
    -0
      .config/hypr/hyprland.conf
  2. +4
    -0
      .config/hypr/hyprpaper.conf
  3. +34
    -0
      .config/hypr/start-in-tray.sh
  4. +8
    -0
      .config/hypr/xdg.sh
  5. +161
    -0
      .config/waybar/config
  6. +98
    -0
      .config/waybar/style.css
  7. +46
    -0
      .config/wofi/style.css

+ 183
- 0
.config/hypr/hyprland.conf View File

@ -0,0 +1,183 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=DVI-D-1,preferred,-1920x0,auto
monitor=HDMI-A-1,preferred,auto,auto
# workspace binding
workspace=1,monitor:DVI-D-1
workspace=2,monitor:HDMI-A-1
workspace=3,monitor:HDMI-A-1
workspace=4,monitor:HDMI-A-1
workspace=5,monitor:HDMI-A-1
workspace=6,monitor:HDMI-A-1
workspace=7,monitor:HDMI-A-1
workspace=8,monitor:HDMI-A-1
workspace=9,monitor:HDMI-A-1
workspace=10,monitor:HDMI-A-1
# Execute your favorite apps at launch
exec-once = ~/.config/hypr/xdg.sh
exec-once = hyprpaper
exec-once = swayidle -w timeout 600 swaylock before-sleep swaylock
exec-once = ~/.config/hypr/start-in-tray.sh
# Set programs that you use
$terminal = alacritty
$fileManager = dolphin
$menu = wofi --show drun
# Some default env vars.
env = XCURSOR_SIZE,24
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = no
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
layout = master
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 5
blur {
enabled = true
size = 3
passes = 1
}
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
new_is_master = true
new_on_top = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
}
misc {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic-mouse-v1 {
sensitivity = -0.5
}
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrulev2 = nomaximizerequest, class:.* # You'll probably like this.
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, Return, exec, $terminal
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, V, togglefloating,
bind = $mainMod, P, exec, $menu
# DWM style window management
bind = $mainMod, Return, layoutmsg, swapwithmaster
bind = $mainMod, J, layoutmsg, cyclenext
bind = $mainMod, K, layoutmsg, cycleprev
bind = $mainMod, I, layoutmsg, addmaster
bind = $mainMod, D, layoutmsg, removemaster
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

+ 4
- 0
.config/hypr/hyprpaper.conf View File

@ -0,0 +1,4 @@
preload = ~/Pictures/arch-wp-1.png
wallpaper = DVI-D-1,~/Pictures/arch-wp-1.png
wallpaper = HDMI-A-1,~/Pictures/arch-wp-1.png

+ 34
- 0
.config/hypr/start-in-tray.sh View File

@ -0,0 +1,34 @@
#!/bin/sh
# start waybar and programs with tray icons after pause
waybar_loop() {
# restart waybar on crash (after suspend mode)
WAYBAR_RESTARTS=0
while [ $WAYBAR_RESTARTS != 6 ]; do # limited to 5 restars
pgrep Hyprland || break # exit if Hyprland is not running
waybar
let WAYBAR_RESTARTS++
notify-send -a "start-in-tray.sh" "Waybar crashed!"
sleep 1
done
}
# wait for xdg-desktop-portal-hyprland to start
until pgrep -f 'xdg-desktop-portal-hyprland'; do echo 'test' && sleep 2; done
# override monitor for workspace 2 and 4 with eDP-2
# hyprctl monitors | grep eDP-2 && \
# hyprctl --batch "keyword workspace 2,monitor:eDP-2 ; keyword workspace 4,monitor:eDP-2"
waybar_loop &
sleep 1 # wait for waybar
nm-applet --indicator &
# crow &
# syncthingtray --wait &
XDG_CURRENT_DESKTOP=gnome telegram-desktop &
# blueman-applet &
hyprctl dispatch workspace 1
# hyprctl dispatch moveworkspacetomonitor 2 0

+ 8
- 0
.config/hypr/xdg.sh View File

@ -0,0 +1,8 @@
#!/bin/bash
sleep 1
killall -e xdg-desktop-portal-hyprland
killall -e xdg-desktop-portal-wlr
killall xdg-desktop-portal
/usr/lib/xdg-desktop-portal-hyprland &
sleep 2
/usr/lib/xdg-desktop-portal &

+ 161
- 0
.config/waybar/config View File

@ -0,0 +1,161 @@
{
"layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 34, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": ["hyprland/workspaces", "idle_inhibitor", "pulseaudio", "network", "custom/updates"],
"modules-center": ["hyprland/window"],
"modules-right": ["cpu", "memory", "temperature", "tray", "clock"],
// Modules configuration
"hyprland/workspaces": {
"disable-scroll": true,
"on-click": "activate",
"all-outputs": false,
// "format": "{name}: {icon}",
"format": "{name}",
"on-scroll-up": "hyprctl dispatch workspace m-1 > /dev/null",
"on-scroll-down": "hyprctl dispatch workspace m+1 > /dev/null",
},
"keyboard-state": {
"numlock": false,
"capslock": false,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"hyprland/window": {
"max-length": 50,
"separate-outputs": true
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 2,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
"spacing": 0
},
"clock": {
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}"
},
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
"critical-threshold": 80,
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% 🗲",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"network": {
// "interface": "wlan0", // (Optional) To force the use of this interface
"format-wifi": "{essid} ",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 10, // %, can be a float
"format": "{volume}%{icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/notification": {
"tooltip": false,
"format": "{} {icon}",
"format-icons": {
"notification": "<span foreground='red'><sup></sup></span> ",
"none": "",
"dnd-notification": "<span foreground='red'><sup></sup></span> ",
"dnd-none": "",
"inhibited-notification": "<span foreground='red'><sup></sup></span> ",
"inhibited-none": "",
"dnd-inhibited-notification": "<span foreground='red'><sup></sup></span> ",
"dnd-inhibited-none": ""
},
"return-type": "json",
"exec-if": "which swaync-client",
"exec": "swaync-client -swb",
"on-click": "sleep 0.1 && swaync-client -t -sw",
"on-click-right": "swaync-client -d -sw",
"escape": true
},
"custom/updates": {
"format": "{} {icon}",
"return-type": "json",
"format-icons": {
"has-updates": "󱍷",
"updated": "󰂪"
},
"exec-if": "which waybar-module-pacman-updates",
"exec": "waybar-module-pacman-updates"
}
}

+ 98
- 0
.config/waybar/style.css View File

@ -0,0 +1,98 @@
@define-color base00 #181818;
@define-color base01 #2b2e37;
@define-color base02 #3b3e47;
@define-color base03 #585858;
@define-color base04 #b8b8b8;
@define-color base05 #d8d8d8;
@define-color base06 #e8e8e8;
@define-color base07 #f8f8f8;
@define-color base08 #ab4642;
@define-color base09 #dc9656;
@define-color base0A #f7ca88;
@define-color base0B #a1b56c;
@define-color base0C #86c1b9;
@define-color base0D #7cafc2;
@define-color base0E #ba8baf;
@define-color base0F #a16946;
* {
transition: none;
box-shadow: none;
}
#waybar {
font-family: 'Source Code Pro', sans-serif;
font-size: 1.2em;
font-weight: 400;
color: @base04;
background: @base01;
}
#workspaces {
margin: 0 4px;
}
#workspaces button {
margin: 4px 0;
padding: 0 4px;
color: @base05;
}
#workspaces button.visible {
}
#workspaces button.active {
border-radius: 4px;
background-color: @base02;
}
#workspaces button.urgent {
color: rgba(238, 46, 36, 1);
}
#tray {
margin: 4px 4px 4px 4px;
border-radius: 4px;
background-color: @base02;
}
#tray * {
padding: 0 6px;
border-left: 1px solid @base00;
}
#tray *:first-child {
border-left: none;
}
#mode, #battery, #cpu, #memory, #network, #pulseaudio, #idle_inhibitor, #backlight, #custom-storage, #custom-updates, #custom-weather, #custom-mail, #clock, #temperature {
margin: 4px 2px;
padding: 0 6px;
background-color: @base02;
border-radius: 4px;
min-width: 20px;
}
#pulseaudio.muted {
color: @base0F;
}
#pulseaudio.bluetooth {
color: @base0C;
}
#clock {
margin-left: 0px;
margin-right: 4px;
background-color: transparent;
}
#temperature.critical {
color: @base0F;
}
#window {
font-size: 0.9em;
font-weight: 400;
font-family: sans-serif;
}

+ 46
- 0
.config/wofi/style.css View File

@ -0,0 +1,46 @@
/*
Arc-Dark Color Scheme
*/
@define-color highlight #fbf1c7;
@define-color base1 #ffffff;
@define-color base3 #282828;
*{
font-family: UbuntuMono;
}
window {
border: 1px solid @highlight;
}
#input {
margin-bottom: 15px;
padding:3px;
border-radius: 5px;
border:none;
color: #282828;
}
#inner-box {
background-color: @base3;
}
#outer-box {
margin: 1px;
padding:15px;
background-color: #282828;
}
#text {
padding: 5px;
color: @highlight;
}
#entry:nth-child() {
color: @base1;
}
#entry:selected {
border: 2px solid @highlight;
}

Loading…
Cancel
Save