Introduce Serpensortia theme, enhance Hyprland scripts, and improve configuration modularity

This commit is contained in:
2026-02-17 22:18:10 +01:00
parent 8b153d54ac
commit a3c9ccbf6f
29 changed files with 1351 additions and 7 deletions
+387
View File
@@ -0,0 +1,387 @@
[global]
### Display ###
monitor = 0
follow = keyboard
width = 500
height = (0,500)
origin = top-center
offset = 0x25
# Scale factor. It is auto-detected if value is 0.
scale = 0
notification_limit = 20
progress_bar = true
highlight = "#124326"
progress_bar_height = 15
progress_bar_frame_width = 1
progress_bar_min_width = 150
progress_bar_max_width = 500
progress_bar_corner_radius = 4
icon_corner_radius = 0
indicate_hidden = yes
separator_height = 2
padding = 8
horizontal_padding = 8
text_icon_padding = 0
frame_width = 5
frame_color = "#124326"
gap_size = 0
separator_color = frame
sort = yes
idle_threshold = 120
font = "Fira Sans Semibold" 9
line_height = 1
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<i>%a</i>\n<b>%s</b> %p\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = center
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Recursive icon lookup. You can set a single theme, instead of having to
# define all lookup paths.
enable_recursive_icon_lookup = true
# Set icon theme (only used for recursive icon lookup)
icon_theme = "Silvery-Dark-Icons,Adwaita"
# You can also set multiple icon themes, with the leftmost one being used first.
# icon_theme = "Adwaita, breeze"
# Align icons left/right/top/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 32
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 128
# Paths to default icons (only neccesary when not using recursive icon lookup)
icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
§"
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 16
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notications appear under fullscreen
# applications (default: overlay)
# layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#131d13CC"
foreground = "#c0c0c0"
timeout = 6
# Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_normal]
background = "#131d13CC"
foreground = "#c0c0c0"
timeout = 6
# Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_critical]
background = "#131d13CC"
foreground = "#c0c0c0"
frame_color = "#dc143c"
timeout = 6
# Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# icon_position
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
# hide_text
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#
# vim: ft=cfg
+1 -1
View File
@@ -10,7 +10,7 @@ input {
kb_options =
kb_rules =
follow_mouse = 0
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
+1 -1
View File
@@ -10,4 +10,4 @@ $fileManager = thunar
$browser = vivaldi
$menu = rofi -show
$SCRIPT_DIR = ~/.config/hypr/conf/scripts
$SCRIPT_DIR = ~/.local/bin
@@ -0,0 +1,4 @@
[ColorScheme]
active_colors=#c0c0c0, #080c08, #424a42, #131d13, #424a42, #c0c0c0, #c0c0c0, #c0c0c0, #c0c0c0, #080c08, #080c08, #0b110b, #1c7a44, #080c08, #1c7a44, #dc143c, #080c08, #c0c0c0, #1c7a44, #080c08, #0e2d1a
disabled_colors=#424a42, #080c08, #424a42, #131d13, #424a42, #424a42, #424a42, #424a42, #424a42, #080c08, #080c08, #0b110b, #424a42, #080c08, #424a42, #dc143c, #080c08, #424a42, #424a42, #080c08, #424a42
inactive_colors=#c0c0c0, #080c08, #424a42, #131d13, #424a42, #c0c0c0, #c0c0c0, #c0c0c0, #c0c0c0, #080c08, #080c08, #0b110b, #1c7a44, #080c08, #1c7a44, #dc143c, #080c08, #c0c0c0, #1c7a44, #080c08, #0e2d1a
+115
View File
@@ -0,0 +1,115 @@
/* Global Styles */
QWidget {
background-color: #080c08;
color: #c0c0c0;
selection-background-color: #1c7a44;
selection-color: #080c08;
}
/* Buttons */
QPushButton {
background-color: #424a42;
border: 1px solid #0b110b;
border-radius: 8px;
padding: 2px 4px;
}
QPushButton:hover {
background-color: #0b110b;
}
QPushButton:pressed {
background-color: #1c7a44;
color: #080c08;
}
QPushButton:disabled {
background-color: #080c08;
color: #424a42;
border-color: #424a42;
}
/* Input Fields */
QLineEdit, QTextEdit, QPlainTextEdit {
background-color: #131d13;
border: 1px solid #0b110b;
border-radius: 8px;
padding: 1px 2px;
}
QLineEdit:focus {
border: 1px solid #1c7a44;
}
/* Menus and Lists */
QListView, QTreeView, QTableView {
background-color: #131d13;
border: 1px solid #0b110b;
border-radius: 8px;
alternate-background-color: #424a42;
}
QListView::item:selected, QTreeView::item:selected, QTableView::item:selected {
background-color: #0e2d1a;
border: 1px solid #1c7a44;
color: #c0c0c0;
}
/* Scrollbars */
QScrollBar:vertical {
background: #424a42;
width: 12px;
margin: 0px;
}
QScrollBar::handle:vertical {
background: #0b110b;
min-height: 20px;
border-radius: 4px;
margin: 2px;
}
QScrollBar::handle:vertical:hover {
background: #1c7a44;
}
QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
height: 0px;
}
/* Tabs */
QTabBar::tab {
background: #131d13;
border: 1px solid #0b110b;
padding: 2px 4px;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
QTabBar::tab:selected {
background: #080c08;
border-bottom-color: #1c7a44;
}
/* Checkboxes and Radio Buttons */
QCheckBox::indicator, QRadioButton::indicator {
width: 18px;
height: 18px;
border: 1px solid #0b110b;
background-color: #424a42;
border-radius: 8px;
}
QRadioButton::indicator {
border-radius: 9px;
}
QCheckBox::indicator:checked {
border-color: #1c7a44;
background-color: #1c7a44;
}
QRadioButton::indicator:checked {
border-color: #1c7a44;
background-color: #1c7a44;
}
+159
View File
@@ -0,0 +1,159 @@
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[](color_bg1)\
[](bg:color_bg1 fg:color_fg0)\
$username\
[](fg:color_bg1)\
$directory\
[](bg:color_bg1 fg:color_black)\
$git_branch\
$git_status\
[](fg:color_bg1 bg:color_blue)\
$c\
$cpp\
$rust\
$golang\
$nodejs\
$php\
$java\
$kotlin\
$haskell\
$python\
[](fg:color_blue bg:color_bg3)\
$docker_context\
$conda\
$pixi\
[](fg:color_bg3 bg:color_bg1)\
$time\
[ ](fg:color_bg1)\
$cmd_duration\
$line_break$character"""
palette = 'serpensortia'
[palettes.serpensortia]
color_black = "#000000"
color_fg0 = "#c0c0c0"
color_bg1 = "#131d13"
color_bg3 = "#424a42"
color_blue = "#1c7a44"
color_aqua = "#1c7a44"
color_accent = "#1c7a44"
color_orange = "#1c7a44"
color_purple = "#1c7a44"
color_warn = "#1c7a44"
color_yellow = "#1c7a44"
[username]
show_always = true
style_user = "bg:color_bg1 fg:color_accent"
style_root = "bg:color_warn fg:color_bg1"
format = '[ $user ]($style)'
[directory]
style = "fg:color_bg0 bg:color_text"
format = "[ $path ]($style)[$read_only]($read_only_style) "
read_only_style = "#dc143c"
read_only = "󰌾"
truncation_length = 0
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = "󰈙 "
"Downloads" = " "
"Music" = "󰝚 "
"Pictures" = " "
"workspace" = "󰲋 "
[git_branch]
symbol = ""
style = "bg:color_bg1"
format = '[[ $symbol $branch ](fg:color_accent bg:color_bg1)]($style)'
[git_status]
style = "bg:color_bg1"
format = '[[($all_status$ahead_behind )](fg:color_accent bg:color_bg1)]($style)'
[nodejs]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[c]
symbol = " "
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[cpp]
symbol = " "
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[rust]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[golang]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[php]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[java]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[kotlin]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[haskell]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[python]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[docker_context]
symbol = ""
style = "bg:color_bg3"
format = '[[ $symbol( $context) ](fg:#83a598 bg:color_bg3)]($style)'
[conda]
style = "bg:color_bg3"
format = '[[ $symbol( $environment) ](fg:#83a598 bg:color_bg3)]($style)'
[pixi]
style = "bg:color_bg3"
format = '[[ $symbol( $version)( $environment) ](fg:color_fg0 bg:color_bg3)]($style)'
[time]
disabled = false
time_format = "%R"
style = "bg:color_bg1"
format = '[[  $time ](fg:color_fg0 bg:color_bg1)]($style)'
[line_break]
disabled = false
[character]
disabled = false
success_symbol = '[](bold green)'
error_symbol = '[✖](bold red)'
[cmd_duration]
disabled = false
min_time = 50
show_milliseconds = true
format = '[$duration](bold)'
+5 -3
View File
@@ -12,17 +12,19 @@ case "$1" in
;;
mute)
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
volume=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{print int($2*100)}')
mute=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | grep -q MUTED && echo "yes" || echo "no")
if [[ "$mute" == "yes" ]]; then
dunstify -t $TIME \
-a "Volume" \
-h string:x-dunst-stack-tag:$msgTag \
"Muted"
"muted"
else
dunstify -t $TIME \
-a "Volume" \
-h string:x-dunst-stack-tag:$msgTag \
"Unmuted"
-h int:value:"$volume" \
"unmuted"
fi
exit 0
;;
@@ -40,5 +42,5 @@ if [[ "$mute" != "yes" ]]; then
-a "Volume" \
-h string:x-dunst-stack-tag:$msgTag \
-h int:value:"$volume" \
"Volume: $volume%"
"$1"
fi
@@ -0,0 +1,25 @@
* {
-GtkHTML-cursor-color: #c0c0c0;
-GtkIMHtml-cursor-color: #c0c0c0;
-GtkTextView-error-underline-color: #dc143c;
-W3C-focus-color: #1c7a44;
outline-color: #124326;
background-clip: padding-box;
-gtk-secondary-caret-color: #1c7a44;
}
.background {
background-color: #080c08;
color: #c0c0c0;
}
:disabled {
color: #424a42;
}
window,
.window-frame {
background-color: #080c08;
color: #c0c0c0;
border-radius: 16px;
}
@@ -0,0 +1,36 @@
button {
background-color: #424a42;
color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 8px;
padding: 2px 4px;
transition: all 0.2s ease;
}
button:hover {
background-color: #0b110b;
}
button:active,
button:checked {
background-color: #1c7a44;
color: #080c08;
}
button:disabled {
background-color: #080c08;
color: #424a42;
border-color: #424a42;
}
button.suggested-action {
background-color: #1c7a44;
color: #080c08;
border-color: #1c7a44;
}
button.destructive-action {
background-color: #dc143c;
color: #080c08;
border-color: #dc143c;
}
@@ -0,0 +1,49 @@
check, radio {
margin: 0 2px;
min-height: 18px;
min-width: 18px;
border: 1px solid #0b110b;
border-radius: 8px;
background-color: #424a42;
color: transparent;
-gtk-icon-source: none;
transition: all 0.2s ease;
}
radio {
border-radius: 50%;
}
check:checked {
background-color: #424a42;
border-color: #1c7a44;
background-image:
linear-gradient(45deg, transparent 45%, #1c7a44 45%, #1c7a44 55%, transparent 55%),
linear-gradient(-45deg, transparent 45%, #1c7a44 45%, #1c7a44 55%, transparent 55%);
background-size: 70% 70%;
background-repeat: no-repeat;
background-position: center;
}
radio:checked {
background-color: #424a42;
border-color: #1c7a44;
background-image: radial-gradient(circle, #1c7a44 35%, transparent 40%);
}
check:indeterminate {
background-color: #424a42;
border-color: #1c7a44;
background-image: linear-gradient(to right, #1c7a44, #1c7a44);
background-size: 60% 2px;
background-repeat: no-repeat;
background-position: center;
}
check:disabled,
radio:disabled {
background-color: #080c08;
border-color: #424a42;
color: transparent;
background-image: none;
}
@@ -0,0 +1,19 @@
entry {
background-color: #131d13;
color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 8px;
padding: 1px 2px;
caret-color: #1c7a44;
}
entry:focus {
border-color: #1c7a44;
box-shadow: inset 0 0 0 1px #1c7a44;
}
entry:disabled {
background-color: #080c08;
color: #424a42;
border-color: #424a42;
}
@@ -0,0 +1,9 @@
@import url("base.css");
@import url("headerbar.css");
@import url("buttons.css");
@import url("entries.css");
@import url("menus.css");
@import url("widgets.css");
@import url("checks.css");
@import url("scrollbars.css");
@import url("notebook.css");
@@ -0,0 +1,11 @@
headerbar {
background-color: #131d13;
color: #c0c0c0;
border-bottom: 1px solid #0b110b;
box-shadow: none;
padding: 1px 2px;
}
headerbar .title {
font-weight: bold;
}
@@ -0,0 +1,53 @@
list,
menu {
background-color: #131d13;
color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 8px;
}
menubar {
background-color: #131d13;
color: #c0c0c0;
border-bottom: 1px solid #0b110b;
padding: 1px 2px;
}
menubar > menuitem {
padding: 2px 4px;
min-height: 24px;
transition: all 0.2s ease;
}
menuitem {
min-height: 24px;
padding: 2px 4px;
}
menubar > menuitem:hover {
background-color: #1c7a44;
border-radius: 4px;
}
list row:selected,
treeview.view:selected,
.view:selected,
iconview.view:selected,
cell:selected,
*:selected {
background-color: #0e2d1a;
color: #c0c0c0;
border: 1px solid #1c7a44;
border-radius: 8px;
}
menuitem:hover {
background-color: #1c7a44;
color: #080c08;
border-radius: 4px;
}
menuitem:disabled {
color: #424a42;
background-color: transparent;
}
@@ -0,0 +1,32 @@
notebook {
background-color: #080c08;
border: 1px solid #0b110b;
}
notebook header {
background-color: #131d13;
}
notebook tab {
padding: 4px 8px;
border: 1px solid transparent;
border-radius: 8px 8px 0 0;
transition: all 0.2s ease;
}
notebook tab:hover {
background-color: #424a42;
}
notebook tab:checked {
background-color: #080c08;
border-color: #0b110b;
border-bottom-color: transparent;
border-bottom: 2px solid #1c7a44;
box-shadow: inset 0 -2px 0 #1c7a44;
}
notebook tab label {
font-weight: bold;
color: #c0c0c0;
}
@@ -0,0 +1,24 @@
scrollbar {
background-color: transparent;
}
scrollbar trough {
background-color: #424a42;
border: 1px solid #0b110b;
}
scrollbar slider {
background-color: #0b110b;
border: 2px solid transparent;
border-radius: 16px;
min-width: 8px;
min-height: 8px;
}
scrollbar slider:hover {
background-color: #1c7a44;
}
scrollbar button {
display: none;
}
@@ -0,0 +1,77 @@
/* Selection */
selection,
row:selected,
iconview:selected,
treeview.view:selected,
.view:selected,
iconview.view:selected,
cell:selected,
*:selected {
background-color: #0e2d1a;
color: #c0c0c0;
border: 1px solid #1c7a44;
border-radius: 8px;
}
/* Sliders (Scales) */
scale trough {
background-color: #424a42;
border: 1px solid #0b110b;
border-radius: 8px;
min-height: 4px;
}
scale highlight {
background-color: #1c7a44;
border-radius: 8px;
}
scale slider {
background-color: #131d13;
border: 1px solid #0b110b;
border-radius: 50%;
min-height: 16px;
min-width: 16px;
margin: -6px 0;
}
scale slider:hover {
background-color: #1c7a44;
border-color: #1c7a44;
}
/* Switches */
switch {
background-color: #424a42;
border: 1px solid #0b110b;
border-radius: 8px;
color: transparent;
}
switch:checked {
background-color: #1c7a44;
border-color: #1c7a44;
}
switch slider {
background-color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 50%;
margin: 1px;
min-width: 18px;
min-height: 18px;
}
scale:disabled trough,
scale:disabled highlight,
scale:disabled slider,
switch:disabled {
background-color: #080c08;
border-color: #424a42;
color: #424a42;
}
switch:disabled slider {
background-color: #424a42;
border-color: #424a42;
}
@@ -0,0 +1,25 @@
* {
-GtkHTML-cursor-color: #c0c0c0;
-GtkIMHtml-cursor-color: #c0c0c0;
-GtkTextView-error-underline-color: #dc143c;
-W3C-focus-color: #1c7a44;
outline-color: #124326;
background-clip: padding-box;
-gtk-secondary-caret-color: #1c7a44;
}
.background {
background-color: #080c08;
color: #c0c0c0;
}
:disabled {
color: #424a42;
}
window,
.window-frame {
background-color: #080c08;
color: #c0c0c0;
border-radius: 16px;
}
@@ -0,0 +1,36 @@
button {
background-color: #424a42;
color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 8px;
padding: 2px 4px;
transition: all 0.2s ease;
}
button:hover {
background-color: #0b110b;
}
button:active,
button:checked {
background-color: #1c7a44;
color: #080c08;
}
button:disabled {
background-color: #080c08;
color: #424a42;
border-color: #424a42;
}
button.suggested-action {
background-color: #1c7a44;
color: #080c08;
border-color: #1c7a44;
}
button.destructive-action {
background-color: #dc143c;
color: #080c08;
border-color: #dc143c;
}
@@ -0,0 +1,49 @@
check, radio {
margin: 0 2px;
min-height: 18px;
min-width: 18px;
border: 1px solid #0b110b;
border-radius: 8px;
background-color: #424a42;
color: transparent;
-gtk-icon-source: none;
transition: all 0.2s ease;
}
radio {
border-radius: 50%;
}
check:checked {
background-color: #424a42;
border-color: #1c7a44;
background-image:
linear-gradient(45deg, transparent 45%, #1c7a44 45%, #1c7a44 55%, transparent 55%),
linear-gradient(-45deg, transparent 45%, #1c7a44 45%, #1c7a44 55%, transparent 55%);
background-size: 70% 70%;
background-repeat: no-repeat;
background-position: center;
}
radio:checked {
background-color: #424a42;
border-color: #1c7a44;
background-image: radial-gradient(circle, #1c7a44 35%, transparent 40%);
}
check:indeterminate {
background-color: #424a42;
border-color: #1c7a44;
background-image: linear-gradient(to right, #1c7a44, #1c7a44);
background-size: 60% 2px;
background-repeat: no-repeat;
background-position: center;
}
check:disabled,
radio:disabled {
background-color: #080c08;
border-color: #424a42;
color: transparent;
background-image: none;
}
@@ -0,0 +1,19 @@
entry {
background-color: #131d13;
color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 8px;
padding: 1px 2px;
caret-color: #1c7a44;
}
entry:focus {
border-color: #1c7a44;
box-shadow: inset 0 0 0 1px #1c7a44;
}
entry:disabled {
background-color: #080c08;
color: #424a42;
border-color: #424a42;
}
@@ -0,0 +1,9 @@
@import url("base.css");
@import url("headerbar.css");
@import url("buttons.css");
@import url("entries.css");
@import url("menus.css");
@import url("widgets.css");
@import url("checks.css");
@import url("scrollbars.css");
@import url("notebook.css");
@@ -0,0 +1,11 @@
headerbar {
background-color: #131d13;
color: #c0c0c0;
border-bottom: 1px solid #0b110b;
box-shadow: none;
padding: 1px 2px;
}
headerbar .title {
font-weight: bold;
}
@@ -0,0 +1,53 @@
list,
menu {
background-color: #131d13;
color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 8px;
}
menubar {
background-color: #131d13;
color: #c0c0c0;
border-bottom: 1px solid #0b110b;
padding: 1px 2px;
}
menubar > menuitem {
padding: 2px 4px;
min-height: 24px;
transition: all 0.2s ease;
}
menuitem {
min-height: 24px;
padding: 2px 4px;
}
menubar > menuitem:hover {
background-color: #1c7a44;
border-radius: 4px;
}
list row:selected,
treeview.view:selected,
.view:selected,
iconview.view:selected,
cell:selected,
*:selected {
background-color: #0e2d1a;
color: #c0c0c0;
border: 1px solid #1c7a44;
border-radius: 8px;
}
menuitem:hover {
background-color: #1c7a44;
color: #080c08;
border-radius: 4px;
}
menuitem:disabled {
color: #424a42;
background-color: transparent;
}
@@ -0,0 +1,32 @@
notebook {
background-color: #080c08;
border: 1px solid #0b110b;
}
notebook header {
background-color: #131d13;
}
notebook tab {
padding: 4px 8px;
border: 1px solid transparent;
border-radius: 8px 8px 0 0;
transition: all 0.2s ease;
}
notebook tab:hover {
background-color: #424a42;
}
notebook tab:checked {
background-color: #080c08;
border-color: #0b110b;
border-bottom-color: transparent;
border-bottom: 2px solid #1c7a44;
box-shadow: inset 0 -2px 0 #1c7a44;
}
notebook tab label {
font-weight: bold;
color: #c0c0c0;
}
@@ -0,0 +1,24 @@
scrollbar {
background-color: transparent;
}
scrollbar trough {
background-color: #424a42;
border: 1px solid #0b110b;
}
scrollbar slider {
background-color: #0b110b;
border: 2px solid transparent;
border-radius: 16px;
min-width: 8px;
min-height: 8px;
}
scrollbar slider:hover {
background-color: #1c7a44;
}
scrollbar button {
display: none;
}
@@ -0,0 +1,77 @@
/* Selection */
selection,
row:selected,
iconview:selected,
treeview.view:selected,
.view:selected,
iconview.view:selected,
cell:selected,
*:selected {
background-color: #0e2d1a;
color: #c0c0c0;
border: 1px solid #1c7a44;
border-radius: 8px;
}
/* Sliders (Scales) */
scale trough {
background-color: #424a42;
border: 1px solid #0b110b;
border-radius: 8px;
min-height: 4px;
}
scale highlight {
background-color: #1c7a44;
border-radius: 8px;
}
scale slider {
background-color: #131d13;
border: 1px solid #0b110b;
border-radius: 50%;
min-height: 16px;
min-width: 16px;
margin: -6px 0;
}
scale slider:hover {
background-color: #1c7a44;
border-color: #1c7a44;
}
/* Switches */
switch {
background-color: #424a42;
border: 1px solid #0b110b;
border-radius: 8px;
color: transparent;
}
switch:checked {
background-color: #1c7a44;
border-color: #1c7a44;
}
switch slider {
background-color: #c0c0c0;
border: 1px solid #0b110b;
border-radius: 50%;
margin: 1px;
min-width: 18px;
min-height: 18px;
}
scale:disabled trough,
scale:disabled highlight,
scale:disabled slider,
switch:disabled {
background-color: #080c08;
border-color: #424a42;
color: #424a42;
}
switch:disabled slider {
background-color: #424a42;
border-color: #424a42;
}
+9 -2
View File
@@ -111,6 +111,10 @@ _copyThemes() {
done
}
_copyScripts() {
cp -rv "dotfiles/.local/" "$HOME"
}
_copyIcons() {
for folder in dotfiles/.icons/*; do
destDir="$HOME/.icons/$(basename "$folder")"
@@ -158,11 +162,11 @@ echo ":::::::::::::::::::::::::::"
echo ":::::::::::::::::::::::::::"
echo ":: Removing packages ::"
echo ":::::::::::::::::::::::::::"
#_removePackages "${packagesToRemove[@]}"
_removePackages "${packagesToRemove[@]}"
echo ":::::::::::::::::::::::::::"
echo ":: Installing packages ::"
echo ":::::::::::::::::::::::::::"
#_installPackages "${packages[@]}"
_installPackages "${packages[@]}"
echo ":::::::::::::::::::::::::::"
echo ":: Generating themes ::"
echo ":::::::::::::::::::::::::::"
@@ -170,6 +174,9 @@ _generateThemes
_copyThemes
_copyIcons
_copyConfig
_copyScripts
hyprctl reload
echo ":::::::::::::::::::::::::::"
echo ":: Installation complete ::"
echo ":::::::::::::::::::::::::::"