From 134bae792d55decf73e5e2371df69e341dcfa558 Mon Sep 17 00:00:00 2001 From: hesam-init Date: Thu, 4 Jul 2024 01:21:42 +0330 Subject: [PATCH] feat: external monitor brightness --- .scripts/setup/pkgs-installer.sh | 2 +- hypr-configs/hyprland/eww/_definitions.yuck | 13 +- .../brightness/get-external-brightness | 3 + .../brightness/set-external-brightness | 5 + .../eww/src/-components/_sliders.yuck | 3 +- .../eww/src/windows/_control-panel.yuck | 7 +- hypr-configs/hyprland/gtk-3.0/colors.css | 160 +++++++++--------- hypr-configs/hyprland/gtk-3.0/settings.ini | 27 +-- 8 files changed, 117 insertions(+), 103 deletions(-) create mode 100755 hypr-configs/hyprland/eww/scripts/brightness/get-external-brightness create mode 100755 hypr-configs/hyprland/eww/scripts/brightness/set-external-brightness diff --git a/.scripts/setup/pkgs-installer.sh b/.scripts/setup/pkgs-installer.sh index 1c77325..076bc24 100755 --- a/.scripts/setup/pkgs-installer.sh +++ b/.scripts/setup/pkgs-installer.sh @@ -12,7 +12,7 @@ declare -A PACKAGES=( ["BASE_PACKAGES"]="inetutils v4l2loopback bind-utils zellij bat dust aria2 fzf neofetch bat zsh fish-shell brightnessctl bluez cronie git stow eza dbus seatd elogind polkit NetworkManager gnome-keyring polkit-gnome pipewire wireplumber inotify-tools xorg gnome-keyring polkit-gnome mtpfs ffmpeg libnotify" ["DEVEL_PACKAGES"]="glib pango-devel gdk-pixbuf-devel libdbusmenu-gtk3-devel glib-devel gtk+3-devel gtk-layer-shell-devel base-devel startup-notification-devel cairo-devel xcb-util-devel xcb-util-cursor-devel xcb-util-xrm-devel xcb-util-wm-devel" ["AMD_DRIVERS"]="opencv Vulkan-Headers Vulkan-Tools Vulkan-ValidationLayers-32bit mesa-vulkan-radeon mesa-vulkan-radeon-32bit vulkan-loader vulkan-loader-32bit libspa-vulkan libspa-vulkan-32bit amdvlk mesa-dri mesa-vaapi" - ["HYPRLAND_PACKAGES"]="socat eww nerd-fonts-symbols-ttf Waybar avizo dunst swaybg mpvpaper grim jq slurp cliphist wl-clipboard swayidle pavucontrol nemo eog pavucontrol evince xorg-server-xwayland xdg-desktop-portal-gtk xdg-desktop-portal-wlr xdg-utils qt5-x11extras qt5-wayland qt6-wayland" + ["HYPRLAND_PACKAGES"]="ddcutil socat eww nerd-fonts-symbols-ttf Waybar avizo dunst swaybg mpvpaper grim jq slurp cliphist wl-clipboard swayidle pavucontrol nemo eog pavucontrol evince xorg-server-xwayland xdg-desktop-portal-gtk xdg-desktop-portal-wlr xdg-utils qt5-x11extras qt5-wayland qt6-wayland" ["SYSTEM_APPS"]="alacritty octoxbps blueman wifish wpa_gui glow" ) diff --git a/hypr-configs/hyprland/eww/_definitions.yuck b/hypr-configs/hyprland/eww/_definitions.yuck index 10393f8..3fed232 100644 --- a/hypr-configs/hyprland/eww/_definitions.yuck +++ b/hypr-configs/hyprland/eww/_definitions.yuck @@ -16,14 +16,17 @@ (defpoll wifi_radio :initial "off" :interval "2s" "nmcli radio wifi") ; Global +(defpoll volumemute :initial "false" :interval "1s" "pamixer --get-mute") +(defpoll volume :initial "0" :interval "1s" "pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | tr -d '%'") +(defpoll mic_volume :initial "0" :interval "1s" "pactl get-source-volume @DEFAULT_SOURCE@ | awk '{print $5}' | tr -d '%'") + +(defpoll brightness :initial "0" :interval "1s" "brightnessctl -m | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'") +(defpoll external_monitor_brightness :initial "0" :interval "1s" "./scripts/brightness/get-external-brightness") + (deflisten kbLayout :initial "en" "./scripts/kb-layout/get-active") (defpoll thour :initial "0" :interval "60s" "date +'%I'") (defpoll tmin :initial "0" :interval "60s" "date +'%M'") (defpoll tpm :initial "0" :interval "60s" "date +'%p'") -(defpoll volumemute :initial "false" :interval "1s" "pamixer --get-mute") -(defpoll volume :initial "0" :interval "1s" "pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}' | tr -d '%'") -(defpoll mic_volume :initial "0" :interval "1s" "pactl get-source-volume @DEFAULT_SOURCE@ | awk '{print $5}' | tr -d '%'") -(defpoll brightness :initial "0" :interval "2s" "brightnessctl -m | awk -F, '{print substr($4, 0, length($4)-1)}' | tr -d '%'") (defpoll calendar_day :initial "1" :interval "20h" "date '+%d'") (defpoll calendar_year :initial "2000" :interval "20h" "date '+%Y'") (defpoll bat0 :initial "0" :interval "30s" "bash ./scripts/sys_info --bat") @@ -80,7 +83,7 @@ ;; (deflisten pside "playerctl -F metadata -f '{ \"volume\": {{volume*100}}, \"shuffle\": \"{{shuffle}}\", \"loop\": \"{{loop}}\" }'") ; Controlpanel -(defvar revealControlpanel false) +(defvar revealControlpanel true) (defvar revealWeather false) (defpoll hostname :initial "idk" :interval "24h" 'echo "$(whoami)"') (defpoll uptime :initial "idk" :interval "1m" "uptime -p") diff --git a/hypr-configs/hyprland/eww/scripts/brightness/get-external-brightness b/hypr-configs/hyprland/eww/scripts/brightness/get-external-brightness new file mode 100755 index 0000000..e3bf1be --- /dev/null +++ b/hypr-configs/hyprland/eww/scripts/brightness/get-external-brightness @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +ddcutil --bus 3 --skip-ddc-checks --enable-dynamic-sleep getvcp 10 | grep -oP 'current value =\s*\K\d+' diff --git a/hypr-configs/hyprland/eww/scripts/brightness/set-external-brightness b/hypr-configs/hyprland/eww/scripts/brightness/set-external-brightness new file mode 100755 index 0000000..13e2b1f --- /dev/null +++ b/hypr-configs/hyprland/eww/scripts/brightness/set-external-brightness @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +bright=$(printf '%.0f' $1) + +ddcutil --bus 3 setvcp 10 $bright | cat >/tmp/brihtness.txt diff --git a/hypr-configs/hyprland/eww/src/-components/_sliders.yuck b/hypr-configs/hyprland/eww/src/-components/_sliders.yuck index d6986d8..cacffc8 100644 --- a/hypr-configs/hyprland/eww/src/-components/_sliders.yuck +++ b/hypr-configs/hyprland/eww/src/-components/_sliders.yuck @@ -10,7 +10,7 @@ :min 0 :flipped true)) -(defwidget BigBarSlider [var ?icon ?onchange ?visible] +(defwidget BigBarSlider [var ?icon ?onchange ?visible ?timeout] (box :class "big-bar-slider" :visible {visible} @@ -19,6 +19,7 @@ (scale :value var :onchange {onchange} + :visible {visible} :orientation "v" :tooltip "${var}%" :max 101 diff --git a/hypr-configs/hyprland/eww/src/windows/_control-panel.yuck b/hypr-configs/hyprland/eww/src/windows/_control-panel.yuck index be7d062..d982dab 100644 --- a/hypr-configs/hyprland/eww/src/windows/_control-panel.yuck +++ b/hypr-configs/hyprland/eww/src/windows/_control-panel.yuck @@ -43,12 +43,14 @@ (box :orientation "h" :class "panel-widget" + :spacing spacing-large :height 140 (SystemStatus :icon "󰻠" :val { EWW_CPU.avg }) (SystemStatus :icon "󰍛" :val { EWW_RAM.used_mem_perc }) (SystemStatus :icon "󰈐" :val { gpu }) (SystemStatus :icon "" :val { EWW_BATTERY.BAT0.capacity } :visible false) + (SystemStatus :icon "󰃞" :val { external_monitor_brightness }) )) (defwidget User [] @@ -277,9 +279,8 @@ (BigBarSlider :var { mic_volume } :icon {volumemute == 'false' ? "" : "󰖁"} :onchange "pactl set-source-volume @DEFAULT_SOURCE@ {}%") - (BigBarSlider :visible false :var { brightness } :icon "󰃞" - :onchange "brightnessctl set {}%") - + (BigBarSlider :var { external_monitor_brightness } :icon "󰃞" :visible false + :onchange "./scripts/brightness/set-external-brightness {}") )) (defwidget quote [] diff --git a/hypr-configs/hyprland/gtk-3.0/colors.css b/hypr-configs/hyprland/gtk-3.0/colors.css index fb7be2c..0c919b2 100644 --- a/hypr-configs/hyprland/gtk-3.0/colors.css +++ b/hypr-configs/hyprland/gtk-3.0/colors.css @@ -1,84 +1,84 @@ -@define-color borders_breeze #565656; -@define-color content_view_bg_breeze #303030; +@define-color borders_breeze #bcbebf; +@define-color content_view_bg_breeze #ffffff; @define-color error_color_backdrop_breeze #da4453; @define-color error_color_breeze #da4453; -@define-color error_color_insensitive_backdrop_breeze #663439; -@define-color error_color_insensitive_breeze #663439; -@define-color insensitive_base_color_breeze #2e2e2e; -@define-color insensitive_base_fg_color_breeze #686868; -@define-color insensitive_bg_color_breeze #262626; -@define-color insensitive_borders_breeze #353535; -@define-color insensitive_fg_color_breeze #636363; -@define-color insensitive_selected_bg_color_breeze #262626; -@define-color insensitive_selected_fg_color_breeze #636363; -@define-color insensitive_unfocused_bg_color_breeze #262626; -@define-color insensitive_unfocused_fg_color_breeze #636363; -@define-color insensitive_unfocused_selected_bg_color_breeze #262626; -@define-color insensitive_unfocused_selected_fg_color_breeze #636363; -@define-color link_color_breeze #4285f4; -@define-color link_visited_color_breeze #00bcd4; -@define-color success_color_backdrop_breeze #01a299; -@define-color success_color_breeze #01a299; -@define-color success_color_insensitive_backdrop_breeze #1e5451; -@define-color success_color_insensitive_breeze #1e5451; -@define-color theme_base_color_breeze #303030; -@define-color theme_bg_color_breeze #282828; -@define-color theme_button_background_backdrop_breeze #4d4d4d; -@define-color theme_button_background_backdrop_insensitive_breeze #494949; -@define-color theme_button_background_insensitive_breeze #494949; -@define-color theme_button_background_normal_breeze #4d4d4d; -@define-color theme_button_decoration_focus_backdrop_breeze #0078d7; -@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #305877; -@define-color theme_button_decoration_focus_breeze #0078d7; -@define-color theme_button_decoration_focus_insensitive_breeze #305877; -@define-color theme_button_decoration_hover_backdrop_breeze #429ce3; -@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #46647b; -@define-color theme_button_decoration_hover_breeze #429ce3; -@define-color theme_button_decoration_hover_insensitive_breeze #46647b; -@define-color theme_button_foreground_active_backdrop_breeze #dfdfdf; -@define-color theme_button_foreground_active_backdrop_insensitive_breeze #636363; +@define-color error_color_insensitive_backdrop_breeze #f0b1b8; +@define-color error_color_insensitive_breeze #f0b1b8; +@define-color insensitive_base_color_breeze #f3f3f3; +@define-color insensitive_base_fg_color_breeze #aaabac; +@define-color insensitive_bg_color_breeze #e3e5e7; +@define-color insensitive_borders_breeze #d2d4d6; +@define-color insensitive_fg_color_breeze #a0a1a3; +@define-color insensitive_selected_bg_color_breeze #e3e5e7; +@define-color insensitive_selected_fg_color_breeze #a0a1a3; +@define-color insensitive_unfocused_bg_color_breeze #e3e5e7; +@define-color insensitive_unfocused_fg_color_breeze #a0a1a3; +@define-color insensitive_unfocused_selected_bg_color_breeze #e3e5e7; +@define-color insensitive_unfocused_selected_fg_color_breeze #a0a1a3; +@define-color link_color_breeze #2980b9; +@define-color link_visited_color_breeze #9b59b6; +@define-color success_color_backdrop_breeze #27ae60; +@define-color success_color_breeze #27ae60; +@define-color success_color_insensitive_backdrop_breeze #abd8be; +@define-color success_color_insensitive_breeze #abd8be; +@define-color theme_base_color_breeze #ffffff; +@define-color theme_bg_color_breeze #eff0f1; +@define-color theme_button_background_backdrop_breeze #fcfcfc; +@define-color theme_button_background_backdrop_insensitive_breeze #f0f0f0; +@define-color theme_button_background_insensitive_breeze #f0f0f0; +@define-color theme_button_background_normal_breeze #fcfcfc; +@define-color theme_button_decoration_focus_backdrop_breeze #3daee9; +@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_focus_breeze #3daee9; +@define-color theme_button_decoration_focus_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_hover_backdrop_breeze #3daee9; +@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #a2d8f3; +@define-color theme_button_decoration_hover_breeze #3daee9; +@define-color theme_button_decoration_hover_insensitive_breeze #a2d8f3; +@define-color theme_button_foreground_active_backdrop_breeze #232629; +@define-color theme_button_foreground_active_backdrop_insensitive_breeze #a0a1a3; @define-color theme_button_foreground_active_breeze #ffffff; -@define-color theme_button_foreground_active_insensitive_breeze #636363; -@define-color theme_button_foreground_backdrop_breeze #ffffff; -@define-color theme_button_foreground_backdrop_insensitive_breeze #858585; -@define-color theme_button_foreground_insensitive_breeze #858585; -@define-color theme_button_foreground_normal_breeze #ffffff; -@define-color theme_fg_color_breeze #dfdfdf; -@define-color theme_header_background_backdrop_breeze #2a2a2a; -@define-color theme_header_background_breeze #202020; -@define-color theme_header_background_light_breeze #282828; -@define-color theme_header_foreground_backdrop_breeze #ffffff; -@define-color theme_header_foreground_breeze #ffffff; -@define-color theme_header_foreground_insensitive_backdrop_breeze #ffffff; -@define-color theme_header_foreground_insensitive_breeze #ffffff; -@define-color theme_hovering_selected_bg_color_breeze #429ce3; -@define-color theme_selected_bg_color_breeze #0078d7; +@define-color theme_button_foreground_active_insensitive_breeze #a0a1a3; +@define-color theme_button_foreground_backdrop_breeze #232629; +@define-color theme_button_foreground_backdrop_insensitive_breeze #a8a9aa; +@define-color theme_button_foreground_insensitive_breeze #a8a9aa; +@define-color theme_button_foreground_normal_breeze #232629; +@define-color theme_fg_color_breeze #232629; +@define-color theme_header_background_backdrop_breeze #eff0f1; +@define-color theme_header_background_breeze #dee0e2; +@define-color theme_header_background_light_breeze #eff0f1; +@define-color theme_header_foreground_backdrop_breeze #232629; +@define-color theme_header_foreground_breeze #232629; +@define-color theme_header_foreground_insensitive_backdrop_breeze #232629; +@define-color theme_header_foreground_insensitive_breeze #232629; +@define-color theme_hovering_selected_bg_color_breeze #3daee9; +@define-color theme_selected_bg_color_breeze #3daee9; @define-color theme_selected_fg_color_breeze #ffffff; -@define-color theme_text_color_breeze #dfdfdf; -@define-color theme_titlebar_background_backdrop_breeze #2a2a2a; -@define-color theme_titlebar_background_breeze #202020; -@define-color theme_titlebar_background_light_breeze #282828; -@define-color theme_titlebar_foreground_backdrop_breeze #ffffff; -@define-color theme_titlebar_foreground_breeze #ffffff; -@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #ffffff; -@define-color theme_titlebar_foreground_insensitive_breeze #ffffff; -@define-color theme_unfocused_base_color_breeze #303030; -@define-color theme_unfocused_bg_color_breeze #282828; -@define-color theme_unfocused_fg_color_breeze #dfdfdf; -@define-color theme_unfocused_selected_bg_color_alt_breeze #093a61; -@define-color theme_unfocused_selected_bg_color_breeze #093a61; -@define-color theme_unfocused_selected_fg_color_breeze #dfdfdf; -@define-color theme_unfocused_text_color_breeze #dfdfdf; -@define-color theme_unfocused_view_bg_color_breeze #2e2e2e; -@define-color theme_unfocused_view_text_color_breeze #686868; -@define-color theme_view_active_decoration_color_breeze #64bbff; -@define-color theme_view_hover_decoration_color_breeze #64bbff; -@define-color tooltip_background_breeze #202020; -@define-color tooltip_border_breeze #505050; -@define-color tooltip_text_breeze #dfdfdf; -@define-color unfocused_borders_breeze #565656; -@define-color unfocused_insensitive_borders_breeze #353535; -@define-color warning_color_backdrop_breeze #ff6d00; -@define-color warning_color_breeze #ff6d00; -@define-color warning_color_insensitive_backdrop_breeze #73421e; -@define-color warning_color_insensitive_breeze #73421e; +@define-color theme_text_color_breeze #232629; +@define-color theme_titlebar_background_backdrop_breeze #eff0f1; +@define-color theme_titlebar_background_breeze #dee0e2; +@define-color theme_titlebar_background_light_breeze #eff0f1; +@define-color theme_titlebar_foreground_backdrop_breeze #232629; +@define-color theme_titlebar_foreground_breeze #232629; +@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #232629; +@define-color theme_titlebar_foreground_insensitive_breeze #232629; +@define-color theme_unfocused_base_color_breeze #ffffff; +@define-color theme_unfocused_bg_color_breeze #eff0f1; +@define-color theme_unfocused_fg_color_breeze #232629; +@define-color theme_unfocused_selected_bg_color_alt_breeze #c2e0f5; +@define-color theme_unfocused_selected_bg_color_breeze #c2e0f5; +@define-color theme_unfocused_selected_fg_color_breeze #232629; +@define-color theme_unfocused_text_color_breeze #232629; +@define-color theme_unfocused_view_bg_color_breeze #f3f3f3; +@define-color theme_unfocused_view_text_color_breeze #aaabac; +@define-color theme_view_active_decoration_color_breeze #3daee9; +@define-color theme_view_hover_decoration_color_breeze #3daee9; +@define-color tooltip_background_breeze #f7f7f7; +@define-color tooltip_border_breeze #c2c3c4; +@define-color tooltip_text_breeze #232629; +@define-color unfocused_borders_breeze #bcbebf; +@define-color unfocused_insensitive_borders_breeze #d2d4d6; +@define-color warning_color_backdrop_breeze #f67400; +@define-color warning_color_breeze #f67400; +@define-color warning_color_insensitive_backdrop_breeze #fbc289; +@define-color warning_color_insensitive_breeze #fbc289; diff --git a/hypr-configs/hyprland/gtk-3.0/settings.ini b/hypr-configs/hyprland/gtk-3.0/settings.ini index 8353bbb..4bdc8ef 100644 --- a/hypr-configs/hyprland/gtk-3.0/settings.ini +++ b/hypr-configs/hyprland/gtk-3.0/settings.ini @@ -1,22 +1,23 @@ [Settings] -gtk-theme-name=Orchis-Dark -gtk-icon-theme-name=Fluent-dark -gtk-font-name=Noto Sans, 10 +gtk-application-prefer-dark-theme=false +gtk-button-images=true gtk-cursor-theme-name=Bibata-Modern-Ice gtk-cursor-theme-size=24 -gtk-toolbar-style=3 -gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR -gtk-button-images=0 -gtk-menu-images=0 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true gtk-enable-event-sounds=1 gtk-enable-input-feedback-sounds=0 +gtk-font-name=Noto Sans, 10 +gtk-icon-theme-name=breeze +gtk-menu-images=true +gtk-modules=colorreload-gtk-module +gtk-primary-button-warps-slider=true +gtk-sound-theme-name=ocean +gtk-theme-name=Orchis-Dark +gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR +gtk-toolbar-style=3 gtk-xft-antialias=1 +gtk-xft-dpi=98304 gtk-xft-hinting=1 gtk-xft-hintstyle=hintslight gtk-xft-rgba=rgb -gtk-application-prefer-dark-theme=0 -gtk-decoration-layout=icon:minimize,maximize,close -gtk-enable-animations=true -gtk-modules=colorreload-gtk-module -gtk-primary-button-warps-slider=false -gtk-xft-dpi=98304