commit 592eb452c6777b1acd46b1a3324d37c16e0243cd Author: Gu://em_ Date: Wed Dec 18 22:30:20 2024 +0100 First commit diff --git a/.config/albert/config b/.config/albert/config new file mode 100644 index 0000000..a7e9243 --- /dev/null +++ b/.config/albert/config @@ -0,0 +1,63 @@ +[General] +hotkey=Alt+Space +prioritizePerfectMatch=true +showTray=false +telemetry=false + +[albert] +global_handler_enabled=false + +[applications] +enabled=true +fuzzy=true +terminal=kitty + +[calculator_qalculate] +enabled=true + +[clipboard] +enabled=true +persistent=true + +[files] +enabled=false +paths=@Invalid() + +[hash] +enabled=true +trigger=# + +[mpris] +enabled=true +trigger=mp + +[path] +enabled=true + +[snippets] +enabled=false + +[ssh] +enabled=true + +[system] +command_lock=hyprlock +command_poweroff=poweroff +command_reboot=reboot +enabled=true +trigger=sys + +[widgetsboxmodel] +alwaysOnTop=true +clearOnHide=false +clientShadow=true +darkTheme=Seventy Eight +displayScrollbar=false +followCursor=true +hideOnFocusLoss=true +historySearch=true +itemCount=5 +lightTheme=Seventy Eight +quitOnClose=false +showCentered=true +systemShadow=true diff --git a/.config/fnott/fnott.ini b/.config/fnott/fnott.ini new file mode 100644 index 0000000..56ecb0e --- /dev/null +++ b/.config/fnott/fnott.ini @@ -0,0 +1,66 @@ +# -*- conf -*- + +# For documentation on these options, see `man fnott.ini` + +# Global values +# output=# +min-width=200 +# max-width=0 +# max-height=0 +# stacking-order=bottom-up +anchor=top-right +edge-margin-vertical=10 +edge-margin-horizontal=10 +notification-margin=10 +icon-theme=Papirus +# max-icon-size=32 +# selection-helper=dmenu +# selection-helper-uses-null-separator=no +# play-sound=aplay ${filename} + +# Default values, may be overridden in 'urgency' specific sections +layer=top +background=293241FF + +border-color=EE6C4DFF +border-radius=0 +border-size=2 + +padding-vertical=20 +padding-horizontal=20 + +dpi-aware=yes + +title-font=monospace +title-color=ffffffff +title-format=%a%A + +summary-font=monospace +summary-color=ffffffff +summary-format=%s\n + +body-font=monospace +body-color=ffffffff +body-format=%b + +progress-bar-height=20 +progress-bar-color=ffffffff + +# sound-file= +# icon= + +# Timeout values are in seconds. 0 to disable +max-timeout=0 +default-timeout=0 +idle-timeout=0 + +# [low] +# background=2b2b2bff +# title-color=888888ff +# summary-color=888888ff +# body-color=888888ff + +# [normal] + +# [critical] +# background=6c3333ff diff --git a/.config/gtk-2.0/gtkfilechooser.ini b/.config/gtk-2.0/gtkfilechooser.ini new file mode 100644 index 0000000..c40c909 --- /dev/null +++ b/.config/gtk-2.0/gtkfilechooser.ini @@ -0,0 +1,11 @@ +[Filechooser Settings] +LocationMode=path-bar +ShowHidden=false +ShowSizeColumn=true +GeometryX=713 +GeometryY=269 +GeometryWidth=537 +GeometryHeight=542 +SortColumn=name +SortOrder=ascending +StartupMode=recent diff --git a/.config/gtk-3.0/bookmarks b/.config/gtk-3.0/bookmarks new file mode 100644 index 0000000..c2f1efc --- /dev/null +++ b/.config/gtk-3.0/bookmarks @@ -0,0 +1,2 @@ +file:///home/guillm/shared/Workplan/EPITA/2024-2025 +file:///home/guillm/shared/Workplan diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 100644 index 0000000..8b1f915 --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1,17 @@ +[Settings] +gtk-theme-name=Breeze-Dark +gtk-icon-theme-name=Adwaita +gtk-font-name=Cantarell 11 +gtk-cursor-theme-name=VolantesCursors +gtk-cursor-theme-size=24 +gtk-toolbar-style=GTK_TOOLBAR_ICONS +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=0 +gtk-menu-images=0 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=0 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintslight +gtk-xft-rgba=rgb +gtk-application-prefer-dark-theme=0 diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..9ade603 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,333 @@ +# This is an example Hyprland config file. +# Refer to the wiki for more information. +# https://wiki.hyprland.org/Configuring/ + +# Please note not all available settings / options are set here. +# For a full list, see the wiki + +# You can split this configuration into multiple files +# Create your files separately and then link them to this file like this: +# source = ~/.config/hypr/myColors.conf + + +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,auto +monitor=eDP-1,preferred,0x0,1 # Laptop screen +monitor=DP-1, preferred, 0x-1080, 1 # HP Home monitor +monitor=HDMI-A-1, preferred, 0x-1440, 1 # Dell monitor + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = kitty +$fileManager = dolphin +$menu = albert toggle +$notificationsManager = fnott + + +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +exec-once = hyprpaper & waybar +exec-once = albert +exec-once = mako + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = HYPRCURSOR_THEME,VolantesCursors +env = XCURSOR_THEME,VolantesCursors +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 1 + gaps_out = 0 + + border_size = 1 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgba(98C1D9FF) + col.inactive_border = rgba(595959aa) + + # Resizing windows by clicking and dragging on borders and gaps + resize_on_border = true + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layout = dwindle +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 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.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 6 + passes = 2 + + vibrancy = 0.1696 + } + +} + +# Apply blur to waybar +layerrule = blur,waybar + + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = yes, please :) + + # See https://wiki.hyprland.org/Configuring/Animations/ for more + + # Bezier curves + 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.0 + bezier = quick,0.15,0,0.1,1 + + bezier = easeInOutExpo,0.87,0,0.13,1 + + # Animations + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + + animation = windows, 1, 3.79, easeOutQuint + animation = windowsIn, 1, 3.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, 3, easeOutQuint, slidefade + animation = workspacesOut, 1, 5, easeOutQuint, slidefade +} + +# Ref https://wiki.hyprland.org/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 +# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1] +# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1] +# windowrulev2 = rounding 0, floating:0, onworkspace:f[1] + +# See https://wiki.hyprland.org/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 +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( + disable_splash_rendering = true # Disable default wallpapers rendering +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_layout = fr + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = true + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +gestures { + workspace_swipe = true +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod, Q, killactive, +bind = $mainMod SHIFT, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, T, togglefloating, +bind = $mainMod, D, exec, $menu +bind = $mainMod, R, exec, $menu +bind = $mainMod, F, pseudo, # dwindle +bind = $mainMod, V, togglesplit, # dwindle +bind = $mainMod, L, exec, hyprlock + +# 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 + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, ampersand, workspace, 1 +bind = $mainMod, eacute, workspace, 2 +bind = $mainMod, quotedbl, workspace, 3 +bind = $mainMod, apostrophe, workspace, 4 +bind = $mainMod, parenleft, workspace, 5 +bind = $mainMod, minus, workspace, 6 +bind = $mainMod, egrave, workspace, 7 +bind = $mainMod, underscore, workspace, 8 +bind = $mainMod, ccedilla, workspace, 9 +bind = $mainMod, agrave, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, ampersand, movetoworkspace, 1 +bind = $mainMod SHIFT, eacute, movetoworkspace, 2 +bind = $mainMod SHIFT, quotedbl, movetoworkspace, 3 +bind = $mainMod SHIFT, apostrophe, movetoworkspace, 4 +bind = $mainMod SHIFT, parenleft, movetoworkspace, 5 +bind = $mainMod SHIFT, minus, movetoworkspace, 6 +bind = $mainMod SHIFT, egrave, movetoworkspace, 7 +bind = $mainMod SHIFT, underscore, movetoworkspace, 8 +bind = $mainMod SHIFT, agrave, 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 s 8%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 8%- +bindel = SHIFT, XF86MonBrightnessUp, exec, brightnessctl s 2%+ +bindel = SHIFT, XF86MonBrightnessDown, exec, brightnessctl s 2%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +# Screenshot +bind = , Print, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%F_%T_grim.png') && hyprctl notify 1 2000 0 Screenshot saved! +#bind = , Print, exec, hyprctl notify 1 2000 0 Screenshot saved! +#bind = , Print, exec, hyprctl notify 0 2000 0 Slurp not implemented + +# Toggle waybar +bind = $mainMod, B, exec, $HOME/.config/hypr/scripts/toggle-waybar.sh + +# Reload desktop +bind = $mainMod SHIFT, R, exec, $HOME/.config/hypr/scripts/reload.sh + + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ + +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + +# Ignore maximize requests from apps. You'll probably like this. +windowrulev2 = suppressevent maximize, class:.* + +# Fix some dragging issues with XWayland +windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + +# Albert +windowrule=noborder,^(albert)$ +windowrule=noblur,^(albert)$ +windowrule=noshadow,^(albert)$ +windowrule=float,^(albert)$ +windowrule=stayfocused,^(albert)$ +windowrule=nodim,^(albert)$ diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..7f5bd72 --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,103 @@ +# BACKGROUND +background { + monitor = + path = ~/.config/hypr/images/lockscreen.jpg + blur_passes = 3 + #contrast = 0.8916 + #brightness = 0.8172 + #vibrancy = 0.1696 + #vibrancy_darkness = 0.0 +} + +# GENERAL +general { + no_fade_in = false + grace = 0 + disable_loading_bar = false + no_cursor = true + enable_fingerprint = true +} + +# INPUT FIELD +input-field { + monitor = + size = 320, 55 + outline_thickness = 1 + dots_size = 0.2 # 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 + outer_color = rgba(200, 200, 200, 0.4) + inner_color = rgba(100, 114, 125, 0.2) + font_color = rgb(200, 200, 200) + fade_on_empty = false + font_family = DejaVu Sans + placeholder_text = Enter Pass + hide_input = false + position = 0, -350 + halign = center + valign = center +} + +# Time +label { + monitor = + text = cmd[update:1000] echo "$(date +"%H:%M")" + color = rgba(216, 222, 233, 0.70) + font_size = 130 + font_family = JetbrainsMonoNL NF Bold + position = 0, 240 + halign = center + valign = center +} + +# Day-Month-Date +label { + monitor = + text = cmd[update:1000] echo -e "$(date +"%A, %d %B")" + color = rgba(216, 222, 233, 0.70) + font_size = 26 + font_family = JetbrainsMonoNL NF + position = 0, 120 + halign = center + valign = center +} + +# Profie-Photo +#image { +# monitor = +# path = ~/.config/hypr/images/profile.png +# border_color = 0xffdddddd +# border_size = 0 +# size = 120 +# rounding = -1 +# rotate = 0 +# reload_time = -1 +# reload_cmd = +# position = 0, -100 +# halign = center +# valign = center +#} + +# USER +#label { +# monitor = +# text = Hi, Guillem #$USER +# color = rgba(216, 222, 233, 0.70) +# font_size = 20 +# font_family = DejaVu Sans +# position = 0, -200 +# halign = center +# valign = center +#} + +# CURRENT SONG +label { + monitor = + text = cmd[update:1000] echo "$(~/.config/hypr/scripts/songdetails.sh)" + color = rgba(255, 255, 255, 0.7) + font_size = 16 + font_family = DejaVu Sans + position = 0, 20 + halign = center + valign = bottom +} diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..246b059 --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = ~/.config/hypr/images/wallpaper.jpg +wallpaper = , ~/.config/hypr/images/wallpaper.jpg diff --git a/.config/hypr/images/lockscreen.jpg b/.config/hypr/images/lockscreen.jpg new file mode 100644 index 0000000..42dedf3 Binary files /dev/null and b/.config/hypr/images/lockscreen.jpg differ diff --git a/.config/hypr/images/wallpaper.jpg b/.config/hypr/images/wallpaper.jpg new file mode 100644 index 0000000..21a349e Binary files /dev/null and b/.config/hypr/images/wallpaper.jpg differ diff --git a/.config/hypr/scripts/reload.sh b/.config/hypr/scripts/reload.sh new file mode 100755 index 0000000..68ae02d --- /dev/null +++ b/.config/hypr/scripts/reload.sh @@ -0,0 +1,10 @@ +killall albert +albert & + +killall hyprpaper +hyprpaper & + +killall waybar +waybar & + +hyprctl notify 1 2000 0 Desktop reloaded diff --git a/.config/hypr/scripts/songdetails.sh b/.config/hypr/scripts/songdetails.sh new file mode 100755 index 0000000..e4c94cc --- /dev/null +++ b/.config/hypr/scripts/songdetails.sh @@ -0,0 +1,2 @@ +song_info=$(playerctl metadata --format '{{title}} 󰎆 {{artist}}') +echo "$song_info" diff --git a/.config/hypr/scripts/toggle-waybar.sh b/.config/hypr/scripts/toggle-waybar.sh new file mode 100755 index 0000000..7265f32 --- /dev/null +++ b/.config/hypr/scripts/toggle-waybar.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +pidof waybar # Check if waybar is running + +if [ $? = 0 ]; then + killall waybar # If running, stop it +else + waybar # Else, run it +fi \ No newline at end of file diff --git a/.config/kitty/current-theme.conf b/.config/kitty/current-theme.conf new file mode 100644 index 0000000..27e21a0 --- /dev/null +++ b/.config/kitty/current-theme.conf @@ -0,0 +1,61 @@ +# vim:ft=kitty + +## name: GitHub Dark +## author: GitHub +## license: MIT + +#: The basic colors + +foreground #c9d1d9 +background #0d1117 +selection_foreground #0d1117 +selection_background #58a6ff + + +#: Cursor colors + +cursor #58a6ff + + +#: Tab bar colors + +tab_bar_background #010409 +active_tab_foreground #c9d1d9 +active_tab_background #0d1117 +inactive_tab_foreground #8b949e +inactive_tab_background #010409 + + +#: The basic 16 colors + +#: black +color0 #484f58 +color8 #6e7681 + +#: red +color1 #ff7b72 +color9 #ffa198 + +#: green +color2 #3fb950 +color10 #56d364 + +#: yellow +color3 #d29922 +color11 #e3b341 + +#: blue +color4 #58a6ff +color12 #79c0ff + +#: magenta +color5 #bc8cff +color13 #d2a8ff + +#: cyan +color6 #39c5cf +color14 #56d4dd + +#: white +color7 #b1bac4 +color15 #ffffff diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf new file mode 100644 index 0000000..b40f57e --- /dev/null +++ b/.config/kitty/kitty.conf @@ -0,0 +1,18 @@ +# BEGIN_KITTY_FONTS +font_family family="JetBrainsMonoNL Nerd Font Mono" +font_size 13.0 +bold_font auto +italic_font auto +bold_italic_font auto +# END_KITTY_FONTS + +# BEGIN_KITTY_THEME +# GitHub Dark +include current-theme.conf +#background_opacity 0.6 +# END_KITTY_THEME + +# Decent scrolling speed +touch_scroll_multiplier 5.0 + +enable_audio_bell no diff --git a/.config/waybar/colors.css b/.config/waybar/colors.css new file mode 100644 index 0000000..1eadbe3 --- /dev/null +++ b/.config/waybar/colors.css @@ -0,0 +1,4 @@ +@define-color foreground #c5c5c5; +@define-color background #191919; + +@define-color accentColor #b6c8d3; \ No newline at end of file diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..a8b3286 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,476 @@ +{ + "layer": "top", + "position": "right", + "margin": "0 0 0 1", + "reload_style_on_change": true, + "modules-left": [ + //"custom/updates", + "hyprland/workspaces", + "hyprland/submap" + //"group/info" + //"hyprland/window" + ], + "hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate", + "all-outputs": true, + "format-icons": { + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10" + } + }, + "hyprland/window": { + "format":"", + "spearate-outputs": true, + "icon": true + + }, + "hyprland/submap": { + "format": "󰇘", + "max-length": 8, + "tooltip": true + }, + "group/info": { + "orientation": "inherit", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": false + }, + "modules": [ + "custom/dmark", + "group/gcpu", + "memory", + "disk" + ] + }, + "custom/dmark": { + "format": "", + "tooltip": false + }, + "group/gcpu": { + "orientation": "inherit", + "modules": [ + "custom/cpu-icon", + "custom/cputemp", + "cpu" + ] + }, + "custom/cpu-icon": { + "format": "󰻠", + "tooltip": false + }, + "custom/cputemp": { + "format": "{}", + "exec": "~/.config/waybar/bin/cputemp", + "interval": 10, + "return-type": "json" + }, + "cpu": { + "format": "{usage}󱉸", + "on-click": "foot btop" + }, + "memory": { + "format": "  \n{:2}󱉸" + }, + "disk": { + "interval": 600, + "format": " 󰋊 \n{percentage_used}󱉸", + "path": "/" + }, + "modules-right": [ + "custom/recorder", + "privacy", + "group/brightness", + "group/sound", + "group/connection", + "tray", + "group/together", + //"group/cnoti", + "group/power" + ], + "custom/recorder": { + "format": "{}", + "interval": "once", + "exec": "echo ''", + "tooltip": "false", + "exec-if": "pgrep 'wl-screenrec'", + "on-click": "recorder", + "signal": 4 + }, + "privacy": { + "orientation": "vertical", + "icon-spacing": 4, + "icon-size": 14, + "transition-duration": 250, + "modules": [ + { + "type": "screenshare", + "tooltip": true, + "tooltip-icon-size": 24 + } + ] + }, + "group/brightness": { + "orientation": "inherit", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": false + }, + "modules": [ + "backlight" + //"backlight/slider" + ] + }, + "backlight": { + "device": "intel_backlight", + "format": "{icon}", + "format-icons": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "on-scroll-down": "brightnessctl s 5%-", + "on-scroll-up": "brightnessctl s +5%", + "tooltip": true, + "tooltip-format": "Brightness: {percent}% ", + "smooth-scrolling-threshold": 1 + }, + "backlight/slider": { + "min": 5, + "max": 100, + "orientation": "vertical", + "device": "intel_backlight" + }, + "group/sound": { + "orientation": "inherit", + "modules": [ + "group/audio", + "custom/notifications" + ] + }, + "group/audio": { + "orientation": "inherit", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": false + }, + "modules": [ + "pulseaudio", + "pulseaudio#mic", + "pulseaudio/slider" + ] + }, + "group/cnoti": { + "orientation": "inherit", + "modules": [ + "custom/github" + ] + }, + "group/connection": { + "orientation": "inherit", + "modules": [ + //"custom/vpn", + //"custom/hotspot", + "group/network" + //"group/bluetooth" + ] + }, + "group/together": { + "orientation": "inherit", + "modules": [ + "group/utils", + "clock" + ] + }, + "group/utils": { + "orientation": "inherit", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": true + }, + "modules": [ + "custom/mark", + "custom/weather", + "custom/colorpicker", + "custom/hyprshade", + "idle_inhibitor", + "custom/hyprkill" + ] + }, + "group/network": { + "orientation": "inherit", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": true + }, + "modules": [ + "network", + "network#speed" + ] + }, + "group/bluetooth": { + "orientation": "inherit", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": true + }, + "modules": [ + "bluetooth", + "bluetooth#status" + ] + }, + "group/power": { + "orientation": "inherit", + "drawer": { + "transition-duration": 500, + "transition-left-to-right": false + }, + "modules": [ + "battery", + "power-profiles-daemon" + ] + }, + "tray": { + "icon-size": 18, + "spacing": 10 + }, + "pulseaudio": { + "format": "{icon}", + "format-bluetooth": "{icon}", + "tooltip-format": "{volume}% {icon} | {desc}", + "format-muted": "󰖁", + "format-icons": { + "headphones": "󰋌", + "handsfree": "󰋌", + "headset": "󰋌", + "phone": "", + "portable": "", + "car": " ", + "default": [ + "󰕿", + "󰖀", + "󰕾" + ] + }, + "on-click": "volume mute", + //"on-click-middle": "pavucontrol", + "on-scroll-up": "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+", + "on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SINK@ -5%", + "smooth-scrolling-threshold": 1 + }, + "pulseaudio#mic": { + "format": "{format_source}", + "format-source": "", + "format-source-muted": "", + "tooltip-format": "{volume}% {format_source} ", + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle", + "on-scroll-down": "wpctl set-volume @DEFAULT_SOURCE@ 5%-", + "on-scroll-up": "wpctl set-volume -l 1 @DEFAULT_SOURCE@ 5%+" + }, + "pulseaudio/slider": { + "min": 0, + "max": 100, + "orientation": "vertical" + }, + "network": { + "format": "{icon}", + "format-icons": { + "wifi": [ + "󰤨" + ], + "ethernet": [ + "󰈀" + ], + "disconnected": [ + "󰖪" + ] + }, + "format-wifi": "󰤨", + "format-ethernet": "󰈀", + "format-disconnected": "󰖪", + "format-linked": "󰈁", + "tooltip": false, + //"on-click": "pgrep -x rofi &>/dev/null && notify-send rofi || networkmanager_dmenu" + "on-click": "kitty nmtui" + }, + "network#speed": { + "format": " {bandwidthDownBits} ", + "rotate": 90, + "interval": 5, + "tooltip-format": "{ipaddr}", + "tooltip-format-wifi": "{essid} ({signalStrength}%)  \n{ipaddr} | {frequency} MHz{icon} ", + "tooltip-format-ethernet": "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} ", + "tooltip-format-disconnected": "Not Connected to any type of Network", + "tooltip": true, + "on-click": "pgrep -x rofi &>/dev/null && notify-send rofi || networkmanager_dmenu" + }, + "bluetooth": { + "format-on": "", + "format-off": "󰂲", + "format-disabled": "", + "format-connected": "", + "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", + "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%", + "on-click": "rofi-bluetooth -config ~/.config/rofi/menu.d/network.rasi -i" + }, + "bluetooth#status": { + "format-on": "", + "format-off": "", + "format-disabled": "", + "format-connected": "{num_connections}", + "format-connected-battery": "{device_battery_percentage}%", + "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected", + "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}", + "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", + "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%", + "on-click": "rofi-bluetooth -config ~/.config/rofi/menu.d/network.rasi -i" + }, + "battery": { + "rotate": 270, + "states": { + "good": 95, + "warning": 16, + "critical": 8 + }, + "format": "{icon}", + "interval": 1, + "format-charging": "{icon} ", + "format-full": "{icon}", + "format-icons": [ + "󰁻", + "󰁼", + "󰁾", + "󰂀", + "󰂂", + "󰁹" + ], + "tooltip-format": "{timeTo} {capacity} % | {power} W" + }, + "clock": { + "format": "{:%H\n%M}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "mode-mon-col": 3, + "weeks-pos": "right", + "on-scroll": 1, + "on-click-right": "mode", + "format": { + "today": "{}" + } + } + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "custom/hyprshade": { + "format": "{}", + "tooltip": true, + "signal": 11, + "exec": "toggle-hyprshade status", + "on-click": "toggle-hyprshade", + "return-type": "json" + }, + "custom/weather": { + "format": "{}", + "tooltip": true, + "interval": 3600, + "exec": "wttrbar --custom-indicator '{ICON}\n{temp_C}' --location noida", + "return-type": "json" + }, + "custom/updates": { + "format": "{}", + "interval": 10800, + "exec": "~/.config/waybar/bin/updatecheck", + "return-type": "json", + "exec-if": "exit 0", + "signal": 8 + }, + "custom/vpn": { + "format": "{} ", + "exec": "~/.config/waybar/bin/vpn", + "return-type": "json", + "interval": 5 + }, + "custom/hotspot": { + "format": "{} ", + "exec": "~/.config/waybar/bin/hotspot", + "return-type": "json", + "on-click": "hash wihotspot && wihotspot", + "interval": 5 + }, + "custom/mark": { + "format": "", + "tooltip": false + }, + "custom/colorpicker": { + "format": "{}", + "return-type": "json", + "interval": "once", + "exec": "colorpicker -j", + "on-click": "sleep 1 && colorpicker", + "signal": 1 + }, + "custom/hyprkill": { + "format": "{}", + "interval": "once", + "exec": "echo '󰅙\nKill clients using hyrpctl kill'", + "on-click": "sleep 1 && hyprctl kill" + }, + "custom/notifications": { + "format": "{} ", + "exec": "noti-cycle -j", + "on-click": "noti-cycle", + "on-click-right": "noti-cycle rofi", + "return-type": "json", + "interval": "once", + "signal": 2 + }, + "custom/github": { + "format": "{}", + "return-type": "json", + "interval": 3600, + "signal": 9, + "exec": "$HOME/.config/waybar/bin/github.sh", + "on-click": "xdg-open https://github.com/notifications;pkill -RTMIN+9 waybar" + }, + "idle_inhibitor": { + "format": "{icon}", + "tooltip-format-activated": "Idle Inhibitor is active", + "tooltip-format-deactivated": "Idle Inhibitor is not active", + "format-icons": { + "activated": "󰔡", + "deactivated": "󰔢" + } + } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..fc37b81 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,276 @@ +@import "colors.css"; +@define-color active @accentColor; + +* { + font-size: 16px; + font-family: "JetBrainsMono Nerd Font,JetBrainsMono NF"; + min-width: 8px; + min-height: 0px; + border: none; + border-radius: 0; + box-shadow: none; + text-shadow: none; + padding: 0px; + +} + +window#waybar { + transition-property: background-color; + transition-duration: 0.5s; + border-radius: 0px; + border-left: 1px solid alpha(@active, 0.4); + background: @background; + background: alpha(@background, 0.8); + color: lighter(@active); +} + +menu, +tooltip { + border-radius: 2px; + padding: 2px; + border: 1px solid @active; + background: @background; + + color: lighter(@active); +} + +menu label, +tooltip label { + font-size: 14px; + color: lighter(@active); +} + +#submap, +#tray>.needs-attention { + animation-name: blink-active; + animation-duration: 1s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +.modules-right { + margin: 0px 6px 6px 6px; + border-radius: 4px; + background: alpha(@background, 0); + color: lighter(@active); +} + +.modules-left { + transition-property: background-color; + transition-duration: 0.5s; + margin: 6px 5px 6px 5px; /* Testing with 5 pixels on left/right */ + border-radius: 4px; + background: alpha(@background, 0.5); + color: lighter(@active); + border: 1px solid alpha(@active, 0.2); +} + +#gcpu, +#custom-github, +#memory, +#disk, +#together, +#submap, +#custom-weather, +#custom-recorder, +#connection, +#cnoti, +#brightness, +#power, +#custom-updates, +#tray, +#audio, +#privacy, +#sound { /*Controls all the right modules for some reason*/ + border-radius: 2px; + margin: 2px 1px 3px 1px; + background: alpha(darker(@active), 0.3); + border: 1px solid alpha(darker(@active), 0.3); +} + +#custom-notifications { + padding-left: 4px; +} + +#custom-hotspot, +#custom-github, +#custom-notifications { + font-size: 14px; +} + +#custom-hotspot { + padding-right: 2px; +} + +#custom-vpn, +#custom-hotspot { + background: alpha(darker(@active), 0.3); +} + +#privacy-item { + padding: 6px 0px 6px 6px; +} + +#gcpu { + padding: 8px 0px 8px 0px; +} + +#custom-cpu-icon { + font-size: 25px; +} + +#custom-cputemp, +#disk, +#memory, +#cpu { + font-size: 14px; + font-weight: bold; +} + +#custom-github { + padding-top: 2px; + padding-right: 4px; +} + +#custom-dmark { + color: alpha(@foreground, 0.3); +} + +#submap { + margin-bottom: 0px; +} + +#workspaces { + margin: 0px 2px; + padding: 2px 0px; + border-radius: 8px; +} + +#workspaces button { + transition-property: background-color; + transition-duration: 0.1s; + color: @foreground; + background: transparent; + border-radius: 4px; + color: alpha(@foreground, 0.3); + padding: 2px 0px; +} + +#workspaces button.urgent { + font-weight: bold; + color: @foreground; +} + +#workspaces button.active { + padding: 2px 0px; + background: alpha(@active, 0.4); + color: lighter(@active); + border-radius: 2px; +} + +#network.wifi { + padding-right: 5px; + margin: 2px 0px; +} + +#submap { + min-width: 0px; + margin: 4px 6px 4px 6px; +} + +#custom-weather, +#tray { + padding: 4px 0px 4px 0px; +} + +#bluetooth { + padding-top: 2px; +} + +#battery { + border-radius: 8px; + padding: 4px 0px; + margin: 4px 2px 4px 2px; +} + +#battery.discharging.warning { + animation-name: blink-yellow; + animation-duration: 1s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#battery.discharging.critical { + animation-name: blink-red; + animation-duration: 1s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#clock { + font-weight: bold; + padding: 4px 2px 2px 2px; +} + +#pulseaudio.mic { + border-radius: 4px; + color: @background; + background: alpha(darker(@foreground), 0.6); + padding-left: 4px; +} + +#backlight-slider slider, +#pulseaudio-slider slider { + background-color: transparent; + box-shadow: none; +} + +#backlight-slider trough, +#pulseaudio-slider trough { + margin-top: 4px; + min-width: 6px; + min-height: 60px; + border-radius: 8px; + background-color: alpha(@background, 0.6); +} + +#backlight-slider highlight, +#pulseaudio-slider highlight { + border-radius: 8px; + background-color: lighter(@active); +} + +#bluetooth.discoverable, +#bluetooth.discovering, +#bluetooth.pairable { + border-radius: 8px; + animation-name: blink-active; + animation-duration: 1s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +@keyframes blink-active { + to { + background-color: @active; + color: @foreground; + } +} + +@keyframes blink-red { + to { + background-color: #c64d4f; + color: @foreground; + } +} + +@keyframes blink-yellow { + to { + background-color: #cf9022; + color: @foreground; + } +} diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..e2af670 --- /dev/null +++ b/.zshrc @@ -0,0 +1,96 @@ +# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. +# Initialization code that may require console input (password prompts, [y/n] +# confirmations, etc.) must go above this block; everything else may go below. +if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then + source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" +fi + +# Set the directory where we want to store zinit and plugins +ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git" + +# Download zinit if not present +if [ ! -d $ZINIT_HOME ]; then + mkdir -p "$(dirname $ZINIT_HOME)" + git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" +fi + +# Load zinit +source "${ZINIT_HOME}/zinit.zsh" + +# Add in Powerlevel10k +zinit ice depth=1; zinit light romkatv/powerlevel10k + +# Add in zsh plugins +zinit light zsh-users/zsh-syntax-highlighting +zinit light zsh-users/zsh-completions +zinit light zsh-users/zsh-autosuggestions +zinit light Aloxaf/fzf-tab + +# Add in snippets (omz plugins) +zinit snippet OMZP::git +zinit snippet OMZP::archlinux +zinit snippet OMZP::sudo +#zinit snippet OMZP::command-not-found + +#zinit snippet OMZP::kubectl +#zinit snippet OMZP::kubectx + +# Load completions +autoload -U compinit && compinit + +zinit cdreplay -q # Optimize cache (recommended by the zinit doc) + +# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. +[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh + +# Keybindings +bindkey -e # Use emacs keybindings +bindkey '^p' history-search-backward +bindkey '^n' history-search-forward +bindkey '~' delete-char # Makes the delete key work properly +bindkey "^[[1;5C" forward-word # Same with M-arrows +bindkey "^[[1;5D" backward-word + +# History +HISTSIZE=5000 +HISTFILE=~/.zsh_hist +SAVEHIST=$HISTSIZE +setopt appendhistory +setopt sharehistory +setopt hist_ignore_space +# The following lines concerns history duplicates +# They're disabled as I prefer having a real history of my commands +#HISTDUP=erase +#setopt hist_ignore_all_dups +#setopt hist_ignore_dups +#setopt hist_find_no_dups + +# Completions styling +zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' # Makes completions case insensitive +zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Makes completions colored +zstyle ':completion:*' menu no # Hide the default completions menu (replaced by fzf) +zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' + +# Environment variables +export PATH=$PATH:~/.local/bin + +# Aliases +alias cl='clear' +alias hyprcfg='vim ~/.config/hypr/' +alias zcfg='vim ~/.zshrc' +alias icat='kitten icat' +alias nv='nvim' +# Override some default commands with more practical alternatives +alias ls='eza --icons=automatic --tree --level=1 --follow-symlinks --no-quotes' +alias lsa='ls -a' +alias lsl='eza --icons=automatic --long --header --group -M' +alias tree='ls --level=3' +# Keep default commands accessible +alias lsd='/usr/bin/ls --color' + +# Random stuff +alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'" + +# Shell integrations +eval "$(fzf --zsh)" +eval "$(zoxide init --cmd cd zsh)" # Override cd with zoxide