Procházet zdrojové kódy

add wezterm, hyprland, waybar config

Noah Vogt před 2 dny
rodič
revize
b84086c129

+ 335 - 0
dot-config/hypr/hyprland.conf

@@ -0,0 +1,335 @@
+monitor=,preferred,auto,auto
+
+
+###################
+### MY PROGRAMS ###
+###################
+
+# See https://wiki.hypr.land/Configuring/Keywords/
+# source=~/.config/hypr/keybinds.conf
+
+# Set programs that you use
+$terminal = wezterm
+$fileManager = nautilus
+$menu = hyprlauncher
+
+
+#################
+### AUTOSTART ###
+#################
+
+# Autostart necessary processes (like notifications daemons, status bars, etc.)
+# Or execute your favorite apps at launch like this:
+
+exec-once = swww-daemon &
+exec-once = waybar
+# exec-once = $terminal
+# exec-once = nm-applet &
+# exec-once = waybar & hyprpaper & firefox
+
+
+#############################
+### ENVIRONMENT VARIABLES ###
+#############################
+
+env = XCURSOR_SIZE,24
+env = HYPRCURSOR_SIZE,24
+
+
+###################
+### PERMISSIONS ###
+###################
+
+ecosystem {
+  enforce_permissions = 1
+}
+
+permission = /usr/bin/grim, screencopy, allow
+
+#####################
+### LOOK AND FEEL ###
+#####################
+
+# Refer to https://wiki.hypr.land/Configuring/Variables/
+
+# https://wiki.hypr.land/Configuring/Variables/#general
+general {
+    gaps_in = 5
+    gaps_out = 20
+
+    border_size = 2
+
+    # https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
+    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
+    col.inactive_border = rgba(595959aa)
+
+    # Set to true enable resizing windows by clicking and dragging on borders and gaps
+    resize_on_border = false
+
+    allow_tearing = false
+
+    layout = master
+}
+
+# https://wiki.hypr.land/Configuring/Variables/#decoration
+decoration {
+    rounding = 10
+    rounding_power = 2
+
+    # Change transparency of focused and unfocused windows
+    active_opacity = 1.0
+    inactive_opacity = 1.0
+
+    shadow {
+        enabled = true
+        range = 4
+        render_power = 3
+        color = rgba(1a1a1aee)
+    }
+
+    # https://wiki.hypr.land/Configuring/Variables/#blur
+    blur {
+        enabled = true
+        size = 3
+        passes = 1
+
+        vibrancy = 0.1696
+    }
+}
+
+# https://wiki.hypr.land/Configuring/Variables/#animations
+animations {
+    enabled = yes, please :)
+
+    # Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
+    #        NAME,           X0,   Y0,   X1,   Y1
+    bezier = easeOutQuint,   0.23, 1,    0.32, 1
+    bezier = easeInOutCubic, 0.65, 0.05, 0.36, 1
+    bezier = linear,         0,    0,    1,    1
+    bezier = almostLinear,   0.5,  0.5,  0.75, 1
+    bezier = quick,          0.15, 0,    0.1,  1
+
+    # Default animations, see https://wiki.hypr.land/Configuring/Animations/
+    #           NAME,          ONOFF, SPEED, CURVE,        [STYLE]
+    animation = global,        1,     10,    default
+    animation = border,        1,     5.39,  easeOutQuint
+    animation = windows,       1,     4.79,  easeOutQuint
+    animation = windowsIn,     1,     4.1,   easeOutQuint, popin 87%
+    animation = windowsOut,    1,     1.49,  linear,       popin 87%
+    animation = fadeIn,        1,     1.73,  almostLinear
+    animation = fadeOut,       1,     1.46,  almostLinear
+    animation = fade,          1,     3.03,  quick
+    animation = layers,        1,     3.81,  easeOutQuint
+    animation = layersIn,      1,     4,     easeOutQuint, fade
+    animation = layersOut,     1,     1.5,   linear,       fade
+    animation = fadeLayersIn,  1,     1.79,  almostLinear
+    animation = fadeLayersOut, 1,     1.39,  almostLinear
+    animation = workspaces,    1,     1.94,  almostLinear, fade
+    animation = workspacesIn,  1,     1.21,  almostLinear, fade
+    animation = workspacesOut, 1,     1.94,  almostLinear, fade
+    animation = zoomFactor,    1,     7,     quick
+}
+
+# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
+# "Smart gaps" / "No gaps when only"
+# uncomment all if you wish to use that.
+# workspace = w[tv1], gapsout:0, gapsin:0
+# workspace = f[1], gapsout:0, gapsin:0
+# windowrule {
+#     name = no-gaps-wtv1
+#     match:float = false
+#     match:workspace = w[tv1]
+#
+#     border_size = 0
+#     rounding = 0
+# }
+#
+# windowrule {
+#     name = no-gaps-f1
+#     match:float = false
+#     match:workspace = f[1]
+#
+#     border_size = 0
+#     rounding = 0
+# }
+
+# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
+dwindle {
+    pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
+    preserve_split = true # You probably want this
+}
+
+# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
+master {
+    new_status = master
+}
+
+# https://wiki.hypr.land/Configuring/Variables/#misc
+misc {
+    force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
+    disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
+}
+
+
+#############
+### INPUT ###
+#############
+
+# https://wiki.hypr.land/Configuring/Variables/#input
+input {
+    kb_layout = ch
+    kb_options = caps:swapescape,altwin:swap_lalt_lwin
+
+    follow_mouse = 1
+
+    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+
+    touchpad {
+        natural_scroll = true
+    }
+}
+
+# See https://wiki.hypr.land/Configuring/Gestures
+gesture = 3, horizontal, workspace
+
+# Example per-device config
+# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
+device {
+    name = epic-mouse-v1
+    sensitivity = -0.5
+}
+
+
+###################
+### KEYBINDINGS ###
+###################
+
+# See https://wiki.hypr.land/Configuring/Keywords/
+$mainMod = SUPER
+bindir = $mainMod, SUPER_L, exec, fuzzel
+
+# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
+bind = $mainMod, Return, exec, $terminal
+bind = $mainMod, Q, killactive,
+bind = $mainMod SHIFT, Q, exec, killall Hyprland
+bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
+bind = $mainMod, E, exec, $fileManager --new-window
+bind = $mainMod, V, togglefloating,
+bind = $mainMod, R, exec, $menu
+bind = $mainMod, P, pseudo, # dwindle
+# bind = $mainMod, J, layoutmsg, togglesplit # dwindle
+
+bind = $mainMod ALT, Space, togglefloating,
+
+# Move focus with mainMod + arrow keys
+bind = $mainMod, left, movefocus, l
+bind = $mainMod, right, movefocus, r
+bind = $mainMod, up, movefocus, u
+bind = $mainMod, down, movefocus, d
+# Swap windows
+bind = $mainMod SHIFT, left, movewindow, l
+bind = $mainMod SHIFT, right, movewindow, r
+bind = $mainMod SHIFT, up, movewindow, u
+bind = $mainMod SHIFT, down, movewindow, d
+
+binde = $mainMod, H, splitratio, -0.05
+binde = $mainMod, L, splitratio, 0.05
+
+bind = $mainMod, F, fullscreen, 0
+
+# Master Layout Control
+bind = $mainMod SHIFT, 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
+
+# Laptop multimedia keys for volume and LCD brightness
+bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
+bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
+bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
+bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
+bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
+bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
+
+# Requires playerctl
+bindl = , XF86AudioNext, exec, playerctl next
+bindl = , XF86AudioPause, exec, playerctl play-pause
+bindl = , XF86AudioPlay, exec, playerctl play-pause
+bindl = , XF86AudioPrev, exec, playerctl previous
+
+##############################
+### WINDOWS AND WORKSPACES ###
+##############################
+
+# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
+# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
+
+# Example windowrules that are useful
+
+windowrule {
+    # Ignore maximize requests from all apps. You'll probably like this.
+    name = suppress-maximize-events
+    match:class = .*
+
+    suppress_event = maximize
+}
+
+windowrule {
+    # Fix some dragging issues with XWayland
+    name = fix-xwayland-drags
+    match:class = ^$
+    match:title = ^$
+    match:xwayland = true
+    match:float = true
+    match:fullscreen = false
+    match:pin = false
+
+    no_focus = true
+}
+
+# Hyprland-run windowrule
+windowrule {
+    name = move-hyprland-run
+
+    match:class = hyprland-run
+
+    move = 20 monitor_h-120
+    float = yes
+}

+ 71 - 0
dot-config/waybar/config.jsonc

@@ -0,0 +1,71 @@
+{
+    "layer": "top",
+    "position": "top",
+    "height": 34,
+    "margin-top": 10,
+    "margin-left": 20,
+    "margin-right": 20,
+    "spacing": 4,
+
+    "modules-left": [
+        "hyprland/workspaces"
+    ],
+    "modules-center": ["clock"],
+    "modules-right": ["network#vpn", "network", "pulseaudio"],
+
+    "hyprland/workspaces": {
+        "format": "{id}",
+        "on-click": "activate",
+        "all-outputs": true,
+        "active-only": false,
+        "persistent-workspaces": {
+            "*": 10
+        },
+        "format-icons": {
+            "active": "",
+            "default": ""
+        },
+        "on-scroll-up": "hyprctl dispatch workspace e+1",
+        "on-scroll-down": "hyprctl dispatch workspace e-1"
+    },
+
+    "clock": {
+        "format": "  {:%H:%M}",
+        "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+        "format-alt": "  {:%A, %d %B %Y}"
+    },
+
+    "network": {
+        "format-wifi": "   {essid}",
+        "format-ethernet": "󰈀   {ipaddr}/{cidr}",
+        "format-linked": "󰈀   {ifname} (No IP)",
+        "format-disconnected": "󰖪   Disconnected",
+        "tooltip-format": "{ifname} via {gwaddr} ",
+        "format-alt": "{ifname}: {ipaddr}/{cidr}"
+    },
+
+    "network#vpn": {
+        "interface": "tun*",
+        "format-wifi": "   VPN Connected",
+        "format-ethernet": "   VPN Connected",
+        "format-disconnected": "",
+        "tooltip-format": "VPN Active",
+        "interval": 5
+    },
+
+    "pulseaudio": {
+        "format": "{icon}   {volume}%",
+        "format-bluetooth": "󰂯  {icon}   {volume}%",
+        "format-muted": "󰝟   Muted",
+        "format-icons": {
+            "headphone": "",
+            "hands-free": "",
+            "headset": "",
+            "phone": "",
+            "portable": "",
+            "car": "",
+            "default": ["", "", ""]
+        },
+        "on-click": "pavucontrol"
+    }
+}

+ 95 - 0
dot-config/waybar/style.css

@@ -0,0 +1,95 @@
+* {
+    border: none;
+    border-radius: 0;
+    font-family: "JetBrainsMono Nerd Font", "Font Awesome 6 Free", "Font Awesome 6 Brands", sans-serif;
+    font-size: 14px;
+    min-height: 0;
+}
+
+window#waybar {
+    background-color: rgba(26, 27, 38, 0.8);
+    color: #ffffff;
+    transition-property: background-color;
+    transition-duration: .5s;
+    border-radius: 10px;
+}
+
+#workspaces {
+    background-color: rgba(26, 27, 38, 0.5);
+    margin: 5px;
+    padding: 0 5px;
+    border-radius: 10px;
+}
+
+/* Styling for our workspaces module */
+#workspaces button {
+    padding: 0 10px;
+    color: #565f89;
+    transition: all 0.3s ease;
+    border-radius: 8px;
+}
+
+#workspaces button:hover {
+    background-color: rgba(122, 162, 247, 0.2);
+    box-shadow: inset 0 0 0 1px #7aa2f7;
+}
+
+#workspaces button.active {
+    color: #33ccff;
+    border-bottom: 2px solid #33ccff;
+    background: linear-gradient(45deg, rgba(51, 204, 255, 0.2), rgba(0, 255, 153, 0.2));
+}
+
+#workspaces button.urgent {
+    color: #f7768e;
+}
+
+#workspaces button.persistent {
+    color: #565f89;
+}
+
+#workspaces button.occupied {
+    color: #bb9af7;
+}
+
+#clock,
+#network,
+#pulseaudio,
+#custom-vpn {
+    padding: 0 15px;
+    margin: 5px;
+    background-color: rgba(36, 40, 59, 0.8);
+    border-radius: 8px;
+}
+
+#clock {
+    color: #7aa2f7;
+}
+
+#network {
+    color: #9ece6a;
+}
+
+#network.vpn {
+    color: #bb9af7;
+    margin-right: 0;
+    padding-right: 5px;
+}
+
+#pulseaudio {
+    color: #f7768e;
+}
+
+#pulseaudio.muted {
+    color: #565f89;
+}
+
+tooltip {
+    background: rgba(26, 27, 38, 0.9);
+    border: 1px solid #33ccff;
+    border-radius: 10px;
+}
+
+tooltip label {
+    color: #ffffff;
+}

+ 116 - 0
dot-config/wezterm/wezterm.lua

@@ -0,0 +1,116 @@
+local wezterm = require 'wezterm'
+local config = {}
+if wezterm.config_builder then
+  config = wezterm.config_builder()
+end
+
+config.font = wezterm.font 'JetBrainsMono Nerd Font'
+
+config.enable_tab_bar = false
+
+config.colors = {
+  foreground = '#e4e1e6',
+  background = '#1b1b1f',
+
+  -- Overrides the cell background color when the current cell is occupied by the
+  -- cursor and the cursor style is set to Block
+  cursor_bg = '#add8e6',
+  -- Overrides the text color when the current cell is occupied by the cursor
+  cursor_fg = 'black',
+  -- Specifies the border color of the cursor when the cursor style is set to Block,
+  -- or the color of the vertical or horizontal bar when the cursor style is set to
+  -- Bar or Underline.
+  cursor_border = '#add8e6',
+
+  -- the foreground color of selected text
+  selection_fg = 'black',
+  -- the background color of selected text
+  selection_bg = '#fffacd',
+
+  -- The color of the scrollbar "thumb"; the portion that represents the current viewport
+  scrollbar_thumb = '#222222',
+
+  -- The color of the split lines between panes
+  split = '#444444',
+
+  ansi = {
+    '#3b4252',
+    '#bf616a',
+    '#a3be8c',
+    '#ebcb8b',
+    '#81a1c1',
+    '#b48ead',
+    '#88c0d0',
+    '#e5e9f0',
+  },
+  brights = {
+    '#4c566a',
+    '#bf616a',
+    '#a3be8c',
+    '#ebcb8b',
+    '#81a1c1',
+    '#b48ead',
+    '#8fbcbb',
+    '#eceff4',
+  },
+
+  -- Arbitrary colors of the palette in the range from 16 to 255
+  indexed = { [136] = '#af8700' },
+}
+config.cursor_blink_rate = 0
+
+config.disable_default_key_bindings = true
+config.keys = {
+  {
+    key = 'c',
+    mods = 'ALT',
+    action = wezterm.action.CopyTo('Clipboard'),
+  },
+  {
+    key = 'v',
+    mods ='ALT',
+    action = wezterm.action.PasteFrom('Clipboard')
+  },
+  {
+    key = 'k',
+    mods = 'ALT|SHIFT',
+    action = wezterm.action.IncreaseFontSize
+  },
+  {
+    key = 'j',
+    mods = 'ALT|SHIFT',
+    action = wezterm.action.DecreaseFontSize
+  },
+  {
+    key = '0',
+    mods = 'ALT',
+    action = wezterm.action.ResetFontSize
+  },
+  {
+    key = 'u',
+    mods = 'ALT',
+    action = wezterm.action.ScrollByPage(-1)
+  },
+  {
+    key = 'd',
+    mods = 'ALT',
+    action = wezterm.action.ScrollByPage(1)
+  },
+  {
+    key = 'k',
+    mods = 'ALT',
+    action = wezterm.action.ScrollByLine(-1)
+  },
+  {
+    key = 'j',
+    mods = 'ALT',
+    action = wezterm.action.ScrollByLine(1)
+  },
+  {
+    key = 'f',
+    mods = 'ALT',
+    action = wezterm.action.Search { CaseInSensitiveString = '' },
+  },
+}
+
+return config