diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index dc611fb..e00f356 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -1,15 +1,14 @@ # ####################################################################################### -# AUTOGENERATED HYPR CONFIG. -# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, -# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. +# AUTOGENERATED HYPRLAND CONFIG. +# EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS. # ####################################################################################### autogenerated = 0 # remove this line to remove the warning # This is an example Hyprland config file. # Refer to the wiki for more information. -# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/ +# https://wiki.hypr.land/Configuring/ # Please note not all available settings / options are set here. # For a full list, see the wiki @@ -23,21 +22,21 @@ autogenerated = 0 # remove this line to remove the warning ### MONITORS ### ################ -# See https://wiki.hyprland.org/Configuring/Monitors/ -monitor=DP-6,preferred,0x0,auto -monitor=eDP-1,preferred,0x2160,1.8 +# See https://wiki.hypr.land/Configuring/Monitors/ +monitor=,preferred,auto,auto +exec-once = swaybg -i /usr/share/backgrounds/gnome/vnc-d.png ################### ### MY PROGRAMS ### ################### -# See https://wiki.hyprland.org/Configuring/Keywords/ +# See https://wiki.hypr.land/Configuring/Keywords/ # Set programs that you use -$terminal = footclient -$fileManager = dolphin -$menu = wofi --show drun +$terminal = kitty +$fileManager = nautilus +$menu = wofi --show drun -GI ################# @@ -46,102 +45,157 @@ $menu = wofi --show drun # Autostart necessary processes (like notifications daemons, status bars, etc.) # Or execute your favorite apps at launch like this: -exec-once = waybar -exec-once = foot --server -exec-once = nextcloud-desktop-client.nextcoud + # exec-once = $terminal # exec-once = nm-applet & # exec-once = waybar & hyprpaper & firefox - +exec-once = nm-applet & +exec-once = blueman-applet & +exec-once = shikane & +exec-once = waybar -c ~/.config/hypr/waybar/config.jsonc -s ~/.config/hypr/waybar/style.css & +exec-once = hyprpm reload -n +exec-once = flatpak run com.github.wwmm.easyeffects -w +exec-once = powertop --auto-tune +exec-once = systemctl --user start hyprpolkitagent + ############################# ### ENVIRONMENT VARIABLES ### ############################# -# See https://wiki.hyprland.org/Configuring/Environment-variables/ +# See https://wiki.hypr.land/Configuring/Environment-variables/ env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 +################### +### PERMISSIONS ### +################### + +# See https://wiki.hypr.land/Configuring/Permissions/ +# Please note permission changes here require a Hyprland restart and are not applied on-the-fly +# for security reasons + +# ecosystem { +# enforce_permissions = 1 +# } + +permission = /usr/(bin|local/bin)/grim, screencopy, allow +permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow +permission = /usr/(bin|local/bin)/hyprpm, plugin, allow + + ##################### ### LOOK AND FEEL ### ##################### -# Refer to https://wiki.hyprland.org/Configuring/Variables/ +# Refer to https://wiki.hypr.land/Configuring/Variables/ -# https://wiki.hyprland.org/Configuring/Variables/#general -general { - gaps_in = 2 - gaps_out = 2 +# https://wiki.hypr.land/Configuring/Variables/#general +general { + gaps_in = 4 + gaps_out = 4 border_size = 1 - # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + # 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 = true + resize_on_border = false - # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + # Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on allow_tearing = false - layout = dwindle + #layout = dwindle + layout = hy3 } -# https://wiki.hyprland.org/Configuring/Variables/#decoration + +# https://wiki.hypr.land/Configuring/Variables/#decoration decoration { - rounding = 10 + rounding = 6 + rounding_power = 2 # Change transparency of focused and unfocused windows active_opacity = 1.0 inactive_opacity = 1.0 - drop_shadow = true - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba(1a1a1aee) + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } - # https://wiki.hyprland.org/Configuring/Variables/#blur + # https://wiki.hypr.land/Configuring/Variables/#blur blur { enabled = true size = 3 passes = 1 - + vibrancy = 0.1696 } } -# https://wiki.hyprland.org/Configuring/Variables/#animations +# https://wiki.hypr.land/Configuring/Variables/#animations animations { - enabled = true + enabled = yes, please :) - # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + # 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 - 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 + # 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 } -# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +# 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 = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrule = rounding 0, floating:0, onworkspace:w[tv1] +# windowrule = bordersize 0, floating:0, onworkspace:f[1] +# windowrule = rounding 0, floating:0, onworkspace:f[1] + +# 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.hyprland.org/Configuring/Master-Layout/ for more +# See https://wiki.hypr.land/Configuring/Master-Layout/ for more master { new_status = master } -# https://wiki.hyprland.org/Configuring/Variables/#misc -misc { +# 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. :( } @@ -151,7 +205,7 @@ misc { ### INPUT ### ############# -# https://wiki.hyprland.org/Configuring/Variables/#input +# https://wiki.hypr.land/Configuring/Variables/#input input { kb_layout = us kb_variant = @@ -165,64 +219,68 @@ input { touchpad { natural_scroll = false + tap-to-click = false } } -# https://wiki.hyprland.org/Configuring/Variables/#gestures -gestures { - workspace_swipe = true -} +# See https://wiki.hypr.land/Configuring/Gestures +gesture = 3, horizontal, workspace # Example per-device config -# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more device { name = epic-mouse-v1 sensitivity = -0.5 } -#################### -### KEYBINDINGSS ### -#################### +################### +### KEYBINDINGS ### +################### -# See https://wiki.hyprland.org/Configuring/Keywords/ +# See https://wiki.hypr.land/Configuring/Keywords/ $mainMod = SUPER # Sets "Windows" key as main modifier -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more bind = $mainMod, RETURN, exec, $terminal -bind = $mainMod, R, exec, $menu -bind = $mainMod, E, exec, $fileManager - -#bind = $mainMod, J, togglesplit, # dwindle -bind = $mainMod, W, togglegroup, +bind = $mainMod, D, exec, $menu +bind = $mainMod, F, fullscreen bind = $mainMod SHIFT, SPACE, togglefloating, -bind = $mainMod SHIFT, Q, killactive, +bind = $mainMod SHIFT, Q, hy3:killactive, bind = $mainMod SHIFT, M, exit, +bind = $mainMod SHIFT, S, pin -# Move focus with hjkl -bind = $mainMod, h, movefocus, l -bind = $mainMod, l, movefocus, r -bind = $mainMod, k, movefocus, u -bind = $mainMod, j, movefocus, d - -# Move focus with hjkl -bind = $mainMod SHIFT, h, movewindoworgroup, l -bind = $mainMod SHIFT, l, movewindoworgroup, r -bind = $mainMod SHIFT, k, movewindoworgroup, u -bind = $mainMod SHIFT, j, movewindoworgroup, d - -# move inside of grouped windows -bind = $mainMod, n, changegroupactive, f -bind = $mainMod, p, changegroupactive, b +bind = $mainMod, B, hy3:makegroup, h +bind = $mainMod, V, hy3:makegroup, v +bind = $mainMod, W, hy3:makegroup, tab +bind = $mainMod, A, hy3:changefocus, raise +bind = $mainMod, X, hy3:locktab +bind = $mainMod, E, hy3:expand, expand +bind = $mainMod, R, hy3:changegroup, opposite +bind = $mainMod SHIFT, A, hy3:changefocus, lower +bind = $mainMod SHIFT, E, hy3:expand, base # 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 +bind = $mainMod, h, hy3:movefocus, l +bind = $mainMod, j, hy3:movefocus, d +bind = $mainMod, k, hy3:movefocus, u +bind = $mainMod, l, hy3:movefocus, r +bind = $mainMod, left, hy3:movefocus, l +bind = $mainMod, down, hy3:movefocus, d +bind = $mainMod, up, hy3:movefocus, u +bind = $mainMod, right, hy3:movefocus, r +bind = $mainMod SHIFT, h, hy3:movewindow, l, once +bind = $mainMod SHIFT, j, hy3:movewindow, d, once +bind = $mainMod SHIFT, k, hy3:movewindow, u, once +bind = $mainMod SHIFT, l, hy3:movewindow, r, once +bind = $mainMod SHIFT, left, hy3:movewindow, l, once +bind = $mainMod SHIFT, down, hy3:movewindow, d, once +bind = $mainMod SHIFT, up, hy3:movewindow, u, once +bind = $mainMod SHIFT, right, hy3:movewindow, r, once + # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 @@ -236,24 +294,16 @@ 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 - -bind = $mainMod, F, fullscreen - -bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @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 = ,XF86MonBrightnessDown, exec, brightnessctl set 5%- -bindel = ,XF86MonBrightnessUp ,exec ,brightnessctl set 5%+ +bind = $mainMod SHIFT, 1, hy3:movetoworkspace, 1 +bind = $mainMod SHIFT, 2, hy3:movetoworkspace, 2 +bind = $mainMod SHIFT, 3, hy3:movetoworkspace, 3 +bind = $mainMod SHIFT, 4, hy3:movetoworkspace, 4 +bind = $mainMod SHIFT, 5, hy3:movetoworkspace, 5 +bind = $mainMod SHIFT, 6, hy3:movetoworkspace, 6 +bind = $mainMod SHIFT, 7, hy3:movetoworkspace, 7 +bind = $mainMod SHIFT, 8, hy3:movetoworkspace, 8 +bind = $mainMod SHIFT, 9, hy3:movetoworkspace, 9 +bind = $mainMod SHIFT, 0, hy3:movetoworkspace, 10 # Example special workspace (scratchpad) bind = $mainMod, MINUS, togglespecialworkspace, magic @@ -267,18 +317,32 @@ bind = $mainMod, mouse_up, workspace, e-1 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.hyprland.org/Configuring/Window-Rules/ for more -# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules +# See https://wiki.hypr.land/Configuring/Window-Rules/ for more +# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules -# Example windowrule v1 -# windowrule = float, ^(kitty)$ +# Example windowrule +# windowrule = float,class:^(kitty)$,title:^(kitty)$ -# Example windowrule v2 -# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# Ignore maximize requests from apps. You'll probably like this. +#windowrule = suppressevent maximize, class:.* -windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. +# Fix some dragging issues with XWayland +#windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 diff --git a/.config/hypr/waybar/config.jsonc b/.config/hypr/waybar/config.jsonc new file mode 100644 index 0000000..7a39245 --- /dev/null +++ b/.config/hypr/waybar/config.jsonc @@ -0,0 +1,118 @@ +// -*- mode: jsonc -*- +{ + "spacing": 2, // Gaps between modules (4px) + "modules-left": [ + "hyprland/workspaces", + "hyprland/mode", + "hyprland/scratchpad", + "hyprland/window" + ], + "modules-center": [ + //"sway/window" + "clock", + ], + "modules-right": [ + //"mpd", + "pulseaudio", + //"network", + "battery", + "tray" + //"custom/power" + ], + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "tooltip-format": "{app}: {title}" + }, + "tray": { + // "icon-size": 21, + "spacing": 10, + // "icons": { + // "blueman": "bluetooth", + // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png" + // } + }, + "clock": { + //"timezone": "America/Los_Angeles", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format": "{:%r %Y-%m-%d}", + //"format": "{:%R %p %Y-%m-%d}", + //"format-alt": "{:%Y-%m-%d}" + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + //"format": "{time} {capacity}% {icon}", + "format": "{capacity}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% C", + "format-plugged": "{capacity}% P", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "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-disconnected": "Disconnected", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, 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/media": { + "format": "{icon} {text}", + "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/hypr/waybar/style.css b/.config/hypr/waybar/style.css new file mode 100644 index 0000000..3fe99e7 --- /dev/null +++ b/.config/hypr/waybar/style.css @@ -0,0 +1,321 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + /*font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; */ + /*font-family: "JetBrainsMono NF";*/ + font-family: "JetBrainsMonoNFM-Regular"; + font-size: 13px; + font-weight: bold; +} + +window#waybar { + /*background-color: rgba(43, 48, 59, 0.5); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); */ + background-color: rgba(0, 0, 0, 1); + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +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: none; + border-radius: 0; +} + +/* 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; +} + +/* you can set a style on hover for any module like this */ +#pulseaudio:hover { + /*background-color: #a37800;*/ +} + +#workspaces button { + padding: 0 4px; + /*background-color: transparent;*/ + color: #ffffff; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: #64727D; + /*box-shadow: inset 0 -3px #ffffff;*/ +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#power-profiles-daemon, +#mpd { + padding: 0 10px; + color: #ffffff; +} + +#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;*/ +} + +#battery { + /*background-color: #ffffff; + color: #000000;*/ +} + +#battery.charging, #battery.plugged { + /*color: #ffffff; + background-color: #26A65B;*/ +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +/* Using steps() instead of linear as a timing function to limit cpu usage */ +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#power-profiles-daemon { + padding-right: 15px; +} + +#power-profiles-daemon.performance { + background-color: #f53c3c; + color: #ffffff; +} + +#power-profiles-daemon.balanced { + background-color: #2980b9; + color: #ffffff; +} + +#power-profiles-daemon.power-saver { + background-color: #2ecc71; + color: #000000; +} + +label:focus { + background-color: #000000; +} + +#cpu { + background-color: #2ecc71; + color: #000000; +} + +#memory { + background-color: #9b59b6; +} + +#disk { + background-color: #964B00; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + /*background-color: #2980b9;*/ +} + +#network.disconnected { + /*background-color: #f53c3c;*/ +} + +#pulseaudio { + /*background-color: #f1c40f;*/ + /*color: #000000;*/ +} + +#pulseaudio.muted { + /*background-color: #90b1b1;*/ + /*color: #2a5c45;*/ +} + +#wireplumber { + background-color: #fff0f5; + color: #000000; +} + +#wireplumber.muted { + background-color: #f53c3c; +} + +#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 { + background-color: #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + /*background-color: #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 { + background: #00b093; + color: #740864; + padding: 0 5px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state { + background: #97e1ad; + color: #000000; + 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; +} + +#privacy { + padding: 0; +} + +#privacy-item { + padding: 0 5px; + color: white; +} + +#privacy-item.screenshare { + background-color: #cf5700; +} + +#privacy-item.audio-in { + background-color: #1ca000; +} + +#privacy-item.audio-out { + background-color: #0069d4; +} diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 72b2b2b..a05809b 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,37 +1,4 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, - }) -end - -vim.opt.rtp:prepend(lazypath) --- coq used for completion -vim.g.coq_settings = { - auto_start = true, - xdg = true, - completion = { - always = false, - }, - keymap = { - manual_complete = '', - } -} - --- code completion -require('lazy').setup('plugins') - -local coq = require 'coq' -require("mason").setup() -- used for automatically enabling lsp and coq -require("mason-lspconfig").setup() - --- Settings ---vim.cmd('source ~/.config/nvim/settings.vim') +require("config.lazy") -- colorscheme vim.o.termguicolors = true @@ -40,16 +7,20 @@ vim.opt.winborder = 'rounded' --vim.cmd("colorscheme gruvbox ") --vim.cmd("colorscheme retrobox") +vim.opt.clipboard = "unnamedplus" -- uses the clipboard register for all operations except yank. + vim.cmd("set nocompatible") vim.cmd("syntax on") vim.cmd("filetype plugin indent on") vim.cmd("set number") + vim.cmd("set relativenumber") vim.cmd("set expandtab") vim.cmd("set shiftwidth=4") vim.cmd("set softtabstop=4") vim.cmd("set tabstop=4") vim.cmd("set smartindent") + vim.cmd("set backspace=indent,eol,start") vim.cmd("set colorcolumn=81") vim.cmd("set textwidth=80") @@ -57,13 +28,10 @@ vim.cmd("set wrap") vim.cmd("set linebreak") vim.cmd("noswapfile") +vim.cmd("set autoread") +vim.cmd("set complete-=i") + vim.cmd("au FileType python set fileformat=unix encoding=utf-8") vim.cmd("au FileType markdown,tex set spell spelllang=en_us") --- keymaps -vim.keymap.set('n', '/', ':nohlsearch') -vim.keymap.set('n', 'b', ':buffers') -vim.keymap.set('n', 'bp', ':bp') -vim.keymap.set('n', 'bn', ':bn') - diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index cefacaa..74c8c85 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -1,20 +1,13 @@ { - "auto-save.nvim": { "branch": "main", "commit": "37c82fd548e3f5ffc2d9d020a65dac1044584f44" }, "black-metal-theme-neovim": { "branch": "main", "commit": "6d0207871387077f40d5396ab1ae90520e688d36" }, - "conform.nvim": { "branch": "master", "commit": "9d859cbfbde7a1bd1770e7c97aef30ec5a237a71" }, - "copilot.vim": { "branch": "release", "commit": "da369d90cfd6c396b1d0ec259836a1c7222fb2ea" }, - "coq_nvim": { "branch": "coq", "commit": "d2aeb3221cb46bfd1c51afd1b247d092c52ec0d6" }, - "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "4d0e5b49363cac187326998b96aa6a2884e0e89b" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "mini.completion": { "branch": "main", "commit": "4d451f82f193f6751719935a63d16ccb79a76e0b" }, + "mini.nvim": { "branch": "main", "commit": "c163117900c17d4abf30bc09452a261c8536060c" }, "nvim-lspconfig": { "branch": "master", "commit": "54617a18f4cf46f0c2f6d024fa6feb7515fe036d" }, "nvim-treesitter": { "branch": "master", "commit": "92d2501d698e0fe855bd222540f9648890fab6c7" }, - "nvim-web-devicons": { "branch": "master", "commit": "19d257cf889f79f4022163c3fbb5e08639077bd8" }, "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "render-markdown.nvim": { "branch": "main", "commit": "fc05fb7c56795f191b6800799a2ec6ea325ba715" }, "telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, - "vim-tmux-navigator": { "branch": "master", "commit": "97e58f2b3b4f8fd30ce149302f10202f363cc361" }, - "zen-mode.nvim": { "branch": "main", "commit": "dfcb72a2dfeedc5342b2ee3a68c83243d682ba3c" } + "vim-tmux-navigator": { "branch": "master", "commit": "97e58f2b3b4f8fd30ce149302f10202f363cc361" } } diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..205bc87 --- /dev/null +++ b/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,35 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +--vim.g.mapleader = "/\" +--im.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + -- install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + -- checker = { enabled = true }, +}) diff --git a/.config/nvim/lua/plugins/auto-save.lua b/.config/nvim/lua/plugins/auto-save.lua deleted file mode 100644 index 2ae9941..0000000 --- a/.config/nvim/lua/plugins/auto-save.lua +++ /dev/null @@ -1,19 +0,0 @@ -return{ - "okuuva/auto-save.nvim", - --version = '*', -- see https://devhints.io/semver, alternatively use '*' to use the latest tagged release - cmd = "ASToggle", -- optional for lazy loading on command - execution_message = { - message = function() -- message to print on save - return ("AutoSave: saved at " .. vim.fn.strftime("%H:%M:%S")) - end, - dim = 0.18, -- dim the color of `message` - cleaning_interval = 1250, -- (milliseconds) automatically clean MsgArea after displaying `message`. See :h MsgArea - }, - event = { "InsertLeave", "TextChanged" }, -- optional for lazy loading on trigger events - opts = { - -- your config goes here - -- or just leave it empty :) - enabled = false, - debug = true, - }, -} diff --git a/.config/nvim/lua/plugins/conform.lua b/.config/nvim/lua/plugins/conform.lua deleted file mode 100644 index f6ff6a8..0000000 --- a/.config/nvim/lua/plugins/conform.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - 'stevearc/conform.nvim', - opts = {}, - config = function () - require("conform").setup({ - formatters_by_ft = { - tex = { "latexindent" }, - --lua = { "stylua" }, - -- Conform will run multiple formatters sequentially - --python = { "isort", "black" }, - -- You can customize some of the format options for the filetype (:help conform.format) - --rust = { "rustfmt", lsp_format = "fallback" }, - -- Conform will run the first available formatter - --javascript = { "prettierd", "prettier", stop_after_first = true }, - }, - }) - - end -} diff --git a/.config/nvim/lua/plugins/copilot.lua b/.config/nvim/lua/plugins/copilot.lua deleted file mode 100644 index 3e92ab6..0000000 --- a/.config/nvim/lua/plugins/copilot.lua +++ /dev/null @@ -1,12 +0,0 @@ -return { - 'github/copilot.vim', - config = function() - vim.keymap.set('i', '', 'copilot#Accept("\\")', { - expr = true, - replace_keycodes = false - }) - vim.keymap.set('i', '', '(copilot-accept-word)') - vim.g.copilot_enabled = 'v:false' - end -} - diff --git a/.config/nvim/lua/plugins/harpoon.lua b/.config/nvim/lua/plugins/harpoon.lua deleted file mode 100644 index 54db346..0000000 --- a/.config/nvim/lua/plugins/harpoon.lua +++ /dev/null @@ -1,23 +0,0 @@ -return { - 'ThePrimeagen/harpoon', - config = function(_, opts) - require('harpoon').setup(opts) - local mark = require('harpoon'.. ".mark") - local ui = require('harpoon'.. ".ui") - - -- Harpoon marked files 1 through 4. - vim.keymap.set("n", "", function() ui.nav_file(1) end) - vim.keymap.set("n", "", function() ui.nav_file(2) end) - vim.keymap.set("n", "", function() ui.nav_file(3) end) - vim.keymap.set("n", "", function() ui.nav_file(4) end) - - -- Harpoon next and previous. - vim.keymap.set("n", "", function() ui.nav_next() end) - vim.keymap.set("n", "", function() ui.nav_prev() end) - - -- Harpoon user interface. - vim.keymap.set("n", "hq", ui.toggle_quick_menu) - vim.keymap.set("n", "ha", mark.add_file) - - end -} diff --git a/.config/nvim/lua/plugins/lsp-config.lua b/.config/nvim/lua/plugins/lsp-config.lua deleted file mode 100644 index fffe64b..0000000 --- a/.config/nvim/lua/plugins/lsp-config.lua +++ /dev/null @@ -1,12 +0,0 @@ -return { - "mason-org/mason-lspconfig.nvim", - dependencies = { - "mason-org/mason.nvim", - "neovim/nvim-lspconfig", - "ms-jpq/coq_nvim", -- Optional (auto complete) - }, - config = function() - --vim.lsp.config('lua_ls',coq.lsp_ensure_capabilities()) - --vim.lsp.config('clangd',coq.lsp_ensure_capabilities()) - end -} diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua deleted file mode 100644 index c6dd481..0000000 --- a/.config/nvim/lua/plugins/lualine.lua +++ /dev/null @@ -1,46 +0,0 @@ -return{ - 'nvim-lualine/lualine.nvim', - dependencies = { 'nvim-tree/nvim-web-devicons', opt = true }, - config = function() - require('lualine').setup { - options = { - icons_enabled = true, - theme = 'auto', - component_separators = { left = '', right = ''}, - section_separators = { left = '', right = ''}, - disabled_filetypes = { - statusline = {}, - winbar = {}, - }, - ignore_focus = {}, - always_divide_middle = true, - globalstatus = false, - refresh = { - statusline = 1000, - tabline = 1000, - winbar = 1000, - } - }, - sections = { - lualine_a = {'mode'}, - lualine_b = {'branch', 'diff', 'diagnostics'}, - lualine_c = {'filename'}, - lualine_x = {'encoding', 'fileformat', 'filetype'}, - lualine_y = {'progress'}, - lualine_z = {'location'} - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = {'filename'}, - lualine_x = {'location'}, - lualine_y = {}, - lualine_z = {} - }, - tabline = {}, - winbar = {}, - inactive_winbar = {}, - extensions = {} - } - end -} diff --git a/.config/nvim/lua/plugins/mason.lua b/.config/nvim/lua/plugins/mason.lua new file mode 100644 index 0000000..cd7b751 --- /dev/null +++ b/.config/nvim/lua/plugins/mason.lua @@ -0,0 +1,54 @@ +return { + "mason-org/mason-lspconfig.nvim", + dependencies = { + {"mason-org/mason.nvim"}, + {'neovim/nvim-lspconfig'}, + + {'nvim-mini/mini.nvim'}, + {'nvim-mini/mini.completion'}, + }, + config = function() + require("mason").setup() + require("mason-lspconfig").setup {} + + -- NOTE: this is meant to be backwards compatible with Neovim v0.9 + --- + -- Autocompletion + --- + + require('mini.snippets').setup() + require('mini.completion').setup() + + --- + -- Language server configuration + --- + + -- These keymaps are the defaults in Neovim v0.10 + if vim.fn.has('nvim-0.11') == 0 then + -- NOTE: vim.diagnostic.goto_* methods are deprecated in v0.11 + -- that's why we put these under a conditional block + vim.keymap.set('n', '[d', 'lua vim.diagnostic.goto_prev()') + vim.keymap.set('n', ']d', 'lua vim.diagnostic.goto_next()') + vim.keymap.set('n', 'd', 'lua vim.diagnostic.open_float()') + vim.keymap.set('n', '', 'lua vim.diagnostic.open_float()') + end + + vim.api.nvim_create_autocmd('LspAttach', { + callback = function(event) + local bufmap = function(mode, rhs, lhs) + vim.keymap.set(mode, rhs, lhs, {buffer = event.buf}) + end + + -- These keymaps are the defaults in Neovim v0.11 + bufmap('n', 'K', 'lua vim.lsp.buf.hover()') + bufmap('n', 'grr', 'lua vim.lsp.buf.references()') + bufmap('n', 'gri', 'lua vim.lsp.buf.implementation()') + bufmap('n', 'grn', 'lua vim.lsp.buf.rename()') + bufmap('n', 'gra', 'lua vim.lsp.buf.code_action()') + bufmap('n', 'gO', 'lua vim.lsp.buf.document_symbol()') + bufmap({'i', 's'}, '', 'lua vim.lsp.buf.signature_help()') + end, + }) + + end +} diff --git a/.config/nvim/lua/plugins/render-makdown.lua b/.config/nvim/lua/plugins/render-makdown.lua deleted file mode 100644 index dc0ecb2..0000000 --- a/.config/nvim/lua/plugins/render-makdown.lua +++ /dev/null @@ -1,26 +0,0 @@ -return { - 'MeanderingProgrammer/render-markdown.nvim', - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons - ---@module 'render-markdown' - ---@type render.md.UserConfig - opts = { - completions = { lsp = { enabled = true } }, - render_modes = true, - heading = { - width = 'block', - min_width = 80, - }, - code = { - disable_background = { 'diff' }, - }, - indent = { - enabled = true, - skip_heading = true, - }, - sign = { - enabled = true, - }, - }, -} diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua index c28ed36..a459e4f 100644 --- a/.config/nvim/lua/plugins/telescope.lua +++ b/.config/nvim/lua/plugins/telescope.lua @@ -1,12 +1,13 @@ +-- plugins/telescope.lua: return { - 'nvim-telescope/telescope.nvim', tag = '0.1.2', + 'nvim-telescope/telescope.nvim', tag = 'v0.1.9', dependencies = { 'nvim-lua/plenary.nvim' }, config = function() - local builtin = require('telescope.builtin') - vim.keymap.set('n', 'ff', builtin.find_files, {}) - vim.keymap.set('n', 'fg', builtin.live_grep, {}) - vim.keymap.set('n', 'fb', builtin.buffers, {}) - vim.keymap.set('n', 'fh', builtin.help_tags, {}) + local builtin = require('telescope.builtin') + vim.keymap.set('n', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'fb', builtin.buffers, {}) + vim.keymap.set('n', 'fh', builtin.help_tags, {}) require('telescope').setup{ pickers = { diff --git a/.config/nvim/lua/plugins/zen-mode.lua b/.config/nvim/lua/plugins/zen-mode.lua deleted file mode 100644 index ad5fa76..0000000 --- a/.config/nvim/lua/plugins/zen-mode.lua +++ /dev/null @@ -1,11 +0,0 @@ -return { - "folke/zen-mode.nvim", - opts = { - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the configuration section below - window = { - width = 90, -- width of the Zen window - } - } -} diff --git a/.config/nvim/settings.vim b/.config/nvim/settings.vim deleted file mode 100644 index 07c6708..0000000 --- a/.config/nvim/settings.vim +++ /dev/null @@ -1,56 +0,0 @@ -set nocompatible -syntax on -filetype plugin indent on -set number -set relativenumber -set expandtab -set shiftwidth=4 -set softtabstop=4 -set tabstop=4 -set smartindent -set backspace=indent,eol,start - -set colorcolumn=81 -"hi ColorColumn ctermbg=lightgrey guibg=lightgrey -set textwidth=80 -set wrap -set linebreak - -set autoread " Set to auto read when a file is changed from the outside -set path+=** -set wildmenu -set showcmd -set wildmode=longest:full,full -set wildoptions=pum -set wildignore+=*/tmp/*,*.so,*.swp,*.zip -set wildignore+=*\\tmp\\*,*.exe - -set number ruler -set showmatch -set showbreak=↳\ \ -set hidden -set hlsearch -set noswapfile -set mouse= "remove mouse -"set clipboard=unnamedplus - -" Rendering -set ttyfast -set laststatus=1 -set t_Co=256 -let &t_ut='' - -"hi ColorColumn ctermbg=lightgrey guibg=lightgrey - -" Show bad whitespace in an obvious but not obnoxious color -"highlight pythonSpaceError ctermbg=darkgreen guibg=darkgreen -"highlight BadWhitespace ctermbg=darkgreen guibg=darkgreen -"au BufNewFile,BufRead *.py,*.pyw,*.c,*.h,*.cc,*.hh,*.sh match BadWhitespace /\s\+$/ - -au FileType python - \ set fileformat=unix - \ encoding=utf-8 - -au FileType markdown,tex - \ set spell spelllang=en_us - diff --git a/.config/nvim/spell/en.utf-8.add b/.config/nvim/spell/en.utf-8.add deleted file mode 100644 index 01d2444..0000000 --- a/.config/nvim/spell/en.utf-8.add +++ /dev/null @@ -1,10 +0,0 @@ -Generative -ansible -CXI -HPLC -SED -brokhorst -MOXA -CONFIG -QRIX -EPS diff --git a/.config/nvim/spell/en.utf-8.add.spl b/.config/nvim/spell/en.utf-8.add.spl deleted file mode 100644 index 950d1f6..0000000 Binary files a/.config/nvim/spell/en.utf-8.add.spl and /dev/null differ