From 3de8465cca0ba9dc2bf1f93b439e0530a95051e1 Mon Sep 17 00:00:00 2001 From: moonleay Date: Thu, 4 Jan 2024 19:20:16 +0100 Subject: [PATCH] feat: replaced waybar with gBar --- gBar/config | 197 ++++++++++++++++++++++ gBar/style.css | 386 ++++++++++++++++++++++++++++++++++++++++++ gBar/style.scss | 418 ++++++++++++++++++++++++++++++++++++++++++++++ gBar/update.sh | 24 +++ gtk-3.0/bookmarks | 1 + hypr/autorun.conf | 3 +- 6 files changed, 1028 insertions(+), 1 deletion(-) create mode 100644 gBar/config create mode 100644 gBar/style.css create mode 100644 gBar/style.scss create mode 100644 gBar/update.sh diff --git a/gBar/config b/gBar/config new file mode 100644 index 0000000..98ed903 --- /dev/null +++ b/gBar/config @@ -0,0 +1,197 @@ +# Example configuration. +# Everything after '#' is ignored +# Format of the variables: +# [variable]: [value] +# Whitespaces are ignored in the following locations: +# - Before the variable +# - After the ':' +# - After the value +# +# String variables can be escaped ([Notation in config] -> "Result"): +# - foo\\bar -> "foobar" +# - foo\nbar -> "foobar" +# - foo\sbar -> "foo bar" + +# The following three options control the ordering of the widgets. +# Reordering can cause slight margin inconsistencies, +# so it is recommend to only make minor adjustments to the default layout. +# Adding the same widget multiple times to the layout is *not* supported and will cause issues. + +# Widgets to show on the left side +WidgetsLeft: [Workspaces] +# Widgets to center +WidgetsCenter: [Time] +# Widgets to display on the right side +WidgetsRight: [Tray, Packages, Audio, Bluetooth, Network, Disk, VRAM, GPU, RAM, CPU, Battery, Power] + +# The CPU sensor to use +CPUThermalZone: /sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon8/temp1_input + +# The command to execute on suspend +# SuspendCommand: ~/.config/scripts/sys.sh suspend + +# The command to execute on lock +# LockCommand: ~/.config/scripts/sys.sh lock +LockCommand: swaylock + +# The command to execute on exit +ExitCommand: killall Hyprland + +# The folder, where the battery sensors reside +BatteryFolder: /sys/class/power_supply/BAT0 + +# The partition to monitor with disk sensor +DiskPartition: / + +# Overrides the icon of the nth (in this case the first) workspace. +# Please note the missing space between "," and the symbol. Adding a space here adds it to the bar too! +#WorkspaceSymbol: 1, + +# The default symbol for the workspaces +DefaultWorkspaceSymbol:  + +# All of the icons that can be modified. +# Please note that some icons require a space ("\s") (e.g. default ShutdownIcon) +ShutdownIcon: \s +RebootIcon: 󰑐 +SleepIcon: 󰏤 +LockIcon:  +ExitIcon: 󰗼 +BTOffIcon: 󰂲 +BTOnIcon: 󰂯 +BTConnectedIcon: 󰂱 +DevKeyboardIcon: 󰌌\s +DevMouseIcon: 󰍽\s +DevHeadsetIcon: 󰋋\s +DevControllerIcon: 󰖺\s +DevUnknownIcon: \s +SpeakerMutedIcon: 󰝟 +SpeakerHighIcon: 󰕾 +MicMutedIcon: 󰍭 +MicHighIcon: 󰍬 +PackageOutOfDateIcon: 󰏔\s + +# Scroll through the workspaces of the current monitor instead of all workspaces +WorkspaceScrollOnMonitor: true + +# When true: Scroll up -> Next workspace instead of previous workspace. Analogous with scroll down +WorkspaceScrollInvert: false + +# Number of workspaces to display. Displayed workspace IDs are 1-n (Default: 1-9) +NumWorkspaces: 12 + +# Use Hyprland IPC instead of the ext_workspace protocol for workspace polling. +# Hyprland IPC is *slightly* less performant (+0.1% one core), but way less bug prone, +# since the protocol is not as feature complete as Hyprland IPC. +# NOTE: Hyprland no longer supports ext-workspace-unstable-v1 as of commit bb09334. +# Hyprland IPC is thus *required* for workspace support under Hyprland >=v0.30.0! +UseHyprlandIPC: true + +# The location of the bar +# Needs to be capitalized!! +# Values are: L (Left), R (Right), T (Top), B (bottom) +Location: T + +# When the location is set to side, this option forces everything (even text) to be right-side up. +# *Always* make sure to enable SensorTooltips when enabling this option. Failure to do so *will* cause graphical issues. +IconsAlwaysUp: false + +# Forces the time to be centered. +# This can cause the right widget to clip outside, if there is not enough space on screen (e.g. when opening the text) +# Setting this to false will definitely fix this issue, but it won't look very good, since it will be off-center. +# So try to decrease "TimeSpace" first, before setting this configuration to false. +CenterTime: true + +# How much space should be reserved for the time widget. Setting this too high can cause the right widget to clip outside. +# Therefore try to set it as low as possible if you experience clipping. +# Although keep in mind, that a value that is too low can cause the widget to be be off-center, +# which can also cause clipping. +# If you can't find an optimal value, consider setting 'CenterTime' to false +# TimeSpace: 300 +TimeSpace: 240 + +# Set datetime style +# DateTimeStyle: %a %D - %H:%M:%S %Z +DateTimeStyle: %a %F %R %Z + +# Set datetime locale (defaults to system locale if not set or set to empty string) +#DateTimeLocale: de_DE.utf8 + +# Adds a audio input(aka. microphone) widget +AudioInput: true + +# Sets the audio slider to be on reveal (Just like the sensors) when true. Only affects the bar. +AudioRevealer: false + +# Sets the rate of change of the slider on each scroll. In Percent +AudioScrollSpeed: 5 + +# Display numbers instead of a slider for the two audio widgets. Doesn't affect the audio flyin +AudioNumbers: false + +# Command that is run to check if there are out-of-date packages. +# The script should return *ONLY* a number. If it doesn't output a number, updates are no longer checked. +# Default value is applicable for Arch Linux. (See data/update.sh for a human-readable version) +CheckPackagesCommand: p="$(checkupdates)"; e=$?; if [ $e -eq 127 ] ; then exit 127; fi; if [ $e -eq 2 ] ; then echo "0" && exit 0; fi; echo "$p" | wc -l + + +# How often to check for updates. In seconds +CheckUpdateInterval: 300 + +# Limits the range of the audio slider. Only works for audio output. +# Slider "empty" is AudioMinVolume, Slider "full" is AudioMaxVolume +# AudioMinVolume: 30 # Audio can't get below 30% +# AudioMaxVolume: 120 # Audio can't get above 120% + +# The network adapter to use. You can query /sys/class/net for all possible values +NetworkAdapter: wlan0 + +# Disables the network widget when set to false +NetworkWidget: true + +# The card to poll when using AMDGPU. If you don't have an AMD card, you can skip this config. +# Possible values can be found by querying /sys/class/drm +DrmAmdCard: card1 + +# Use tooltips instead of sliders for the sensors +SensorTooltips: false + +# The size of the of the circular sensors +SensorSize: 24 + +# The size of the network icon +NetworkIconSize: 24 + +# Enables tray icons +EnableSNI: true + +# SNIIconSize sets the icon size for a SNI icon. +# SNIPaddingTop Can be used to push the Icon down. Negative values are allowed +# SNIIconName overrides what icon from an icon theme to display. +# SNIDisabled prevents an icon from being registered. +# For all SNI properties: The first parameter is a filter of the tooltip(The text that pops up, when the icon is hovered) of the icon. +# The wildcard filter '*' does not work for SNIIconName and SNIDisabled + +# Scale everything down to 25 pixels ('*' as filter means everything) +#SNIIconSize: *, 25 +# Explicitly make OBS a bit smaller than default +#SNIIconSize: OBS, 23 +# Nudges the Discord icon a bit down +#SNIPaddingTop: Discord, 5 +# Override the default icon given to gBar by discord to an icon theme supplied one (Example is from papirus theme) +#SNIIconName: Discord, discord-tray +# Prevents steam from displaying. Note: Steam doesn't have a tooltip, which means the object path is filtered instead. +#SNIDisabled: steam, true + +# These set the range for the network widget. The widget changes colors at six intervals: +# - Below Min...Bytes ("under") +# - Between ]0%;25%]. 0% = Min...Bytes; 100% = Max...Bytes ("low") +# - Between ]25%;50%]. 0% = Min...Bytes; 100% = Max...Bytes ("mid-low") +# - Between ]50%;75%]. 0% = Min...Bytes; 100% = Max...Bytes ("mid-high") +# - Between ]75%;100%]. 0% = Min...Bytes; 100% = Max...Bytes ("high") +# - Above Max...Bytes ("over") +MinDownloadBytes: 0 +MaxDownloadBytes: 10485760 # 10 * 1024 * 1024 = 10 MiB +MinUploadBytes: 0 +MaxUploadBytes: 5242880 # 5 * 1024 * 1024 = 5 MiB + diff --git a/gBar/style.css b/gBar/style.css new file mode 100644 index 0000000..0cec37d --- /dev/null +++ b/gBar/style.css @@ -0,0 +1,386 @@ +* { + all: unset; + font-family: "CaskaydiaCove NF"; +} + +.popup { + color: #50fa7b; +} + +.bar, tooltip { + background-color: #282a36; + border-radius: 16px; + margin-left: 16px; + margin-right: 16px; + margin-top: 8px; +} + +.right { + border-radius: 16px; +} + +.time-text { + font-size: 16px; +} + +.reboot-button { + font-size: 28px; + color: #6272a4; +} + +.sleep-button { + font-size: 28px; + color: #6272a4; +} + +.lock-button { + font-size: 28px; + color: #6272a4; +} + +.exit-button { + font-size: 28px; + color: #6272a4; +} + +.power-button { + font-size: 28px; + color: #ff5555; +} + +.system-confirm { + color: #50fa7b; +} + +trough { + border-radius: 3px; + border-width: 1px; + border-style: none; + background-color: #44475a; + min-width: 4px; + min-height: 4px; +} + +slider { + border-radius: 0%; + border-width: 1px; + border-style: none; + margin: -9px -9px -9px -9px; + min-width: 16px; + min-height: 16px; + background-color: transparent; +} + +highlight { + border-radius: 3px; + border-width: 1px; + border-style: none; + min-width: 6px; + min-height: 6px; +} + +.audio-icon { + font-size: 24px; + color: #ffb86c; +} + +.audio-volume { + font-size: 16px; + color: #ffb86c; +} +.audio-volume trough { + background-color: #44475a; +} +.audio-volume slider { + background-color: transparent; +} +.audio-volume highlight { + background-color: #ffb86c; +} + +.mic-icon { + font-size: 24px; + color: #bd93f9; +} + +.mic-volume { + font-size: 16px; + color: #bd93f9; +} +.mic-volume trough { + background-color: #44475a; +} +.mic-volume slider { + background-color: transparent; +} +.mic-volume highlight { + background-color: #bd93f9; +} + +.package-outofdate { + margin: -5px -5px -5px -5px; + font-size: 24px; + color: #ff5555; +} + +.bt-num { + font-size: 16px; + color: #1793D1; +} + +.bt-label-on { + font-size: 20px; + color: #1793D1; +} + +.bt-label-off { + font-size: 24px; + color: #1793D1; +} + +.bt-label-connected { + font-size: 28px; + color: #1793D1; +} + +.disk-widget * { + color: #bd93f9; + font-size: 16px; +} + +.disk-util-progress { + background-color: #44475a; +} + +.vram-widget * { + color: #ffb86c; + font-size: 16px; +} + +.vram-util-progress { + background-color: #44475a; +} + +.ram-widget * { + color: #f1fa8c; + font-size: 16px; +} + +.ram-util-progress { + background-color: #44475a; +} + +.gpu-widget * { + color: #8be9fd; + font-size: 16px; +} + +.gpu-util-progress { + background-color: #44475a; +} + +.cpu-widget * { + color: #50fa7b; + font-size: 16px; +} + +.cpu-util-progress { + background-color: #44475a; +} + +.battery-widget * { + color: #ff79c6; + font-size: 16px; +} + +.battery-util-progress { + background-color: #44475a; +} + +.battery-charging { + color: #ffb86c; +} + +.network-data-text { + color: #50fa7b; + font-size: 16px; +} + +.network-up-under { + color: #44475a; +} + +.network-up-low { + color: #50fa7b; +} + +.network-up-mid-low { + color: #f1fa8c; +} + +.network-up-mid-high { + color: #ffb86c; +} + +.network-up-high { + color: #bd93f9; +} + +.network-up-over { + color: #ff5555; +} + +.network-down-under { + color: #44475a; +} + +.network-down-low { + color: #50fa7b; +} + +.network-down-mid-low { + color: #f1fa8c; +} + +.network-down-mid-high { + color: #ffb86c; +} + +.network-down-high { + color: #bd93f9; +} + +.network-down-over { + color: #ff5555; +} + +.ws-dead { + color: #44475a; + font-size: 16px; +} + +.ws-inactive { + color: #6272a4; + font-size: 16px; +} + +.ws-visible { + color: #8be9fd; + font-size: 16px; +} + +.ws-current { + color: #f1fa8c; + font-size: 16px; +} + +.ws-active { + color: #50fa7b; + font-size: 16px; +} + +@keyframes connectanim { + from { + background-image: radial-gradient(circle farthest-side at center, #1793D1 0%, transparent 0%, transparent 100%); + } + to { + background-image: radial-gradient(circle farthest-side at center, #1793D1 0%, #1793D1 100%, transparent 100%); + } +} +@keyframes disconnectanim { + from { + background-image: radial-gradient(circle farthest-side at center, transparent 0%, #1793D1 0%, #1793D1 100%); + } + to { + background-image: radial-gradient(circle farthest-side at center, transparent 0%, transparent 100%, #1793D1 100%); + } +} +@keyframes scanonanim { + from { + color: #f1fa8c; + } + to { + color: #50fa7b; + } +} +@keyframes scanoffanim { + from { + color: #50fa7b; + } + to { + color: #f1fa8c; + } +} +.bt-bg { + background-color: #282a36; + border-radius: 16px; +} + +.bt-header-box { + margin-top: 4px; + margin-right: 8px; + margin-left: 8px; + font-size: 24px; + color: #1793D1; +} + +.bt-body-box { + margin-right: 8px; + margin-left: 8px; +} + +.bt-button { + border-radius: 16px; + padding-left: 8px; + padding-right: 8px; + padding-top: 4px; + padding-bottom: 4px; + margin-bottom: 4px; + margin-top: 4px; + font-size: 16px; +} +.bt-button.active { + animation-name: connectanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; +} +.bt-button.inactive { + animation-name: disconnectanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; +} +.bt-button.failed { + color: #ff5555; +} + +.bt-close { + color: #ff5555; + background-color: #44475a; + border-radius: 16px; + padding: 0px 8px 0px 7px; + margin: 0px 0px 0px 8px; +} + +.bt-scan { + color: #f1fa8c; + background-color: #44475a; + border-radius: 16px; + padding: 2px 11px 0px 7px; + margin: 0px 0px 0px 10px; + font-size: 18px; +} +.bt-scan.active { + animation-name: scanonanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; +} +.bt-scan.inactive { + animation-name: scanoffanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; +} + diff --git a/gBar/style.scss b/gBar/style.scss new file mode 100644 index 0000000..b522cc0 --- /dev/null +++ b/gBar/style.scss @@ -0,0 +1,418 @@ +// colorscheme(dracula) +// See https://github.com/dracula/dracula-theme/blob/master/LICENSE or dracula/LICENSE for the license +$bg: #282a36; +$fg: #f8f8f2; +$inactive: #44475a; +$darkblue: #6272a4; +$cyan: #8be9fd; +$green: #50fa7b; +$orange: #ffb86c; +$pink: #ff79c6; +$purple: #bd93f9; +$red: #ff5555; +$yellow: #f1fa8c; + + +$btblue: #1793D1; + +$textsize: 16px; + +*{ + all: unset; + font-family: "CaskaydiaCove NF"; +} + +// debug +.cpu-box{ + //background-color: #00cc00 +} + +.popup { + color: #50fa7b; +} + + +.bar,tooltip{ + background-color: $bg; + border-radius: 16px; +} + +.right { + border-radius: 16px; +} + +.time-text { + font-size: $textsize; +} + +.reboot-button { + font-size: 28px; + + color: $darkblue; +} +.sleep-button { + font-size: 28px; + + color: $darkblue; +} +.lock-button { + font-size: 28px; + + color: $darkblue; +} +.exit-button { + font-size: 28px; + + color: $darkblue; +} + +.power-button { + font-size: 28px; + + color: $red; +} + +.power-box { +} + +.power-box-expand { +} + +.system-confirm { + color: $green; +} + +// Common slider settings +trough { + border-radius: 3px; + border-width: 1px; + border-style: none; + background-color: $inactive; + // margin-top: 2px; + min-width: 4px; + min-height: 4px; +} + +slider { + // Controls the size of the control area (set border-style to solid to see) + border-radius: 0%; + border-width: 1px; + border-style: none; + margin: -9px -9px -9px -9px; + min-width: 16px; + min-height: 16px; + background-color: transparent; +} + +highlight { + border-radius: 3px; + border-width: 1px; + border-style: none; + // For vertical we need width, for horizontal we need height + // Both can coexist though + min-width: 6px; + min-height: 6px; +} + +.audio-icon { + font-size: 24px; + color: $orange; +} + +.audio-volume { + trough { + background-color: $inactive; + } + + slider { + background-color: transparent; + } + + highlight { + background-color: $orange; + } + + font-size: 16px; + color: $orange; +} + +.mic-icon { + font-size: 24px; + color: $purple; + // margin-right: 0px; +} + +.mic-volume { + trough { + background-color: $inactive; + } + + slider { + background-color: transparent; + } + + highlight { + background-color: $purple; + } + + font-size: 16px; + color: $purple; +} + +.package-outofdate { + margin: -5px -5px -5px -5px; + font-size: 24px; + color: $red; +} + +.bt-num { + font-size: $textsize; + color: $btblue; +} +.bt-label-on { + font-size: 20px; + color: $btblue; +} +.bt-label-off { + font-size: 24px; + color: $btblue; +} +.bt-label-connected { + font-size: 28px; + color: $btblue; +} + +.disk-widget * { + color: $purple; + font-size: $textsize; +} +.disk-util-progress { + background-color: $inactive; +} + +.vram-widget * { + color: $orange; + font-size: $textsize; +} +.vram-util-progress { + background-color: $inactive; +} + +.ram-widget * { + color: $yellow; + font-size: $textsize; +} +.ram-util-progress { + background-color: $inactive; +} + +.gpu-widget * { + color: $cyan; + font-size: $textsize; +} +.gpu-util-progress { + background-color: $inactive; +} + +.cpu-widget * { + color: $green; + font-size: $textsize; +} +.cpu-util-progress { + background-color: $inactive; +} + +.battery-widget * { + color: $pink; + font-size: $textsize; +} +.battery-util-progress { + background-color: $inactive; +} + +.battery-charging { + color: $orange +} + +.network-data-text { + color: $green; + font-size: $textsize; +} + +// <= 0% (Below MinUploadBytes) +.network-up-under { + color: $inactive; +} +// <= 25% +.network-up-low { + color: $green; +} +// <= 50% +.network-up-mid-low { + color: $yellow; +} +// <= 75% +.network-up-mid-high { + color: $orange; +} +// <= 100% +.network-up-high { + color: $purple; +} +// > 100% (Above MaxUploadBytes) +.network-up-over { + color: $red; +} + +// <= 0% (Below MinDownloadBytes) +.network-down-under { + color: $inactive; +} +// <= 25% +.network-down-low { + color: $green; +} +// <= 50% +.network-down-mid-low { + color: $yellow; +} +// <= 75% +.network-down-mid-high { + color: $orange; +} +// <= 100% +.network-down-high { + color: $purple; +} +// > 100% (Above MaxDownloadBytes) +.network-down-over { + color: $red; +} + +.ws-dead { + color: $inactive; + font-size: $textsize; +} +.ws-inactive { + color: $darkblue; + font-size: $textsize; +} +.ws-visible { + color: $cyan; + font-size: $textsize; +} +.ws-current { + color: $yellow; + font-size: $textsize; +} +.ws-active { + color: $green; + font-size: $textsize; +} + +// Bluetooth Widget +@keyframes connectanim { + from { + background-image: radial-gradient(circle farthest-side at center, $btblue 0%, transparent 0%, transparent 100%) + } + to { + background-image: radial-gradient(circle farthest-side at center, $btblue 0%, $btblue 100%, transparent 100%) + } +} +@keyframes disconnectanim { + from { + background-image: radial-gradient(circle farthest-side at center, transparent 0%, $btblue 0%, $btblue 100%) + } + to { + background-image: radial-gradient(circle farthest-side at center, transparent 0%, transparent 100%, $btblue 100%) + } +} + +@keyframes scanonanim { + from { + color: $yellow; + } + to { + color: $green; + } +} +@keyframes scanoffanim { + from { + color: $green; + } + to { + color: $yellow; + } +} + +.bt-bg { + background-color: $bg; + border-radius: 16px; +} +.bt-header-box { + margin-top: 4px; + margin-right: 8px; + margin-left: 8px; + font-size: 24px; + color: $btblue; +} +.bt-body-box { + margin-right: 8px; + margin-left: 8px; +} +.bt-button { + &.active { + animation-name: connectanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; + } + &.inactive { + animation-name: disconnectanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; + } + &.failed { + color: $red; + } + border-radius: 16px; + padding-left: 8px; + padding-right: 8px; + padding-top: 4px; + padding-bottom: 4px; + + margin-bottom: 4px; + margin-top: 4px; + + font-size: 16px; + // color: $green; +} +.bt-close { + color: $red; + background-color: $inactive; + border-radius: 16px; + padding: 0px 8px 0px 7px; + margin: 0px 0px 0px 8px; +} +.bt-scan { + &.active { + animation-name: scanonanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; + } + &.inactive { + animation-name: scanoffanim; + animation-duration: 50ms; + animation-timing-function: linear; + animation-fill-mode: forwards; + } + color: $yellow; + background-color: $inactive; + border-radius: 16px; + padding: 2px 11px 0px 7px; + margin: 0px 0px 0px 10px; + font-size: 18px; +} + diff --git a/gBar/update.sh b/gBar/update.sh new file mode 100644 index 0000000..c8786aa --- /dev/null +++ b/gBar/update.sh @@ -0,0 +1,24 @@ +#/bin/sh + +# This script is not used by default. It is a human-readable version of the default Arch-applicable +# package command with explanations + +updates="$(checkupdates)"; +exitCode=$?; + +if [ $exitCode -eq 127 ] ; then + # checkupdates wasn't found. + # Forward the error to gBar, so gBar can shut down the widget + # This is done, so we don't bother non-Arch systems with update checking + exit 127; +fi + +if [ $exitCode -eq 2 ] ; then + # Zero packages out-of-date. We need to handle this case, since 'echo "$updates" | wc -l' would return 1 + echo "0" && exit 0 +fi + +# We need the extra newline (-n option omitted), since 'echo -n $"updates" | wc -l' is off by one, +# since 'echo -n $"updates"' has a \0 at the end +echo "$updates" | wc -l + diff --git a/gtk-3.0/bookmarks b/gtk-3.0/bookmarks index 6739349..baec0dc 100644 --- a/gtk-3.0/bookmarks +++ b/gtk-3.0/bookmarks @@ -2,6 +2,7 @@ file:///home/moonleay/Downloads file:///home/moonleay/IdeaProjects file:///home/moonleay/RiderProjects file:///home/moonleay/RustroverProjects +file:///home/moonleay/CLionProjects file:///home/moonleay/Documents file:///home/moonleay/Pictures file:///home/moonleay/Pictures/Screenshots diff --git a/hypr/autorun.conf b/hypr/autorun.conf index 832d26b..e067ec5 100644 --- a/hypr/autorun.conf +++ b/hypr/autorun.conf @@ -1,9 +1,10 @@ # Autorun apps -exec-once = dunst & waybar & hyprpaper +exec-once = dunst & hyprpaper # & waybar exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = hyprctl setcursor Adwaita 24 exec-once = zsh /home/moonleay/.config/hypr/hyprland/scripts/fixXwaylandVideoBridge.sh exec-once = solaar -w hide exec-once = setxkbmap -model 'pc105angle' -layout 'us' -variant 'cmk_ed_us' -option'' -option 'misc:extend,lv5:caps_switch_lock,grp:shifts_toggle,compose:menu,misc:cmk_curl_dh' exec-once = flatpak run org.kde.xwaylandvideobridge +exec-once = gBar bar 0 & gBar bar 1 & gBar bar 2 # exec-once = /usr/lib/polkit-kde-authentication-agent-1