From c57032a049a8f3ba90c6bcca87c150bbe454ea56 Mon Sep 17 00:00:00 2001 From: Anthony Oteri Date: Tue, 29 Aug 2023 17:33:19 -0400 Subject: [PATCH] Add config for hypr and waybar --- .config/hypr/gtk.sh | 15 ++ .config/hypr/hyprland.conf | 194 +++++++++++++++++++ .config/hypr/starthypr.sh | 4 + .config/waybar/colors-waybar.css | 20 ++ .config/waybar/config | 37 ++++ .config/waybar/launch.sh | 24 +++ .config/waybar/modules.json | 177 +++++++++++++++++ .config/waybar/myconfig | 45 +++++ .config/waybar/style.css | 320 +++++++++++++++++++++++++++++++ 9 files changed, 836 insertions(+) create mode 100755 .config/hypr/gtk.sh create mode 100644 .config/hypr/hyprland.conf create mode 100644 .config/hypr/starthypr.sh create mode 100644 .config/waybar/colors-waybar.css create mode 100644 .config/waybar/config create mode 100755 .config/waybar/launch.sh create mode 100644 .config/waybar/modules.json create mode 100644 .config/waybar/myconfig create mode 100644 .config/waybar/style.css diff --git a/.config/hypr/gtk.sh b/.config/hypr/gtk.sh new file mode 100755 index 0000000..967620f --- /dev/null +++ b/.config/hypr/gtk.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# usage: import-gsettings +config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini" +if [ ! -f "$config" ]; then exit 1; fi + +gnome_schema="org.gnome.desktop.interface" +gtk_theme="$(grep 'gtk-theme-name' "$config" | sed 's/.*\s*=\s*//')" +icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')" +cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')" +font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')" +gsettings set "$gnome_schema" gtk-theme "$gtk_theme" +gsettings set "$gnome_schema" icon-theme "$icon_theme" +gsettings set "$gnome_schema" cursor-theme "$cursor_theme" +gsettings set "$gnome_schema" font-name "$font_name" diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..a6dfe5b --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,194 @@ +# _ _ _ _ +# | | | |_ _ _ __ _ __| | __ _ _ __ __| | +# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | +# | _ | |_| | |_) | | | | (_| | | | | (_| | +# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| +# |___/|_| +# +# by Stephan Raabe (2023) +# ----------------------------------------------------- + +# ----------------------------------------------------- +# Monitor Setup +# See https://wiki.hyprland.org/Configuring/Monitors/ +# ----------------------------------------------------- +monitor=,2560x1440@120,auto,1 +# monitor=,preferred,auto,1 +# monitor=,1920x1080,auto,1 + +# ----------------------------------------------------- +# Autostart +# ----------------------------------------------------- +exec-once = ~/dotfiles/waybar/launch.sh +exec-once = swww init +exec-once = ~/dotfiles/scripts/updatewal-swww.sh +exec-once = dunst +exec-once = ~/dotfiles/hypr/gtk.sh + +# ----------------------------------------------------- +# Load pywal color file +# ----------------------------------------------------- +source = /home/raabe/.cache/wal/colors-hyprland.conf + +# ----------------------------------------------------- +# Env vars +# ----------------------------------------------------- +env = XCURSOR_SIZE,24 + +# ----------------------------------------------------- +# Keyboard layout and mouse +# ----------------------------------------------------- +input { + kb_layout = de + kb_variant = + kb_model = + kb_options = + kb_rules = + follow_mouse = 1 + touchpad { + natural_scroll = false + } + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +# ----------------------------------------------------- +# General window layout and colors +# ----------------------------------------------------- +general { + gaps_in = 10 + gaps_out = 20 + border_size = 3 + # Single Color for active window + col.active_border = rgba(ffffffee) + # Color Gradient for active window + # col.active_border = $color11 $background $background $color14 45deg + col.inactive_border = $color11 + layout = dwindle +} + +# ----------------------------------------------------- +# General window decoration +# ----------------------------------------------------- +decoration { + rounding = 10 + blur { + enabled = true + size = 3 + passes = 1 + new_optimizations = on + blurls = waybar + } + active_opacity = 1.0 + inactive_opacity = 0.9 + fullscreen_opacity = 1.0 + + drop_shadow = true + shadow_range = 30 + shadow_render_power = 3 + col.shadow = 0x66000000 +} + +# ----------------------------------------------------- +# Animations +# ----------------------------------------------------- +animations { + enabled = true + 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 +} + +# ----------------------------------------------------- +# Layouts +# ----------------------------------------------------- +dwindle { + pseudotile = true + preserve_split = true +} + +master { + new_is_master = true +} + +gestures { + workspace_swipe = false +} + +device:epic-mouse-v1 { + sensitivity = -0.5 +} + +# ----------------------------------------------------- +# Window rules +# ----------------------------------------------------- +windowrule = tile,^(Brave-browser)$ + +# ----------------------------------------------------- +# Key bindings +# ----------------------------------------------------- +$mainMod = SUPER + +bind = $mainMod, RETURN, exec, alacritty +bind = $mainMod, Q, killactive +bind = $mainMod, F, fullscreen +bind = $mainMod, E, exec, dolphin +bind = $mainMod, T, togglefloating +bind = $mainMod, B, exec, brave +bind = $mainMod, P, pseudo +bind = $mainMod, J, togglesplit +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +bind = $mainMod, PRINT, exec, ~/dotfiles/scripts/grim.sh +bind = $mainMod CTRL, Q, exec, ~/dotfiles/scripts/powermenu-hypr.sh +bind = $mainMod SHIFT, W, exec, ~/dotfiles/scripts/updatewal-swww.sh +bind = $mainMod CTRL, W, exec, ~/dotfiles/scripts/wallpaper-swww.sh +bind = $mainMod CTRL, RETURN, exec, ~/dotfiles/scripts/applauncher.sh +bind = $mainMod SHIFT, B, exec, ~/dotfiles/waybar/launch.sh + +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 + +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, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +bind = $mainMod SHIFT, right, resizeactive, 100 0 +bind = $mainMod SHIFT, left, resizeactive, -100 0 +bind = $mainMod SHIFT, up, resizeactive, 0 -100 +bind = $mainMod SHIFT, down, resizeactive, 0 100 + +# ----------------------------------------------------- +# Misc settings +# ----------------------------------------------------- +misc { + disable_hyprland_logo = true + disable_splash_rendering = true +} diff --git a/.config/hypr/starthypr.sh b/.config/hypr/starthypr.sh new file mode 100644 index 0000000..2485c38 --- /dev/null +++ b/.config/hypr/starthypr.sh @@ -0,0 +1,4 @@ +#!/bin/sh +export WLR_NO_HARDWARE_CURSORS=1 +export WLR_RENDERER_ALLOW_SOFTWARE=1 +exec Hyprland diff --git a/.config/waybar/colors-waybar.css b/.config/waybar/colors-waybar.css new file mode 100644 index 0000000..2a57899 --- /dev/null +++ b/.config/waybar/colors-waybar.css @@ -0,0 +1,20 @@ +@define-color foreground #c0c1c1; +@define-color background #06090a; +@define-color cursor #c0c1c1; + +@define-color color0 #06090a; +@define-color color1 #536768; +@define-color color2 #656D6A; +@define-color color3 #868570; +@define-color color4 #798D85; +@define-color color5 #98A19D; +@define-color color6 #D7DADA; +@define-color color7 #c0c1c1; +@define-color color8 #444647; +@define-color color9 #536768; +@define-color color10 #656D6A; +@define-color color11 #868570; +@define-color color12 #798D85; +@define-color color13 #98A19D; +@define-color color14 #D7DADA; +@define-color color15 #c0c1c1; diff --git a/.config/waybar/config b/.config/waybar/config new file mode 100644 index 0000000..ce34d63 --- /dev/null +++ b/.config/waybar/config @@ -0,0 +1,37 @@ +// __ __ _ +// \ \ / /_ _ _ _| |__ __ _ _ __ +// \ \ /\ / / _` | | | | '_ \ / _` | '__| +// \ V V / (_| | |_| | |_) | (_| | | +// \_/\_/ \__,_|\__, |_.__/ \__,_|_| +// |___/ +// +// by Stephan Raabe (2023) +// ----------------------------------------------------- +// +{ + "layer": "top", + "height": 30, + "spacing": 4, + "margin-top": 0, + "margin-left": 0, + "margin-right": 0, + "include": ["~/dotfiles/waybar/modules.json"], + "modules-left": [ + "custom/appmenu", + "custom/brave", + ], + "modules-center": [ + "wlr/workspaces", + ], + "modules-right": [ + "keyboard-state", + "pulseaudio", + "disk", + "cpu", + "memory", + "battery", + "clock", + "custom/exit", + "tray" + ], +} diff --git a/.config/waybar/launch.sh b/.config/waybar/launch.sh new file mode 100755 index 0000000..dedd9e2 --- /dev/null +++ b/.config/waybar/launch.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# ____ _ _ __ __ _ +# / ___|| |_ __ _ _ __| |_ \ \ / /_ _ _ _| |__ __ _ _ __ +# \___ \| __/ _` | '__| __| \ \ /\ / / _` | | | | '_ \ / _` | '__| +# ___) | || (_| | | | |_ \ V V / (_| | |_| | |_) | (_| | | +# |____/ \__\__,_|_| \__| \_/\_/ \__,_|\__, |_.__/ \__,_|_| +# |___/ +# by Stephan Raabe (2023) +# ----------------------------------------------------- + +# ----------------------------------------------------- +# Quit running waybar instances +# ----------------------------------------------------- +killall waybar + +# ----------------------------------------------------- +# Loading the configuration based on the username +# ----------------------------------------------------- +if [[ $USER = "raabe" ]] +then + waybar -c ~/dotfiles/waybar/myconfig & +else + waybar & +fi diff --git a/.config/waybar/modules.json b/.config/waybar/modules.json new file mode 100644 index 0000000..53c44e5 --- /dev/null +++ b/.config/waybar/modules.json @@ -0,0 +1,177 @@ +// __ __ _ _ +// | \/ | ___ __| |_ _| | ___ ___ +// | |\/| |/ _ \ / _` | | | | |/ _ \/ __| +// | | | | (_) | (_| | |_| | | __/\__ \ +// |_| |_|\___/ \__,_|\__,_|_|\___||___/ +// +// +// by Stephan Raabe (2023) +// ----------------------------------------------------- +// +{ + // Workspaces + "wlr/workspaces" : { + "on-click": "activate", + "active-only": false, + "all-outputs": true, + "format": "{icon}", + "format-icons": { + "urgent": "", + "active": "", + "default": "", + "sort-by-number": true + } + }, + + // Youtube Subscriber Count + "custom/youtube": { + "format": " {}", + "exec": "python ~/private/youtube.py", + "interval": "300", + "on-click": "brave https://studio.youtube.com", + "tooltip": false + }, + + // Outlook Launcher + "custom/outlook": { + "format": "", + "on-click": "brave --app=https://outlook.office.com/mail/", + "tooltip": false + }, + + // Teams Launcher + "custom/teams": { + "format": "", + "on-click": "brave --app=https://teams.microsoft.com/go", + "tooltip": false + }, + + // Brave Launcher + "custom/brave": { + "format": "", + "on-click": "brave", + "tooltip": false + }, + + // ChatGPT Launcher + "custom/chatgpt": { + "format": "", + "on-click": "brave --app=https://chat.openai.com", + "tooltip": false + }, + + // Rofi Calculator + "custom/calculator": { + "format": "", + "on-click": "~/dotfiles/scripts/calculator.sh", + "tooltip": false + }, + + // Looking Glass Launcher + "custom/lookingglass": { + "format": "", + "on-click": "~/dotfiles/scripts/looking-glass.sh", + "tooltip": false + }, + + // Rofi Application Launcher + "custom/appmenu": { + "format": " ", + "on-click": "~/dotfiles/scripts/applauncher.sh", + "tooltip": false + }, + + // Rofi Power Menu + "custom/exit": { + "format": "", + "on-click": "~/dotfiles/scripts/powermenu-hypr.sh", + "tooltip": false + }, + + // Keyboard State + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + + // System tray + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + + // Clock + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + + // CPU + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + + // Memory + "memory": { + "format": " {}%" + }, + + // Harddisc space used + "disk": { + "interval": 30, + "format": " {percentage_used}%", + "path": "/" + }, + + // Battery + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + + // Pulseaudio + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{icon} {volume}%", + "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" + }, + + "user": { + "format": "{user}", + "interval": 60, + "height": 30, + "width": 30, + "icon": false, + } +} diff --git a/.config/waybar/myconfig b/.config/waybar/myconfig new file mode 100644 index 0000000..96105c2 --- /dev/null +++ b/.config/waybar/myconfig @@ -0,0 +1,45 @@ +// __ __ _ +// \ \ / /_ _ _ _| |__ __ _ _ __ +// \ \ /\ / / _` | | | | '_ \ / _` | '__| +// \ V V / (_| | |_| | |_) | (_| | | +// \_/\_/ \__,_|\__, |_.__/ \__,_|_| +// |___/ +// +// by Stephan Raabe (2023) +// ----------------------------------------------------- +// +{ + "layer": "top", + "height": 30, + "spacing": 4, + "margin-top": 0, + "margin-left": 0, + "margin-right": 0, + "include": ["~/dotfiles/waybar/modules.json"], + "modules-left": [ + "custom/appmenu", + "custom/brave", + "custom/outlook", + "custom/teams", + "custom/calculator", + "custom/chatgpt", + "custom/lookingglass" + // "hyprland/window" + ], + "modules-center": [ + "wlr/workspaces", + ], + "modules-right": [ + "custom/youtube", + "keyboard-state", + "pulseaudio", + "disk", + "cpu", + "memory", + "battery", + "clock", + "user", + "custom/exit", + "tray" + ], +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..d252c45 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,320 @@ +/* + * __ __ _ ____ _ _ + * \ \ / /_ _ _ _| |__ __ _ _ __ / ___|| |_ _ _| | ___ + * \ \ /\ / / _` | | | | '_ \ / _` | '__| \___ \| __| | | | |/ _ \ + * \ V V / (_| | |_| | |_) | (_| | | ___) | |_| |_| | | __/ + * \_/\_/ \__,_|\__, |_.__/ \__,_|_| |____/ \__|\__, |_|\___| + * |___/ |___/ + * + * by Stephan Raabe (2023) + * ----------------------------------------------------- +*/ + +/* ----------------------------------------------------- + * Import Pywal colors + * ----------------------------------------------------- */ +@import 'colors-waybar.css'; + +/* ----------------------------------------------------- + * General + * ----------------------------------------------------- */ + +* { + font-family: "Fira Sans Semibold", FontAwesome, Roboto, Helvetica, Arial, sans-serif; + font-size: 14px; + border-radius: 20px; +} + +window#waybar { + background-color: rgba(0,0,0,0.8); + /* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */ + /* color: #FFFFFF; */ + background: transparent; + transition-property: background-color; + transition-duration: .5s; + border-radius: 20; +} + +/* +button { + box-shadow: inset 0 -3px transparent; + border: none; + border-radius: 0; +} +*/ + +/* ----------------------------------------------------- + * Workspaces + * ----------------------------------------------------- */ + +#workspaces button { + padding: 0px 10px; + border-radius: 10px; + border:0; + margin:0; + font-weight:bold; + color: @color11; +} + +#workspaces button.active { + color: #FFFFFF; + border-radius: 15px; + font-weight:bold; + border:0; +} + +#workspaces button:hover { + color: @color11; + border-radius: 15px; + border:0; +} +#workspaces button.focused { + color: @color11; + border-radius: 15px; + font-weight:bold; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#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, +#custom-youtube, +#user, +#mpd { + margin: 6px 10px 6px 0px; + padding: 0 0px; + color: #FFFFFF; + font-size:16; +} + +#window, +#workspaces { + margin: 4 10px 5 10px; + background-color:#000000; + opacity:0.5; + padding:0; +} + +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#custom-appmenu { + margin-left:16; + font-size:16; + font-weight:bold; +} + +#custom-appmenu, #custom-brave, #custom-outlook, #custom-teams, #custom-chatgpt, #custom-calculator, #custom-lookingglass { + margin-right:10px; + font-size:16px; +} + +#custom-exit { + margin-right: 10px; + font-size:14px; +} + +#clock { + background-color: transparent; + font-size:16; +} + +#battery { + color: @color11; +} + +#battery.charging, #battery.plugged { + color: #ffffff; + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +#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 { + background-color: transparent; +} + +#memory { + background-color: transparent; +} + +#disk { + background-color: transparent; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + background-color: #2980b9; +} + +#network.disconnected { + background-color: #f53c3c; +} + +#pulseaudio { + background-color: transparent; +} + +#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 { + color:#FFFFFF; + /* + 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); +} + +#window { + margin:0; +} + +#scratchpad { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad.empty { + background-color: transparent; +}