diff --git a/configs/____/hypr/hypridle.conf b/configs/____/hypr/hypridle.conf new file mode 100644 index 0000000..f3afb09 --- /dev/null +++ b/configs/____/hypr/hypridle.conf @@ -0,0 +1,17 @@ +general { + # Команда, которая выполняется при вызове блокировки через систему/dbus + lock_cmd = hyprlock +} + +# ПРАВИЛО 1: Блокировка экрана через 5 минут бездействия +listener { + timeout = 300 # 5 минут (300 секунд) + on-timeout = hyprlock # Только блокируем экран +} + +# ПРАВИЛО 2: Выключение мониторов через 5.5 минут (через 30 секунд после блокировки) +listener { + timeout = 330 # 5 минут 30 секунд + on-timeout = wlopm --off \* # Гасим все мониторы + on-resume = wlopm --on \* # Включаем при активности +} diff --git a/configs/____/hypr/hyprland.lua b/configs/____/hypr/hyprland.lua new file mode 100644 index 0000000..bb98383 --- /dev/null +++ b/configs/____/hypr/hyprland.lua @@ -0,0 +1,364 @@ + +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +-- AUTOGENERATED HYPRLAND CONFIG. -- +-- EDIT THIS CONFIG ACCORDING TO THE WIKI INSTRUCTIONS. -- +-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +hl.config({ autogenerated = true }) -- remove this line to remove the warning + +-- This is an example Hyprland Lua config file. +-- Refer to the wiki for more information. +-- https://wiki.hypr.land/Configuring/Start/ + +-- Please note not all available settings / options are set here. +-- For a full list, see the wiki + +-- You can (and should!!) split this configuration into multiple files +-- Create your files separately and then require them like this: +-- require("myColors") + + +------------------ +---- MONITORS ---- +------------------ + +-- See https://wiki.hypr.land/Configuring/Basics/Monitors/ +hl.monitor({ + output = "", + mode = "preferred", + position = "auto", + scale = "auto", +}) + + +--------------------- +---- MY PROGRAMS ---- +--------------------- + +-- Set programs that you use +local terminal = "kitty" +local fileManager = "dolphin" +local menu = "hyprlauncher" + + +------------------- +---- AUTOSTART ---- +------------------- + +-- See https://wiki.hypr.land/Configuring/Basics/Autostart/ + +-- Autostart necessary processes (like notifications daemons, status bars, etc.) +-- Or execute your favorite apps at launch like this: +-- +-- hl.on("hyprland.start", function () +-- hl.exec_cmd(terminal) +-- hl.exec_cmd("nm-applet") +-- hl.exec_cmd("waybar & hyprpaper & firefox") +-- end) + + +------------------------------- +---- ENVIRONMENT VARIABLES ---- +------------------------------- + +-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/ + +hl.env("XCURSOR_SIZE", "24") +hl.env("HYPRCURSOR_SIZE", "24") + + +----------------------- +----- PERMISSIONS ----- +----------------------- + +-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/ +-- Please note permission changes here require a Hyprland restart and are not applied on-the-fly +-- for security reasons + +-- hl.config({ +-- ecosystem = { +-- enforce_permissions = true, +-- }, +-- }) + +-- hl.permission("/usr/(bin|local/bin)/grim", "screencopy", "allow") +-- hl.permission("/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", "screencopy", "allow") +-- hl.permission("/usr/(bin|local/bin)/hyprpm", "plugin", "allow") + + +----------------------- +---- LOOK AND FEEL ---- +----------------------- + +-- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/ +hl.config({ + general = { + gaps_in = 5, + gaps_out = 20, + + border_size = 2, + + col = { + active_border = { colors = {"rgba(33ccffee)", "rgba(00ff99ee)"}, angle = 45 }, + inactive_border = "rgba(595959aa)", + }, + + -- Set to true to enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false, + + -- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on + allow_tearing = false, + + layout = "dwindle", + }, + + decoration = { + rounding = 10, + rounding_power = 2, + + -- Change transparency of focused and unfocused windows + active_opacity = 1.0, + inactive_opacity = 1.0, + + shadow = { + enabled = true, + range = 4, + render_power = 3, + color = 0xee1a1a1a, + }, + + blur = { + enabled = true, + size = 3, + passes = 1, + vibrancy = 0.1696, + }, + }, + + animations = { + enabled = true, + }, +}) + +-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/ +hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} } }) +hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} } }) +hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} } }) +hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} } }) +hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} } }) + +-- Default springs +hl.curve("easy", { type = "spring", mass = 1, stiffness = 238.1191, dampening = 24.21279333 }) + +hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" }) +hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" }) +hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" }) +hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" }) +hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" }) +hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" }) +hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" }) +hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" }) +hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" }) +hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" }) +hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" }) +hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" }) +hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" }) +hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" }) +hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" }) +hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" }) +hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" }) + +-- Ref https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/ +-- "Smart gaps" / "No gaps when only" +-- uncomment all if you wish to use that. +-- hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 }) +-- hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 }) +-- hl.window_rule({ +-- name = "no-gaps-wtv1", +-- match = { float = false, workspace = "w[tv1]" }, +-- border_size = 0, +-- rounding = 0, +-- }) +-- hl.window_rule({ +-- name = "no-gaps-f1", +-- match = { float = false, workspace = "f[1]" }, +-- border_size = 0, +-- rounding = 0, +-- }) + +-- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more +hl.config({ + dwindle = { + preserve_split = true, -- You probably want this + }, +}) + +-- See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more +hl.config({ + master = { + new_status = "master", + }, +}) + +-- See https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ for more +hl.config({ + scrolling = { + fullscreen_on_one_column = true, + }, +}) + +---------------- +---- MISC ---- +---------------- + +hl.config({ + misc = { + force_default_wallpaper = -1, -- Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false, -- If true disables the random hyprland logo / anime girl background. :( + }, +}) + + +--------------- +---- INPUT ---- +--------------- + +hl.config({ + input = { + kb_layout = "us", + kb_variant = "", + kb_model = "", + kb_options = "", + kb_rules = "", + + follow_mouse = 1, + + sensitivity = 0, -- -1.0 - 1.0, 0 means no modification. + + touchpad = { + natural_scroll = false, + }, + }, +}) + +hl.gesture({ + fingers = 3, + direction = "horizontal", + action = "workspace" +}) + +-- Example per-device config +-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more +hl.device({ + name = "epic-mouse-v1", + sensitivity = -0.5, +}) + + +--------------------- +---- KEYBINDINGS ---- +--------------------- + +local mainMod = "SUPER" -- Sets "Windows" key as main modifier + +-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more +hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd(terminal)) +local closeWindowBind = hl.bind(mainMod .. " + C", hl.dsp.window.close()) +-- closeWindowBind:set_enabled(false) +hl.bind(mainMod .. " + M", hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'")) +hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager)) +hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" })) +hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu)) +hl.bind(mainMod .. " + P", hl.dsp.window.pseudo()) +hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit")) -- dwindle only + +-- Move focus with mainMod + arrow keys +hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" })) +hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" })) +hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" })) +hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" })) + +-- Switch workspaces with mainMod + [0-9] +-- Move active window to a workspace with mainMod + SHIFT + [0-9] +for i = 1, 10 do + local key = i % 10 -- 10 maps to key 0 + hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i})) + hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i })) +end + +-- Example special workspace (scratchpad) +hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic")) +hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" })) + +-- Scroll through existing workspaces with mainMod + scroll +hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" })) +hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" })) + +-- Move/resize windows with mainMod + LMB/RMB and dragging +hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true }) +hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) + +-- Laptop multimedia keys for volume and LCD brightness +hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true }) +hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true }) +hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true }) +hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true }) +hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true }) +hl.bind("XF86MonBrightnessDown",hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true }) + +-- Requires playerctl +hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true }) +hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true }) + + +-------------------------------- +---- WINDOWS AND WORKSPACES ---- +-------------------------------- + +-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/ +-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/ + +-- Example window rules that are useful + +local suppressMaximizeRule = hl.window_rule({ + -- Ignore maximize requests from all apps. You'll probably like this. + name = "suppress-maximize-events", + match = { class = ".*" }, + + suppress_event = "maximize", +}) +-- suppressMaximizeRule:set_enabled(false) + +hl.window_rule({ + -- Fix some dragging issues with XWayland + name = "fix-xwayland-drags", + match = { + class = "^$", + title = "^$", + xwayland = true, + float = true, + fullscreen = false, + pin = false, + }, + + no_focus = true, +}) + +-- Layer rules also return a handle. +-- local overlayLayerRule = hl.layer_rule({ +-- name = "no-anim-overlay", +-- match = { namespace = "^my-overlay$" }, +-- no_anim = true, +-- }) +-- overlayLayerRule:set_enabled(false) + +-- Hyprland-run windowrule +hl.window_rule({ + name = "move-hyprland-run", + match = { class = "hyprland-run" }, + + move = "20 monitor_h-120", + float = true, +}) diff --git a/configs/____/hypr/hyprlock.conf b/configs/____/hypr/hyprlock.conf new file mode 100644 index 0000000..dd3aba7 --- /dev/null +++ b/configs/____/hypr/hyprlock.conf @@ -0,0 +1,91 @@ +source = /home/ivan/.config/aether/theme/hyprlock.conf +$font_time = Widock TRIAL +$font = JetBrainsMono Nerd Font + +general { + hide_cursor = false +} + +background { + monitor = + path = screenshot # Сделает скриншот текущего экрана + blur_passes = 3 # Эффект размытия (оптимально 2-3) + blur_size = 7 + + # ЗАТЕМНЕНИЕ: Снижаем яркость картинки (0.0 — полностью черный, 1.0 — исходная яркость) + # Значение 0.5 уменьшит яркость скриншота ровно наполовину + brightness = 0.5 + noise = 0.05 +} + +input-field { + monitor = + rounding = 0 + size = 150, 50 + outline_thickness = 2 + font_family = $font + dots_size = 0.25 + dots_spacing = 0.15 + dots_center = true + fade_on_empty = false + placeholder_text = you shall not pass + hide_input = false + position = 0, -100 + halign = center + valign = center + + # Используем точные переменные из файла Aether + font_color = $font_color + inner_color = $inner_color + outer_color = $outer_color + check_color = $check_color +} + +# ЧАСЫ +label { + monitor = + text = cmd[update:1000] echo -e "$(date +"%H")" + color = $font_color + font_size = 150 + font_family = $font_time + position = 0, -250 + halign = center + valign = top + shadow_passes = 0 +} + +label { + monitor = + text = cmd[update:1000] echo -e "$(date +"%M")" + color = $font_color + font_size = 150 + font_family = $font_time + position = 0, -400 + halign = center + valign = top + shadow_passes = 0 +} + +# ДАТА +label { + monitor = + text = cmd[update:1000] echo "$(date +'%A')" + color = $font_color + font_size = 18 + font_family = $font_time + position = 0, -20 + halign = center + valign = center + shadow_passes = 0 +} +label { + monitor = + text = cmd[update:1000] echo "$(date +'%d %B')" + color = $font_color + font_size = 18 + font_family = $font_time + position = 0, -40 + halign = center + valign = center + shadow_passes = 0 +} \ No newline at end of file diff --git a/configs/____/ironbar/config.json b/configs/____/ironbar/config.json new file mode 100644 index 0000000..7b4d481 --- /dev/null +++ b/configs/____/ironbar/config.json @@ -0,0 +1,25 @@ +{ + "name": "spotify-popup", + "position": "top", + "height": 0, + "layer": "background", + "exclusive_zone": false, + "popup_gap": 0, + "popup_autohide": true, + "css_path": "style.css", + + "margin": { + "right": 400 + }, + + "end": [ + { + "type": "music", + "name": "spotify-music", + "player_type": "mpris", + "format": "", + "show_status_icon": false, + "cover_image_size": 120 + } + ] +} \ No newline at end of file diff --git a/configs/____/ironbar/style.css b/configs/____/ironbar/style.css new file mode 100644 index 0000000..708d4a4 --- /dev/null +++ b/configs/____/ironbar/style.css @@ -0,0 +1,37 @@ +@define-color background #0e0e06; +@define-color foreground #c9c7e1; + +* { + font-family: "JetBrainsMono Nerd Font", "Font Awesome 7 Free", "Font Awesome 7 Free Solid", "Font Awesome 7 Brands", sans-serif; + /*font-size: 12px;*/ + /*border: none;*/ + border-radius: 0; +} +window#ironbar { + background: #0e0e06; +} +#spotify-popup { + background: rgba(14, 14, 6, 0.75); + color: #c9c7e1; + min-height: 28px; + padding: 0; + margin: 0; +} + +#spotify-music { + padding: 0 10px; + color: #c9c7e1; +} + +#spotify-music .icon { + display: none; +} + +#spotify-music .cover { + display: none; +} + + +#spotify-music { + background: red !important; +} \ No newline at end of file diff --git a/configs/____/labwc/autostart b/configs/____/labwc/autostart new file mode 100644 index 0000000..b4dc0cf --- /dev/null +++ b/configs/____/labwc/autostart @@ -0,0 +1,23 @@ +# синхронизация окружения +dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=labwc & +systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP & + +# базовые сервисы +waybar & +mako & +hypridle & +hyprpolkitagent & +ironbar & + +# буфер обмена +wl-paste --type text --watch cliphist store & +wl-paste --type image --watch cliphist store & + +# тема и обои +~/.config/labwc/update_theme.sh & + +# аудиоэффекты +(sleep 2 && easyeffects --gapplication-service) & + +# polkit agent +systemctl --user start hyprpolkitagent.service & \ No newline at end of file diff --git a/configs/____/labwc/environment b/configs/____/labwc/environment new file mode 100644 index 0000000..c14c1db --- /dev/null +++ b/configs/____/labwc/environment @@ -0,0 +1,8 @@ +# раскладка и ее порядок +XKB_DEFAULT_LAYOUT=us,ru + +# смена раскладки на сочетание клавиш +XKB_DEFAULT_OPTIONS=grp:ctrl_space_toggle + +# тема для Qt-приложений +QT_QPA_PLATFORMTHEME=qt6ct \ No newline at end of file diff --git a/configs/____/labwc/menu.xml b/configs/____/labwc/menu.xml new file mode 100644 index 0000000..3cbdc6a --- /dev/null +++ b/configs/____/labwc/menu.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/configs/____/labwc/rc.xml b/configs/____/labwc/rc.xml new file mode 100644 index 0000000..c658aa9 --- /dev/null +++ b/configs/____/labwc/rc.xml @@ -0,0 +1,194 @@ + + + + + + 1 + 2 + 3 + 4 + + + + + + yes + no + + + + + DynamicAether + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + 2 + + + + + + + 3 + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sh -c 'grim -g "$(slurp)" - | wl-copy' + + + + + + + ~/.config/wofi/cliphist-img.sh + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/____/labwc/shutdown b/configs/____/labwc/shutdown new file mode 100644 index 0000000..4fa5332 --- /dev/null +++ b/configs/____/labwc/shutdown @@ -0,0 +1,2 @@ +# очистка clipboard +cliphist wipe & \ No newline at end of file diff --git a/configs/____/labwc/themerc-override b/configs/____/labwc/themerc-override new file mode 100644 index 0000000..979971b --- /dev/null +++ b/configs/____/labwc/themerc-override @@ -0,0 +1,17 @@ +# цвет рамки active и inactive +window.active.border.color: #F9EDE4 +window.inactive.border.color: #141414 + +# цвет фона заголовка active и inactive +window.active.title.bg.color: #141414 +window.inactive.title.bg.color: #141414 + +# цвет текста заголовка окна +window.active.label.text.color: #F9EDE4 +window.inactive.label.text.color: #F9EDE4 + +# цвет иконок кнопок для АКТИВНОГО окна +window.active.button.unpressed.image.color: #F9EDE4 + +# цвет иконок кнопок для НЕАКТИВНОГО окна (ОБЯЗАТЕЛЬНЫЙ КЛЮЧ LABWC) +window.inactive.button.image.color: #F9EDE4 diff --git a/configs/____/labwc/themes/DynamicAether/themerc b/configs/____/labwc/themes/DynamicAether/themerc new file mode 100644 index 0000000..dbc39fd --- /dev/null +++ b/configs/____/labwc/themes/DynamicAether/themerc @@ -0,0 +1,8 @@ +window.active.title.bg: #040608 +window.active.title.text: #D4CFCB +window.active.border.color: #040608 +window.inactive.title.bg: #040608 +window.inactive.title.text: #D4CFCB +window.inactive.border.color: #040608 +window.active.border.width: 2 +window.inactive.border.width: 1 diff --git a/configs/____/labwc/update_theme.sh b/configs/____/labwc/update_theme.sh new file mode 100755 index 0000000..bd3925a --- /dev/null +++ b/configs/____/labwc/update_theme.sh @@ -0,0 +1,41 @@ +#!/bin/bash +TARGET_FILE="$HOME/.config/aether/theme/waybar.css" +THEME_FILE="$HOME/.config/labwc/themerc-override" + +BG_FOLDER="$HOME/.config/aether/theme/backgrounds" +WALLPAPER=$(find "$BG_FOLDER" -type f | head -n 1) + +if [ -f "$TARGET_FILE" ]; then + BG_COLOR=$(grep "background" "$TARGET_FILE" | awk '{print $3}' | tr -d ';') + FG_COLOR=$(grep "foreground" "$TARGET_FILE" | awk '{print $3}' | tr -d ';') + + if [ ! -z "$BG_COLOR" ] && [ ! -z "$FG_COLOR" ]; then + cat << EOF > "$THEME_FILE" +# цвет рамки active и inactive +window.active.border.color: $FG_COLOR +window.inactive.border.color: $BG_COLOR + +# цвет фона заголовка active и inactive +window.active.title.bg.color: $BG_COLOR +window.inactive.title.bg.color: $BG_COLOR + +# цвет текста заголовка окна +window.active.label.text.color: $FG_COLOR +window.inactive.label.text.color: $FG_COLOR + +# цвет иконок кнопок для АКТИВНОГО окна +window.active.button.unpressed.image.color: $FG_COLOR + +# цвет иконок кнопок для НЕАКТИВНОГО окна (ОБЯЗАТЕЛЬНЫЙ КЛЮЧ LABWC) +window.inactive.button.image.color: $FG_COLOR +EOF + fi +fi + +killall swaybg 2>/dev/null + +if [ ! -z "$WALLPAPER" ] && [ -f "$WALLPAPER" ]; then + swaybg -m fill -i "$WALLPAPER" & +else + swaybg -c "$BG_COLOR" & +fi diff --git a/configs/____/labwc/void_labwc b/configs/____/labwc/void_labwc new file mode 100644 index 0000000..f37d8a8 --- /dev/null +++ b/configs/____/labwc/void_labwc @@ -0,0 +1,81 @@ +стек: +labwc +waybar +swaylock(замена hyprlock) +swayidle(замена hypridle) +polkit-gnome(замена hyprpolkit) +dolphin +kate +google-chrome +pipewire +kitty(alacritty) +v2ray +v2rayA +telegram +htop +gparted +pavucontrol +qdirstat +easyeffects +lsp-plugins-lv2 +obsidian +ristretto +mpv +wofi +cliphist +sddm +pango +xorg-server-xwayland +mesa-dri +nvidia-open-dkms +wl-clipboard +gtk-layer-shell +grim +slurp +swaybg +mako +seatd +dbus +polkit +fontconfig +noto-fonts-ttf +ttf-dejavu +alsa-pipewire +wireplumber +xdg-desktop-portal-wlr +xdg-desktop-portal-gtk +qt6-wayland +qt5-wayland +base-system +void-repo-nonfree +fuse +fuse-common +ca-certificates +curl +xdg-utils +dhcpcd +sudo +acpid +breeze-icons +ffmpeg +libnotify +ttf-jetbrains-mono +adwaita-icon-theme +xdg-desktop-portal-gtk +unzip +zip +p7zip +qt5ct +qt6ct +linux-firmware +ttf-font-awesome + + +aether(буду писать замену) + +установка чистого void linux + +обновление системы +sudo xbps-install -Syu +sudo xbps-install -u xbps + diff --git a/configs/____/qt6ct/qt6ct.conf b/configs/____/qt6ct/qt6ct.conf new file mode 100644 index 0000000..ee695d1 --- /dev/null +++ b/configs/____/qt6ct/qt6ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=/usr/share/qt6ct/colors/darker.conf +custom_palette=true +icon_theme=breeze-dark +standard_dialogs=default +style=Fusion + +[Fonts] +fixed="JetBrainsMono Nerd Font,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular,0,0" +general="JetBrainsMonoNL Nerd Font,10,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular,0,0" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=2 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2m\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2m\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2m) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/configs/____/waybar/config.jsonc b/configs/____/waybar/config.jsonc new file mode 100644 index 0000000..bef995a --- /dev/null +++ b/configs/____/waybar/config.jsonc @@ -0,0 +1,65 @@ +{ + "layer": "top", + "position": "top", + "height": 25, + "spacing": 0, + "modules-left": ["wlr/taskbar"], + "modules-center": ["clock"], + "modules-right": ["network", "custom/spotify", "custom/v2raya", "custom/language", "pulseaudio", "cpu", "memory", "tray"], + + "wlr/taskbar": { + "format": "{icon}", + "icon-size": 15, + "tooltip-format": "{title}", + "on-click": "activate" + }, + "custom/language": { + "exec": "xkblayout-state print %s | tr 'a-z' 'A-Z'", + "interval": 1, + "format": " {} " + }, + "custom/spotify": { + "format": "[{}] ", + "exec": "playerctl metadata --format '{{artist}} - {{title}}' spotify 2>/dev/null || echo ''", + "on-click": "ironbar bar spotify-popup toggle-popup spotify-music", + "interval": 3, + "max-length": 50 + }, + "custom/v2raya": { + "format": "PROXY{}", + "return-type": "json", + "interval": 2, + "exec": "/home/ivan/.config/waybar/v2raya-toggle.sh", + "on-click": "/home/ivan/.config/waybar/v2raya-toggle.sh toggle", + "signal": 10 + }, + "clock": { + "format": "{:%H:%M}", + "format-alt": "{:%d-%m-%Y}" + }, + "cpu": { + "format": " {usage}%", + "tooltip": false, + "on-click": "alacritty -e htop" + }, + "memory": { + "format": " {}%" + }, + "network": { + "min-length": 10, + "format-wifi": " {bandwidthDownBytes}", + "format-ethernet": " {bandwidthDownBytes}", + "format-disconnected": "⚠ DONT", + "interval": 1 + }, + "pulseaudio": { + "format": " {volume}%", + "format-muted": " Muted", + "on-click": "pavucontrol" + }, + "tray": { + "icon-size": 10, + "spacing": 15 + } +} + diff --git a/configs/____/waybar/style.css b/configs/____/waybar/style.css new file mode 100644 index 0000000..fdc7db5 --- /dev/null +++ b/configs/____/waybar/style.css @@ -0,0 +1,45 @@ +* { + font-family: "JetBrainsMono Nerd Font", "Font Awesome 7 Free", "Font Awesome 7 Free Solid", "Font Awesome 7 Brands", sans-serif; + font-size: 12px; + border: none; + border-radius: 0; +} + +@import "/home/ivan/.config/aether/theme/waybar.css"; + +window#waybar { + background: alpha(@background, 0.75); + color: @foreground; + min-height: 28px; +} + +#clock, +#cpu, +#memory, +#network, +#pulseaudio, +#taskbar, +#custom-spotify, +#tray { + padding: 0 10px; + color: @foreground; +} + +#taskbar button { + color: alpha(@foreground, 0.6); + padding: 0 8px; +} + +#taskbar button.active { + background-color: alpha(@foreground, 0.2); + box-shadow: inset 0 -2px 0 0 @foreground; + color: @foreground; +} + +#custom-v2raya.enabled { + color: @foreground; +} + +#custom-v2raya.disabled { + color: @background; +} \ No newline at end of file diff --git a/configs/____/waybar/v2raya-toggle.sh b/configs/____/waybar/v2raya-toggle.sh new file mode 100755 index 0000000..7cdb25e --- /dev/null +++ b/configs/____/waybar/v2raya-toggle.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Проверяем, запущен ли процесс v2rayA +if pgrep -x "v2raya" > /dev/null; then + if [ "$1" = "toggle" ]; then + sudo systemctl stop v2raya.service 2>/dev/null || sudo killall v2raya + echo "{\"text\": \" \", \"class\": \"disabled\", \"tooltip\": \"v2rayA выключен\"}" + else + echo "{\"text\": \" \", \"class\": \"enabled\", \"tooltip\": \"v2rayA включен\"}" + fi +else + if [ "$1" = "toggle" ]; then + sudo systemctl start v2raya.service 2>/dev/null || sudo v2raya --daemon & + echo "{\"text\": \" \", \"class\": \"enabled\", \"tooltip\": \"v2rayA включен\"}" + else + echo "{\"text\": \" \", \"class\": \"disabled\", \"tooltip\": \"v2rayA выключен\"}" + fi +fi + diff --git a/configs/____/wofi/cliphist-img.sh b/configs/____/wofi/cliphist-img.sh new file mode 100755 index 0000000..16d8082 --- /dev/null +++ b/configs/____/wofi/cliphist-img.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +export WAYLAND_DISPLAY=wayland-0 +export XDG_RUNTIME_DIR=/run/user/$(id -u) + +thumb_dir="${XDG_CACHE_HOME:-$HOME/.cache}/cliphist/thumbs" +mkdir -p "$thumb_dir" + +make_thumb() { # $1 - исходник, $2 - результат + if command -v gdk-pixbuf-thumbnailer >/dev/null 2>&1; then + gdk-pixbuf-thumbnailer -s 256 "$1" "$2" 2>/dev/null + elif command -v magick >/dev/null 2>&1; then + magick "$1" -resize '256x256>' "$2" 2>/dev/null + elif command -v convert >/dev/null 2>&1; then + convert "$1" -resize '256x256>' "$2" 2>/dev/null + fi + # если тулза нет/ошибка — отдаём оригинал, wofi сам смасштабирует + [ -s "$2" ] || cp -f "$1" "$2" +} + +wofi_input="" + +while read -r line; do + [[ "$line" == *" "$tmp" 2>/dev/null + [ -s "$tmp" ] && make_thumb "$tmp" "$thumb_path" + rm -f "$tmp" + fi + + if [ -s "$thumb_path" ]; then + wofi_input+="img:${thumb_path}\n" + else + wofi_input+="${line}\n" + fi + else + wofi_input+="${line}\n" + fi +done <<< "$(cliphist list)" + +choice="$(printf '%b' "$wofi_input" | wofi -I --dmenu --cache-file=/dev/null \ + -Dimage_size=100 -Dynamic_lines=true --prompt "Буфер обмена")" + +[ -z "$choice" ] && exit 0 + +if [[ "$choice" == img:* ]]; then + f="${choice#img:}" + id="$(basename "$f" .png)" + printf '%s\t' "$id" | cliphist decode | wl-copy +else + printf '%s\n' "$choice" | cliphist decode | wl-copy +fi \ No newline at end of file diff --git a/configs/____/wofi/style.css b/configs/____/wofi/style.css new file mode 100644 index 0000000..e37b019 --- /dev/null +++ b/configs/____/wofi/style.css @@ -0,0 +1,53 @@ +@import "/home/ivan/.config/aether/theme/wofi.css"; + +#img { + padding: 5px; + width: 120px; + height: 120px; +} + +#entry { + padding: 10px; +} + + +window { + background-color: @bg; + border: 2px solid @gray3; +} + +input { + background-color: @bg; + color: @fg; + border: 1px solid @gray2; +} + +input:selected { + background-color: @gray1; + color: @fg_bright; +} + +#entry { + color: @fg; + background-color: @bg; + padding: 5px; + margin: 2px; +} + +#entry:selected { + background-color: @gray1; + color: @fg_bright; +} + +scrollbar { + background-color: @bg; +} + +scrollbar slider { + background-color: @gray2; + border-radius: 5px; +} + +scrollbar slider:hover { + background-color: @gray3; +} diff --git a/configs/labwc/scripts/base_theme_dark.sh b/configs/labwc/scripts/base_theme_dark.sh index 9237daf..9fa81bd 100644 --- a/configs/labwc/scripts/base_theme_dark.sh +++ b/configs/labwc/scripts/base_theme_dark.sh @@ -1,25 +1,39 @@ #!/bin/bash +PALETTE="$HOME/.config/labwc/palettes/palette-dark.json" + +FG_COLOR=$(jq -r '.FG_COLOR' "$PALETTE") +SUB_FG_COLOR=$(jq -r '.SUB_FG_COLOR' "$PALETTE") + +BG_COLOR=$(jq -r '.BG_COLOR' "$PALETTE") +SUB_BG_COLOR=$(jq -r '.SUB_BG_COLOR' "$PALETTE") + +ACCENT_COLOR=$(jq -r '.ACCENT_COLOR' "$PALETTE") +SUB_ACCENT_COLOR=$(jq -r '.SUB_ACCENT_COLOR' "$PALETTE") + + cat << EOF > "$HOME/.config/labwc/themerc-override" # цвет рамки active и inactive -window.active.border.color: #ECE7DD -window.inactive.border.color: #141414 +window.active.border.color: $FG_COLOR +window.inactive.border.color: $BG_COLOR # цвет фона заголовка active и inactive -window.active.title.bg.color: #ECE7DD -window.inactive.title.bg.color: #ECE7DD +window.active.title.bg.color: $FG_COLOR +window.inactive.title.bg.color: $FG_COLOR # цвет текста заголовка окна -window.active.label.text.color: #141414 -window.inactive.label.text.color: #141414 +window.active.label.text.color: $BG_COLOR +window.inactive.label.text.color: $BG_COLOR # цвет иконок кнопок для АКТИВНОГО окна -window.active.button.unpressed.image.color: #141414 +window.active.button.unpressed.image.color: $BG_COLOR -# цвет иконок кнопок для НЕАКТИВНОГО окна (ОБЯЗАТЕЛЬНЫЙ КЛЮЧ LABWC) -window.inactive.button.image.color: #141414 +# цвет иконок кнопок для НЕАКТИВНОГО окна +window.inactive.button.image.color: $BG_COLOR EOF killall swaybg 2>/dev/null -swaybg -m fill -i "$HOME/.config/labwc/backgrounds/voidlinux_bg_dark.png" & +swaybg \ + -m fill \ + -i "$HOME/.config/labwc/backgrounds/voidlinux_bg_dark.png" &