diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..4ff9f16 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,32 @@ +[global] + monitor = 0 + + follow = none + sort = yes + + width = (0,400) + height = 300 + transparency = 30 + padding = 6 + horizontal_padding = 6 + frame_width = 2 + frame_color = "#00c0b0" + separator_height = 3 + separator_color = frame + gap_size = 5 + + origin = top-right + + offset = 20x20 + + scale = 0 + + notification_limit = 0 + + progress_bar = true + progress_bar_height = 5 + progress_bar_frame_width = 1 + progress_bar_min_width = 150 + progress_bar_max_width = 250 + + font = HurmitNerdFont 12 diff --git a/.config/hypr/apps.conf b/.config/hypr/apps.conf new file mode 100644 index 0000000..c068edb --- /dev/null +++ b/.config/hypr/apps.conf @@ -0,0 +1,8 @@ +# Set programs that you use +# $terminal = alacritty -e tmux +$terminal = kitty +$fileManager = dolphin +$menu = wofi --show drun +$appLauncher = tofi-drun | xargs hyprctl dispatch exec -- +$lockscreen = hyprlock +$nextcloud = nextcloud --background diff --git a/.config/hypr/autostart b/.config/hypr/autostart new file mode 100755 index 0000000..e810e4c --- /dev/null +++ b/.config/hypr/autostart @@ -0,0 +1,29 @@ +#!/usr/bin/bash + +# variables +config=$HOME/.config/hypr + +# wallpaper +hyprpaper & + +# notification daemon +dunst & + +# secrets manager +kwalletd6 & + +# waybar +waybar & + +# syncronisation +syncthing & +nextcloud --background & + +# network-manager tray icon +NetworkManager & +nm-applet & +# other +polkit-kde-authentication-agent-1 & +dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP & +hypridle & +polkit-qt6 & diff --git a/.config/hypr/background.conf b/.config/hypr/background.conf new file mode 100644 index 0000000..8bdbe82 --- /dev/null +++ b/.config/hypr/background.conf @@ -0,0 +1,2 @@ +$w1 = hyprctl hyprpaper wallpaper "DP-1, ~/Pictures/backgrounds/transistor.jpg" +$w1 = hyprctl hyprpaper wallpaper "DP-2, ~/Pictures/backgrounds/transistor.jpg" diff --git a/.config/hypr/gamemode.sh b/.config/hypr/gamemode.sh new file mode 100644 index 0000000..b89b5c4 --- /dev/null +++ b/.config/hypr/gamemode.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh +HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') +if [ "$HYPRGAMEMODE" = 1 ] ; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword decoration:drop_shadow 0;\ + keyword decoration:blur:enabled 0;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 1;\ + keyword decoration:rounding 0" + exit +fi +hyprctl reload diff --git a/.config/hypr/hyprbindings.conf b/.config/hypr/hyprbindings.conf new file mode 100644 index 0000000..bbb484b --- /dev/null +++ b/.config/hypr/hyprbindings.conf @@ -0,0 +1,144 @@ +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +source = ~/.config/hypr/apps.conf +$mainMod = SUPER + +# Switch Keyboard Layout +# bind = $mainMod ALT_L, K, exec, hyprctl switchxkblayout holtek-usb-hid-keyboard next && hyprctl switchxkblayout at-translated-set-2-keyboard next +bind = $mainMod ALT_L, K, exec, hyprctl switchxkblayout holtek-usb-hid-keyboard next; hyprctl switchxkblayout holtek-usb-hid-keyboard-1 next; hyprctl switchxkblayout at-translated-set-2-keyboard next + +# change volume with Volume Keys +# units: None(1% increases), dB, %(works as you'd expect on laptop, but on PC↓) +# percent increases (1%+-) lead to jumps to 10% or 90% on PC with Sharkoon +# keyboard, depending on whether you pressed VolUp or VolDown +# % is needed for the DragonFly, because it is too finegrained with 65k steps +binde = ,XF86AudioLowerVolume, exec, amixer -M -- set Master Playback Switch 1%- +binde = ,XF86AudioRaiseVolume, exec, amixer -M -- set Master Playback Switch 1%+ + +# Reduce effects for performance +bind = WIN, F1, exec, ~/.config/hypr/gamemode.sh + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, Q, exec, $terminal +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, C, killactive, +bind = $mainMod, D, togglesplit, # dwindle +bind = ALT_L, F4, killactive +bind = ALT_L, SPACE, exec, $appLauncher +bind = ALT_L, F11, fullscreenstate, 0 +bind = $mainMod, F11, fullscreenstate, 2 # maximize # fullscreen window w/o fullscreen mode +bind = $mainMod, up, fullscreenstate, 3 # maximize # fullscreen window w/o fullscreen mode +bind = ALT_L, TAB, cyclenext + +# Move focus with mainMod + arrow keys +bind = $mainMod, h, movefocus, l +bind = $mainMod, j, movefocus, d +bind = $mainMod, k, movefocus, u +bind = $mainMod, l, movefocus, r + +# Maximise / Minimise workaround +#bind = $mainMod, up, movetoworkspace, empty +bind = $mainMod, O, fullscreenstate, 1 + +# lock +bind = $mainMod, F12, exec, $lockscreen + +# Move window in direction +bind = $mainMod SHIFT, h, swapwindow, l +bind = $mainMod SHIFT, j, swapwindow, d +bind = $mainMod SHIFT, k, swapwindow, u +bind = $mainMod SHIFT, l, swapwindow, r + +# Move window to other screen +bind = $mainMod SHIFT, left, movewindow, mon:-1 +bind = $mainMod SHIFT, right, movewindow, mon:+1 + +# Resize Window in direction +binde = $mainMod CTRL, h, resizeactive, -25 0 +binde = $mainMod CTRL, j, resizeactive, 0 25 +binde = $mainMod CTRL, k, resizeactive, 0 -25 +binde = $mainMod CTRL, l, resizeactive, 25 0 + +# 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 + +# Move Window to new virtual workspace/ desktop +bind = $mainMod ALT_L, h, movetoworkspace, r-1 +bind = $mainMod ALT_L, l, movetoworkspace, r+1 + +# Switch to next/previous virtual workspace/ desktop, ignore empty +bind = ALT_L, h, workspace, e-1 +bind = ALT_L, l, workspace, e+1 + +# ---- +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, S +bind = $mainMod SHIFT, S, movetoworkspace, special:S + +bind = $mainMod, A, togglespecialworkspace, A +bind = $mainMod SHIFT, A, movetoworkspace, special:A + +bind = $mainMod, X, togglespecialworkspace, X +bind = $mainMod SHIFT, X, movetoworkspace, special:X +# ---- + +# 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 + +bind = SHIFT_LALT_L, h, changegroupactive, b +bind = SHIFT_LALT_L, l, changegroupactive, f +#-------------------- +# will switch to a submap called groups +bind = $mainMod, G, submap, groups + +# will start a submap called "groups" +submap = groups + +# move window into a group according to vim-motion key +bind = , h, moveintogroup, l +bind = , j, moveintogroup, d +bind = , k, moveintogroup, u +bind = , l, moveintogroup, r + +# get window out of group +bind = , G, moveoutofgroup, +# Toggle a group on the current window +bind = $mainMod, t, togglegroup +# lock window group +bind = , L, lockactivegroup + +# use reset to go backc to the global submap +bind = , escape, submap, reset + +# will reset the submap, which will return to the global submap +submap = reset +#-------------------- diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf new file mode 100644 index 0000000..ba3ecba --- /dev/null +++ b/.config/hypr/hypridle.conf @@ -0,0 +1,34 @@ +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. +} + +listener { + timeout = 300 # 5min. + on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = brightnessctl -r # monitor backlight restor. +} + +# turn off keyboard backlight, uncomment this section if have keyboard backlight. +listener { + timeout = 60 # 1min. + on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight. + on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight. +} + +listener { + timeout = 900 # 15min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 1800 # 30min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} + +listener { + timeout = 2800 # 45min + on-timeout = systemctl suspend-then-hibernate # suspend pc, hibernate with delay +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..97c711c --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,184 @@ +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +autogenerated = 0 # remove this line to remove the warning + +# See https://wiki.hyprland.org/Configuring/Monitors/ +#monitor=name,resolution,offset, scale +#offset scales with scale XC +#monitor=DP-2,3840x2160,-2560x0,auto, bitdepth, 10, vrr, 1 +#monitor=DP-1,3840x2160@144,auto,auto, bitdepth, 10, vrr, 1 +monitor=DP-1,3840x2160@60,320x-1440,auto, bitdepth, 10, vrr, 1 #320=(2560-1920)/2 +monitor=DP-1,3840x2160@144,auto,auto, bitdepth, 10, vrr, 1 +monitor=DP-2,3840x2160,-2560x0,auto, bitdepth, 10, vrr, 1 +monitor=eDP-1,1920x1080,0x0,1 +monitor=HDMI-A-1,2560x1440@60.00,0x-1440,1 +monitor=HDMI-A-2,1920x1080@74.97,0x-1080,1 +#monitor=HDMI-A-2,2560x1440@60.00,0x-1440,1 +#monitor=HDMI-A-2,3840x2160@60.00,0x-2160,auto +#monitor=HDMI-A-2,3840x2160,0x-1080,2,bitdepth, 10, vrr, 1 + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +# exec-once = waybar & hyprpaper & dunst & syncthing & $nextcloud & $terminal +exec-once = $HOME/.config/hypr/autostart +exec-once = /usr/lib/polkit-kde-authentication-agent-1 +exec-once = gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" # for GTK3 apps +exec-once = gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" # for GTK4 apps + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf +source = ~/.config/hypr/background.conf +source = ~/.config/hypr/hyprbindings.conf +source = ~/.config/hypr/apps.conf + +# Some default env vars. +env = XCURSOR_SIZE,32 +env = QT_QPA_PLATFORM,wayland # here for calibre, with debatable effect +env = QT_QPA_PLATFORMTHEME,qt6ct # change to qt6ct if you have that +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = GSK_RENDERER,ngl +env = GTK_THEME,Adwaita-dark + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = gb,de + #kb_layout = de,gb + kb_variant = nodeadkeys + kb_model = pc105 + kb_options = caps:escape + kb_rules = + numlock_by_default = true + repeat_rate = 35 + repeat_delay = 300 + + # Follow mouse 1 2 3 : + follow_mouse = 2 + + touchpad { + natural_scroll = yes + } + scroll_factor = 1.0 + + # PC with mouse: now as device specific setting + # sensitivity = -0.4 # -1.0 - 1.0, 0 means no modification. + # accel_profile = flat + # Laptop with touchpad + sensitivity = 0 + accel_profile = adaptive +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 2 + gaps_out = 1 + border_size = 1 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 30deg + col.inactive_border = rgba(595959aa) + + layout = dwindle + + # 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 = 3 + + blur { + enabled = true + size = 1 + passes = 3 + popups = true + vibrancy = 0.3 + vibrancy_darkness = 0.8 + } + + drop_shadow = no + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} +group { + groupbar{ + enabled = true + font_family = "Hurmit Nerd Font Regular" + font_size = 11 + gradients = false + scrolling = false + col.active = rgba(ea1d4e77) + } + col.border_active = rgba(ea1d4ebb) rgba(fd7000bb) 45deg +} + +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, 5, myBezier + animation = windowsOut, 1, 5, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 5, 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 { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + # new_status = master +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = on +} + +misc { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +device { + name = roccat-roccat-leadr-mouse + sensitivity = -0.4 + accel_profile = flat +} +device { + name = razer-razer-taipan-1 + sensitivity = 0.4 + accel_profile = flat +} + +# 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 +# now invalid: # windowrulev2 = nomaximizerequest, class:.* # You'll probably like this. +windowrule = float, pinned, ^(dunst)$ +windowrule = float, pinned, ^(notification)$ +windowrulev2 = float, pinned, title:^(Nextcloud)$ +windowrulev2 = float, title:^(Volume Control)$ +windowrulev2 = float, title:^(Network Connections)$ +windowrulev2 = float, stayfocused, dimaround, fullscreenstate, 0, title:^(Bitwarden - Vivaldi)$ +windowrulev2 = float, pin, workspace unset, noinitialfocus, suppressevents [fullscreen, maximize, activate, activatefocus], title:^(notificationtoasts) +windowrulev2 = workspace 6, noinitialfocus, class:^(steam)$ +windowrulev2 = noinitialfocus, class: ^(steam)$ diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..a264553 --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,57 @@ +disable_loading_bar = false + +background { + monitor = # empty for all monitors + #path = /home/felix/Pictures/backgrounds/arch_linux_bg.png + path = screenshot + # color = rgba(20,20,20,80) + + blur_passes = 3 + blur_size = 1 + noise = 0.2117 + contrast = 0.8916 + brightness = 0.5172 + vibrancy = 0.1696 + vibrancy_darkness = 1.0 +} + +input-field { + monitor = + size = 600, 50 + outline_thickness = 1 + dots_size = 0.25 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + dots_rounding = -1 # -1 default circle, -2 follow input-field rounding + outer_color = rgba(15, 15, 15, 180) + inner_color = rgba(30, 30, 30, 180) + font_color = rgb(200, 200, 200) + fade_on_empty = true + fade_timeout = 500 # Milliseconds before fade_on_empty is triggered. + placeholder_text = Input Password... # Text rendered in the input box when it's empty. + hide_input = false + rounding = -1 # -1 means complete rounding (circle/oval) + check_color = rgba(204, 136, 34, 80) + fail_color = rgba(204, 34, 34, 80) # if authentication failed, changes outer_color and fail message color + fail_text = $FAIL ($ATTEMPTS) # can be set to empty + fail_transition = 300 # transition time in ms between normal outer_color and fail_color + capslock_color = -1 + numlock_color = -1 + bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) + invert_numlock = false # change color if numlock is off + + position = 0, -250 + halign = center + valign = center +} + label { + monitor = + text = $TIME ' + color = hsla(50, 60%, 50%, 0.8) + font_size = 35 + font_family = Z003 + + position = 0, 250 + halign = center + valign = center +} diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..b456ff6 --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,6 @@ +preload=~/Pictures/backgrounds/transistor.jpg +preload=~/Pictures/backgrounds/pexels-eberhardgross-lakemountainstars.jpg + +#wallpaper=,~/Pictures/backgrounds/transistor.jpg +#wallpaper=,~/Pictures/backgrounds/pexels-eberhardgross.jpg +wallpaper=,~/Pictures/backgrounds/pexels-eberhardgross-lakemountainstars.jpg diff --git a/.config/hypr/monitors.rep b/.config/hypr/monitors.rep new file mode 100644 index 0000000..4ef85b1 --- /dev/null +++ b/.config/hypr/monitors.rep @@ -0,0 +1,33 @@ +Monitor DP-1 (ID 0): + 3840x2160@143.98199 at 0x0 + description: Advanced Micro Peripherals Ltd ES07D03 EVE213400622 (DP-1) + make: Advanced Micro Peripherals Ltd + model: ES07D03 + serial: EVE213400622 + active workspace: 1 (1) + special workspace: 0 () + reserved: 0 0 0 0 + scale: 1.50 + transform: 0 + focused: yes + dpmsStatus: 1 + vrr: 0 + activelyTearing: false + +Monitor DP-2 (ID 1): + 3840x2160@59.99700 at 2560x0 + description: Iiyama North America PLG2888UH 0x01010101 (DP-2) + make: Iiyama North America + model: PLG2888UH + serial: 0x01010101 + active workspace: 2 (2) + special workspace: 0 () + reserved: 0 0 0 0 + scale: 1.50 + transform: 0 + focused: no + dpmsStatus: 1 + vrr: 0 + activelyTearing: false + + diff --git a/.config/tofi/config b/.config/tofi/config new file mode 100644 index 0000000..2f4ed94 --- /dev/null +++ b/.config/tofi/config @@ -0,0 +1,323 @@ +# Default config for tofi +# +# Copy this file to ~/.config/tofi/config and get customising! +# +# A complete reference of available options can be found in `man 5 tofi`. + +# +### Fonts +# + # Font to use, either a path to a font file or a name. + # + # If a path is given, tofi will startup much quicker, but any + # characters not in the chosen font will fail to render. + # + # Otherwise, fonts are interpreted in Pango format. + # font = "Nimbus Mono PS" + # font = "hurmit nerd font" + font = /usr/share/fonts/OTF/HurmitNerdFont-Light.otf + # font = /usr/share/fonts/OTF/HurmitNerdFont-Regular.otf + + # Point size of text. + font-size = 19 + + # Comma separated list of OpenType font feature settings to apply, + # if supported by the chosen font. The format is similar to the CSS + # "font-feature-settings" property. + # + # Examples: + # + # font-features = "smcp, c2sc" (all small caps) + # font-features = "liga 0" (disable ligatures) + font-features = "smcp" + + # Comma separated list of OpenType font variation settings to apply + # to variable fonts. The format is similar to the CSS + # "font-variation-settings" property. + # + # Examples: + # + # font-variations = "wght 900" (Extra bold) + # font-variations = "wdth 25, slnt -10" (Narrow and slanted) + font-variations = "" + + # Perform font hinting. Only applies when a path to a font has been + # specified via `font`. Disabling font hinting speeds up text + # rendering appreciably, but will likely look poor at small font pixel + # sizes. + hint-font = true + +# +### Text theming +# + # Default text color + # + # All text defaults to this color if not otherwise specified. + text-color = #FFFFFF + + # All pieces of text have the same theming attributes available: + # + # *-color + # Foreground color + # + # *-background + # Background color + # + # *-background-padding + # Background padding in pixels (comma-delimited, CSS-style list). + # See "DIRECTIONAL VALUES" under `man 5 tofi` for more info. + # + # *-background-corner-radius + # Radius of background box corners in pixels + + # Prompt text theme + # prompt-color = #FFFFFF + prompt-background = #00000000 + prompt-background-padding = 0 + prompt-background-corner-radius = 0 + + # Placeholder text theme + placeholder-color = #FFFFFFA8 + placeholder-background = #00000000 + placeholder-background-padding = 0 + placeholder-background-corner-radius = 15 + + # Input text theme + # input-color = #FFFFFF + input-background = #00000000 + input-background-padding = 0 + input-background-corner-radius = 15 + + # Default result text theme + # default-result-color = #FFFFFF + default-result-background = #00000000 + default-result-background-padding = 0 + default-result-background-corner-radius = 15 + + # Alternate (even-numbered) result text theme + # + # If unspecified, these all default to the corresponding + # default-result-* attribute. + # + # alternate-result-color = #FFFFFF + # alternate-result-background = #00000000 + # alternate-result-background-padding = 0 + # alternate-result-background-corner-radius = 0 + + # Selection text + selection-color = #33ccff + selection-background = #00000000 + selection-background-padding = 0 + selection-background-corner-radius = 15 + + # Matching portion of selection text + selection-match-color = #00ff99 + + +# +### Text cursor theme +# + # Style of the optional text cursor. + # + # Supported values: bar, block, underscore + text-cursor-style = bar + + # Color of the text cursor + # + # If unspecified, defaults to the same as input-color + # text-cursor-color = #FFFFFF + + # Color of text behind the text cursor when text-cursor-style = block + # + # If unspecified, defaults to the same as background-color + # text-cursor-background = #000000 + + # Corner radius of the text cursor + text-cursor-corner-radius = 0 + + # Thickness of the bar and underscore text cursors. + # + # If unspecified, defaults to a font-dependent value when + # text-cursor-style = underscore, or to 2 otherwise. + # text-cursor-thickness = 2 + +# +### Text layout +# + # Prompt to display. + prompt-text = "> " + + # Extra horizontal padding between prompt and input. + prompt-padding = 0 + + # Placeholder input text. + placeholder-text = "" + + # Maximum number of results to display. + # If 0, tofi will draw as many results as it can fit in the window. + num-results = 5 + + # Spacing between results in pixels. Can be negative. + result-spacing = 0 + + # List results horizontally. + horizontal = false + + # Minimum width of input in horizontal mode. + min-input-width = 0 + +# +### Window theming +# + # Width and height of the window. Can be pixels or a percentage. + width = 540 + height = 270 + + # Window background color + background-color = #191A1CA0 + + # Width of the border outlines in pixels. + outline-width = 1 + + # Border outline color + outline-color = #080800 + + # Width of the border in pixels. + border-width = 2 + + # Border color + border-color = #00ff99 + + # Radius of window corners in pixels. + corner-radius = 10 + + # Padding between borders and text. Can be pixels or a percentage. + padding-top = 8 + padding-bottom = 8 + padding-left = 8 + padding-right = 8 + + # Whether to clip text drawing to be within the specified padding. This + # is mostly important for allowing text to be inset from the border, + # while still allowing text backgrounds to reach right to the edge. + clip-to-padding = true + + # Whether to scale the window by the output's scale factor. + scale = true + +# +### Window positioning +# + # The name of the output to appear on. An empty string will use the + # default output chosen by the compositor. + output = "" + + # Location on screen to anchor the window to. + # + # Supported values: top-left, top, top-right, right, bottom-right, + # bottom, bottom-left, left, center. + anchor = top-right + + # Set the size of the exclusive zone. + # + # A value of -1 means ignore exclusive zones completely. + # A value of 0 will move tofi out of the way of other windows' zones. + # A value greater than 0 will set that much space as an exclusive zone. + # + # Values greater than 0 are only meaningful when tofi is anchored to a + # single edge. + exclusive-zone = -1 + + # Window offset from edge of screen. Only has an effect when anchored + # to the relevant edge. Can be pixels or a percentage. + margin-top = 20% + margin-bottom = 0 + margin-left = 0 + margin-right = 3% + +# +### Behaviour +# + # Hide the mouse cursor. + hide-cursor = true + + # Show a text cursor in the input field. + text-cursor = false + + # Sort results by number of usages in run and drun modes. + history = true + + # Specify an alternate file to read and store history information + # from / to. This shouldn't normally be needed, and is intended to + # facilitate the creation of custom modes. + # history-file = /path/to/histfile + + # Select the matching algorithm used. If normal, substring matching is + # used, weighted to favour matches closer to the beginning of the + # string. If prefix, only substrings at the beginning of the string are + # matched. If fuzzy, searching is performed via a simple fuzzy matching + # algorithm. + # + # Supported values: normal, prefix, fuzzy + matching-algorithm = normal + + # If true, require a match to allow a selection to be made. If false, + # making a selection with no matches will print input to stdout. + # In drun mode, this is always true. + require-match = true + + # If true, automatically accept a result if it is the only one + # remaining. If there's only one result on startup, window creation is + # skipped altogether. + auto-accept-single = false + + # If true, typed input will be hidden, and what is displayed (if + # anything) is determined by the hidden-character option. + hide-input = false + + # Replace displayed input characters with a character. If the empty + # string is given, input will be completely hidden. + # This option only has an effect when hide-input is set to true. + hidden-character = "*" + + # If true, use physical keys for shortcuts, regardless of the current + # keyboard layout. If false, use the current layout's keys. + physical-keybindings = true + + # Instead of printing the selected entry, print the 1-based index of + # the selection. This option has no effect in run or drun mode. If + # require-match is set to false, non-matching input will still result + # in the input being printed. + print-index = false + + # If true, directly launch applications on selection when in drun mode. + # Otherwise, just print the command line to stdout. + drun-launch = false + + # The terminal to run terminal programs in when in drun mode. + # This option has no effect if drun-launch is set to true. + # Defaults to the value of the TERMINAL environment variable. + # terminal = foot + + # Delay keyboard initialisation until after the first draw to screen. + # This option is experimental, and will cause tofi to miss keypresses + # for a short time after launch. The only reason to use this option is + # performance on slow systems. + late-keyboard-init = false + + # If true, allow multiple simultaneous processes. + # If false, create a lock file on startup to prevent multiple instances + # from running simultaneously. + multi-instance = false + + # Assume input is plain ASCII, and disable some Unicode handling + # functions. This is faster, but means e.g. a search for "e" will not + # match "é". + ascii-input = false + +# +### Inclusion +# + # Configs can be split between multiple files, and then included + # within each other. + # include = /path/to/config diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..72e42c1 --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,127 @@ +{ + "layer": "bottom", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + //"height": 30, // Waybar height (to be removed for auto height) + "height": 25, + "mode": "dock", // (dock|hide|invisible|overlay) + "exclusive": "false", + // "width": 1280, // Waybar width + "spacing": 4, // Gaps between modules (4px) + // Choose the order of the modules + "modules-left": ["hyprland/window", "custom/media"], + "modules-center": ["hyprland/workspaces"], + "modules-right": ["pulseaudio", "cpu", "memory", "temperature", "backlight", "hyprland/language", "battery", "clock", "tray"], + "hyprland/workspaces": { + "disable-scroll": false, + "all-outputs": false, + "warp-on-scroll": true, + "format": "{name}", + "show-special": true, + "persistent-workspaces": { + "*": 5, + } + }, + "hyprland/window": { + "format": "{title}" + }, + "hyprland/language": { + "format-en": "UK", + "format-de": "DE", + "on-click": "hyprctl switchxkblayout at-translated-set-2-keyboard next" + }, + "keyboard-state": { + // "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{used}GB", + "format-alt": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C", // {icon}", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}%",// {icon}", + "format-icons": ["", "", "", "", "", "", "", "", ""] + }, + "battery": { + "states": { + "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{time} {icon}", + "format-alt": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""], + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + // "format-wifi": "{essid} ({signalStrength}%) ", + // "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": 0.25, // %, 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-qt -t 3", + "on-click-middle": "amixer set Master Playback Switch toggle --quiet", + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + } +} + diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..11732c9 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,300 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: "Hurmit Nerd Font", FontAwesome, Roboto, Helvetica, Arial, sans-serif; + font-size: 1.1rem; +} + +window#waybar { + background-color: rgba(43, 48, 59, 0.0); + /*border-bottom: 3px solid rgba(100, 114, 125, 0.5);*/ + color: rgb(204,204,204); + /*padding-top: 2px; + margin-top: 2px;*/ + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.0; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +button { + /* Use box-shadow instead of border so the text isn't offset */ + /* box-shadow: inset 0 -3px transparent; */ + /* Avoid rounded borders under each button name */ + border: 0px; + border-radius: 0px; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +button:hover { + background: inherit; + box-shadow: inset 0 3px #ffffff; +} + +#workspaces button { + padding: 0 5px; + border: 1px solid transparent; /*avoid jumping by always having a border*/ + background-color: transparent; + color: #ffffff; + border-radius: 8px; + transition: linear .1s; +} + +#workspaces button.empty { + color: rgba(255, 255, 255, .4); +} + +#workspaces button:hover { + border: 1px solid rgba(40, 220, 255, 0.8); + box-shadow: inset 0 0 0 0 transparent; + transition: linear 0s; +} +#workspaces button.active { + color: rgba(40, 240, 255, 0.9); + transition: linear .1s; +} + +/*#workspaces button.active { + border-top: 2px solid white; + padding-top: 1px; +}*/ + +#workspaces button.special.active, +#workspaces button.special { + background-color: transparent; +} + +#workspaces button.urgent { + background-color: rgba(250, 17, 55, 0.6); +} + +#workspaces { + background-color: rgba(255, 255, 255, .1); + border: 1px solid; + border-radius: 8px; + padding: 1px; +} + +#mode { + background-color: #64727D; + /*border-bottom: 3px solid #ffffff;*/ +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#language, +#mpd { + padding: 0 8px; + color: #909090; + border-radius: 0px; + border-top: 1rem; + border: solid; +} +#backlight, +#battery, +#clock, +#tray { + color: #eeeeee; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + background-color: #64727D; + border-radius: 5px; + margin: 2px 0; +} + +#battery { + border-top: 2px #ffffff; +} + +#battery.charging, #battery.plugged { + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + } +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +label:focus { + background-color: #000000; +} + +#cpu { + border-top: solid 2px #1de8d1; +} + +/*#memory { + border-top: solid 2px #9b59b6; +}*/ + +#disk { + background-color: #964B00; +} + +#backlight { + border-top: solid 2px #d1f2f2; +} + +#network { + border-top: solid 2px #2980b9; +} + +#network.disconnected { + border-top: 2px #f53c3c; +} + +#pulseaudio { + border-top: 2px #f1c40f; + color: #1acbc4; +} + +#pulseaudio.muted { + border-top: 2px #90b1b1; + color: #01534c; +} + +#wireplumber { + color: #000000; +} + +#custom-media { + /*background-color: #66cc99;*/ + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + /*background-color: #66cc99;*/ +} + +#custom-media.custom-vlc { + /*background-color: #ffa000;*/ +} + +#temperature { + border-top: 2px #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + border-top: 2px #2980b9; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; +} + +#idle_inhibitor { + background-color: #2d3436; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + +#mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} + +#language { + border-top: 2px #df73cf; + color: #909090; + padding: 0 5px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state { + border-top: 2px #97e1ad; + padding: 0 0px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad.empty { + background-color: transparent; +}