From fc4a744e12e0eddfe418e489ad68405bf9b82bc8 Mon Sep 17 00:00:00 2001 From: aibrash Date: Tue, 27 Oct 2026 23:44:59 +0500 Subject: [PATCH] Monochrome SwayFX glass rice Co-Authored-By: Claude Sonnet 5.5 --- .config/dunst/dunstrc | 37 ++++ .config/rofi/catppuccin.rasi | 23 +++ .config/rofi/cyberpunk.rasi | 23 +++ .config/rofi/powermenu.sh | 11 ++ .config/rofi/style.css | 17 ++ .config/sway/config | 235 +++++++++++++++++++++++ .config/sway/config.d/10-appearance.conf | 54 ++++++ .config/sway/config.d/20-swayfx.conf | 42 ++++ .config/sway/config.d/30-workflow.conf | 27 +++ .config/sway/idle.sh | 6 + .config/sway/mirror.sh | 20 ++ .config/sway/screenshot.sh | 10 + .config/swaylock/config | 25 +++ .config/waybar/config.jsonc | 44 +++++ .config/waybar/style.css | 67 +++++++ README.md | 17 ++ wallpapers/mono-glow.jpg | Bin 0 -> 43931 bytes 17 files changed, 658 insertions(+) create mode 100644 .config/dunst/dunstrc create mode 100644 .config/rofi/catppuccin.rasi create mode 100644 .config/rofi/cyberpunk.rasi create mode 100755 .config/rofi/powermenu.sh create mode 100644 .config/rofi/style.css create mode 100644 .config/sway/config create mode 100644 .config/sway/config.d/10-appearance.conf create mode 100644 .config/sway/config.d/20-swayfx.conf create mode 100644 .config/sway/config.d/30-workflow.conf create mode 100755 .config/sway/idle.sh create mode 100755 .config/sway/mirror.sh create mode 100755 .config/sway/screenshot.sh create mode 100644 .config/swaylock/config create mode 100644 .config/waybar/config.jsonc create mode 100644 .config/waybar/style.css create mode 100644 README.md create mode 100644 wallpapers/mono-glow.jpg diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..7c95221 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,37 @@ +[global] + monitor = 0 + follow = mouse + width = (250, 360) + origin = top-right + offset = (12, 48) + gap_size = 8 + corner_radius = 14 + frame_width = 1 + padding = 12 + horizontal_padding = 14 + font = JetBrains Mono 10 + format = "%s\n%b" + icon_position = left + max_icon_size = 48 + transparency = 0 + icon_corner_radius = 8 + progress_bar_corner_radius = 4 + progress_bar_height = 8 + +[urgency_low] + background = "#0c0c0c99" + foreground = "#e8e8e8" + frame_color = "#e8e8e815" + timeout = 5 + +[urgency_normal] + background = "#0c0c0c99" + foreground = "#e8e8e8" + frame_color = "#e8e8e830" + timeout = 8 + +[urgency_critical] + background = "#0c0c0c99" + foreground = "#e8e8e8" + frame_color = "#ff5c5c" + timeout = 0 diff --git a/.config/rofi/catppuccin.rasi b/.config/rofi/catppuccin.rasi new file mode 100644 index 0000000..4fccbf3 --- /dev/null +++ b/.config/rofi/catppuccin.rasi @@ -0,0 +1,23 @@ +* { + base: #0c0c0c; surface: #1c1c1c; text: #e8e8e8; mauve: #e8e8e8; subtext: #8c8c8c; + background-color: transparent; + text-color: @text; + font: "JetBrains Mono 12"; +} +window { + background-color: rgba(12,12,12,0.60); + border: 1px; border-color: rgba(232,232,232,0.14); border-radius: 20px; + padding: 18px; + width: 600px; +} +mainbox { spacing: 10px; } +inputbar { + background-color: rgba(255,255,255,0.07); border-radius: 14px; padding: 12px 16px; spacing: 8px; + children: [ prompt, entry ]; +} +prompt { text-color: @mauve; } +entry { placeholder: "Search..."; placeholder-color: @subtext; } +listview { lines: 8; scrollbar: false; spacing: 4px; fixed-height: true; } +element { padding: 9px 14px; border-radius: 14px; spacing: 10px; } +element selected { background-color: rgba(232,232,232,0.92); text-color: #0c0c0c; } +element-icon { size: 1.4em; } diff --git a/.config/rofi/cyberpunk.rasi b/.config/rofi/cyberpunk.rasi new file mode 100644 index 0000000..f6a13e2 --- /dev/null +++ b/.config/rofi/cyberpunk.rasi @@ -0,0 +1,23 @@ +* { + background-color: #05050a; + text-color: #fcee09; + border-color: #fcee09; + font: "monospace 11"; +} + +window { + border: 2px; + padding: 15px; + width: 500px; +} + +element selected { + background-color: #fcee09; + text-color: #000000; +} + +entry { + placeholder: "OVERRIDE_SYSTEM..."; + placeholder-color:#444444; + text-color: #ff003c; +} diff --git a/.config/rofi/powermenu.sh b/.config/rofi/powermenu.sh new file mode 100755 index 0000000..5ae590d --- /dev/null +++ b/.config/rofi/powermenu.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# Power menu in rofi +opts=$' Lock\n Logout\n Suspend\n Reboot\n Shutdown' +choice=$(printf '%s' "$opts" | rofi -dmenu -i -p "Power" -theme ~/.config/rofi/catppuccin.rasi -theme-str 'window {width: 300px;} listview {lines: 5;} entry {enabled: false;}') +case "$choice" in + *Lock) swaylock -f ;; + *Logout) swaymsg exit ;; + *Suspend) systemctl suspend ;; + *Reboot) systemctl reboot ;; + *Shutdown) systemctl poweroff ;; +esac diff --git a/.config/rofi/style.css b/.config/rofi/style.css new file mode 100644 index 0000000..4efbf70 --- /dev/null +++ b/.config/rofi/style.css @@ -0,0 +1,17 @@ +window { + background-color: #050B14; + border: 2px solid #FF0055; + font-family: "Orbitron", sans-serif; +} + +#input { + background-color: #0D0F18; + color: #00F0FF; + border: 1px solid #FF0055; + margin: 10px; +} + +#entry:selected { + background-color: #FF0055; + color: #050B14; +} diff --git a/.config/sway/config b/.config/sway/config new file mode 100644 index 0000000..9da4aa8 --- /dev/null +++ b/.config/sway/config @@ -0,0 +1,235 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +# Recommends: foot +set $term kitty +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +# Recommends: rofi-wayland +set $rofi_cmd rofi -theme ~/.config/rofi/catppuccin.rasi \ + -terminal '$term' +# Shows a combined list of the applications with desktop files and +# executables from PATH. +# TODO: add window with the next release of rofi-wayland +set $menu $rofi_cmd -show combi -combi-modes drun#run -modes combi + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) +# Requires: desktop-backgrounds-compat, swaybg, jxl-pixbuf-loader +output * bg /usr/share/backgrounds/default.jxl fill +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Idle configuration +# +# Example configuration: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ +# before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' + # +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +# Include configs from 3 locations: +# - /usr/share/sway/config.d +# - /etc/sway/config.d +# - $XDG_CONFIG_HOME/sway/config.d ($HOME/.config/sway/config.d) +# +# If multiple directories contain the files with the same name, the later +# directory takes precedence; `$XDG_CONFIG_HOME/sway/config.d/20-swayidle.conf` +# will always be loaded instead of `/usr/share/sway/config.d/20-swayidle.conf` +# or `/etc/sway/config.d/20-swayidle.conf` +# +# This mechanism permits overriding our default configuration per-system +# (/etc) or per-user ($XDG_CONFIG_HOME) basis. Just create the file you +# want to modify/override in the higher-level directory. +# +# For example, to disable the default bar from Fedora configs, you'll need to +# $ echo -n > "$HOME/.config/sway/config.d/90-bar.conf" +# +# Note the quoting, the $() and the arguments quoting. All the parts are equally +# important to make the magic work. And if you want to learn the secret behind +# the trick, it's all in the `wordexp(3)`. +# +include '$(/usr/libexec/sway/layered-include "/usr/share/sway/config.d/*.conf" "/etc/sway/config.d/*.conf" "${XDG_CONFIG_HOME:-$HOME/.config}/sway/config.d/*.conf")' + + + +input "type:keyboard" { + xkb_layout "us,ru" + xkb_options "grp:alt_shift_toggle,grp_led:scroll" +} + + diff --git a/.config/sway/config.d/10-appearance.conf b/.config/sway/config.d/10-appearance.conf new file mode 100644 index 0000000..2fc6b72 --- /dev/null +++ b/.config/sway/config.d/10-appearance.conf @@ -0,0 +1,54 @@ +# Monochrome +set $base #0c0c0c +set $mantle #000000 +set $surface0 #1c1c1c +set $surface1 #2e2e2e +set $text #e8e8e8 +set $subtext #8c8c8c +set $accent #f5f5f5 +set $red #ff5c5c + +font pango:JetBrains Mono 10 + +default_border pixel 1 +default_floating_border pixel 1 +hide_edge_borders smart +gaps inner 10 +gaps outer 6 +smart_gaps on + +# border background text indicator child_border +client.focused $accent $base $text $accent $accent +client.focused_inactive $surface1 $base $subtext $surface1 $surface1 +client.unfocused $surface0 $base $subtext $surface0 $surface0 +client.urgent $red $base $text $red $red +client.placeholder $base $base $text $base $base +client.background $base + +# Autostart +exec_always sh -c 'pkill -x dunst; exec dunst' +exec_always sh -c 'pkill -x nm-applet; exec nm-applet --indicator' +bindsym $mod+Shift+x exec swaylock -f + +# Touchpad +input type:touchpad { + tap enabled + tap_button_map lrm + natural_scroll enabled + dwt enabled + middle_emulation enabled + pointer_accel 0.3 +} + +# Window rules +for_window [app_id="pavucontrol|nm-connection-editor|blueman-manager"] floating enable, resize set 700 500, border pixel 2 +for_window [window_role="pop-up"] floating enable +for_window [app_id="rofi"] border none +titlebar_padding 6 3 +focus_follows_mouse no +workspace_auto_back_and_forth yes +bindsym $mod+Shift+p exec ~/.config/rofi/powermenu.sh + +# Wallpaper + idle/lock +output * bg ~/Pictures/wallpapers/mono-glow.jpg fill +exec_always ~/.config/sway/idle.sh diff --git a/.config/sway/config.d/20-swayfx.conf b/.config/sway/config.d/20-swayfx.conf new file mode 100644 index 0000000..7c8d172 --- /dev/null +++ b/.config/sway/config.d/20-swayfx.conf @@ -0,0 +1,42 @@ +# SwayFX effects (swayfx 0.6) + +corner_radius 16 +smart_corner_radius on + +# Frosted-glass blur +blur enable +blur_xray disable +blur_passes 4 +blur_radius 7 +blur_noise 0.03 +blur_brightness 0.85 +blur_contrast 1.1 +blur_saturation 1.2 + +# Shadows: soft white-ish glow on focused window, deep shadow on the rest +shadows enable +shadows_on_csd enable +shadow_blur_radius 30 +shadow_offset 0 6 +shadow_color #ffffff18 +shadow_inactive_color #00000099 + +# Dim inactive windows +default_dim_inactive 0.15 +dim_inactive_colors.unfocused #000000 +dim_inactive_colors.urgent #ff5c5c + +# Thin outline instead of fat border -> cleaner look +titlebar_separator disable + +# Frosted glass for layers +layer_effects "waybar" blur enable; blur_ignore_transparent enable; corner_radius 14; shadows enable +layer_effects "rofi" blur enable; blur_ignore_transparent enable; corner_radius 20; shadows enable +layer_effects "notifications" blur enable; blur_ignore_transparent enable; corner_radius 14; shadows enable +layer_effects "swaynag" blur enable; blur_ignore_transparent enable; corner_radius 12 + +# Translucent terminals, glass shows through +for_window [app_id="kitty"] opacity 0.88 +for_window [app_id="scratch"] opacity 0.82 +for_window [app_id="(?i)thunar|org.gnome.Nautilus"] opacity 0.92 +for_window [app_id="pavucontrol|nm-connection-editor|blueman-manager"] opacity 0.92 diff --git a/.config/sway/config.d/30-workflow.conf b/.config/sway/config.d/30-workflow.conf new file mode 100644 index 0000000..78f5ae0 --- /dev/null +++ b/.config/sway/config.d/30-workflow.conf @@ -0,0 +1,27 @@ +# Workflow helpers + +# Drop-down scratchpad terminal: $mod+grave +exec kitty --class scratch +for_window [app_id="scratch"] move scratchpad, resize set 1000 560, move position center, border pixel 2 +bindsym $mod+grave scratchpad show + +# Workspace navigation +bindsym $mod+Tab workspace next_on_output +bindsym $mod+Shift+Tab workspace prev_on_output +bindsym $mod+Ctrl+Right workspace next_on_output +bindsym $mod+Ctrl+Left workspace prev_on_output + +# Quick layout / window helpers +bindsym $mod+Shift+f floating toggle, resize set 1000 600, move position center +bindsym $mod+c exec swaymsg [con_id=__focused__] move position center + +# Screenshots: area -> clipboard, area -> file +bindsym Shift+Print exec ~/.config/sway/screenshot.sh clip +bindsym $mod+Print exec ~/.config/sway/screenshot.sh file + +# Keep video/browser-video windows undimmed +for_window [app_id="firefox"] inhibit_idle fullscreen +for_window [app_id="mpv"] floating enable, dim_inactive 0 + +# Mirror internal screen to HDMI/TV on hotplug +exec_always ~/.config/sway/mirror.sh diff --git a/.config/sway/idle.sh b/.config/sway/idle.sh new file mode 100755 index 0000000..aa4db40 --- /dev/null +++ b/.config/sway/idle.sh @@ -0,0 +1,6 @@ +#!/bin/sh +pkill -x swayidle +exec swayidle -w \ + timeout 300 'swaylock -f' \ + timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ + before-sleep 'swaylock -f' diff --git a/.config/sway/mirror.sh b/.config/sway/mirror.sh new file mode 100755 index 0000000..eb37c51 --- /dev/null +++ b/.config/sway/mirror.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Mirror the internal display to any external output (sway has no native mirroring). +# Watches output hotplug events; needs wl-mirror. +exec 9>"${XDG_RUNTIME_DIR:-/tmp}/sway-mirror.lock" +flock -n 9 || exit 0 + +internal=eDP-1 + +sync() { + pkill -x wl-mirror + for ext in $(swaymsg -t get_outputs -r | jq -r --arg i "$internal" '.[] | select(.active and .name != $i) | .name'); do + wl-mirror --fullscreen-output "$ext" "$internal" & + done +} + +sync +swaymsg -t subscribe -m '["output"]' | while read -r _; do + sleep 1 + sync +done diff --git a/.config/sway/screenshot.sh b/.config/sway/screenshot.sh new file mode 100755 index 0000000..1e8cf9c --- /dev/null +++ b/.config/sway/screenshot.sh @@ -0,0 +1,10 @@ +#!/bin/sh +# usage: screenshot.sh clip | file +geo=$(slurp) || exit 0 +if [ "$1" = file ]; then + dir=$HOME/Pictures/Screenshots + mkdir -p "$dir" + grim -g "$geo" "$dir/$(date +%F_%H-%M-%S).png" +else + grim -g "$geo" - | wl-copy +fi diff --git a/.config/swaylock/config b/.config/swaylock/config new file mode 100644 index 0000000..4d6a2b3 --- /dev/null +++ b/.config/swaylock/config @@ -0,0 +1,25 @@ +image=~/Pictures/wallpapers/mono-glow.jpg +scaling=fill +font=JetBrains Mono +indicator-radius=90 +indicator-thickness=5 +inside-color=0c0c0c99 +inside-clear-color=0c0c0c99 +inside-ver-color=0c0c0c99 +inside-wrong-color=0c0c0c99 +ring-color=e8e8e8 +ring-clear-color=8c8c8c +ring-ver-color=ffffff +ring-wrong-color=ff5c5c +line-color=00000000 +line-clear-color=00000000 +line-ver-color=00000000 +line-wrong-color=00000000 +separator-color=00000000 +key-hl-color=ffffff +bs-hl-color=ff5c5c +text-color=e8e8e8 +text-clear-color=e8e8e8 +text-ver-color=e8e8e8 +text-wrong-color=ff5c5c +show-failed-attempts diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc new file mode 100644 index 0000000..76f8725 --- /dev/null +++ b/.config/waybar/config.jsonc @@ -0,0 +1,44 @@ +{ + "layer": "top", + "position": "top", + "height": 34, + "margin-top": 8, + "margin-left": 10, + "margin-right": 10, + "spacing": 6, + "modules-left": ["sway/workspaces", "sway/mode", "sway/window"], + "modules-center": ["clock", "mpris"], + "modules-right": ["idle_inhibitor", "sway/language", "temperature", "cpu", "memory", "backlight", "pulseaudio", "network", "battery", "tray", "custom/power"], + + "sway/workspaces": { "disable-scroll": true, "all-outputs": true, "format": "{icon}", "format-icons": {"1": "", "2": "", "3": "", "4": "", "5": "", "urgent": "", "default": ""} }, + "sway/window": { "max-length": 45, "format": "{title}", "rewrite": { "(.*) — Mozilla Firefox": " $1", "(.*) - Chromium": " $1" } }, + "sway/language": { "format": " {short}" }, + "clock": { "format": " {:%H:%M}", "format-alt": " {:%A, %d %B %Y}", "tooltip-format": "{calendar}" }, + "mpris": { "format": "{player_icon} {title}", "format-paused": " {title}", "player-icons": { "default": "" }, "max-length": 36, "tooltip-format": "{artist} — {title}" }, + "idle_inhibitor": { "format": "{icon}", "format-icons": { "activated": "", "deactivated": "" }, "tooltip-format-activated": "Idle inhibited", "tooltip-format-deactivated": "Idle allowed" }, + "temperature": { "critical-threshold": 85, "format": " {temperatureC}°", "interval": 5 }, + "cpu": { "format": " {usage}%", "interval": 3 }, + "memory": { "format": " {percentage}%", "interval": 5 }, + "backlight": { "format": "{icon} {percent}%", "format-icons": ["", ""], "on-scroll-up": "brightnessctl set 5%+", "on-scroll-down": "brightnessctl set 5%-" }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": " muted", + "format-icons": { "default": ["", "", ""] }, + "on-click": "pavucontrol", + "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + }, + "network": { + "format-wifi": " {essid}", + "format-ethernet": " {ipaddr}", + "format-disconnected": " offline", + "tooltip-format": "{ifname} {signalStrength}%" + }, + "battery": { + "states": { "warning": 25, "critical": 12 }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-icons": ["", "", "", "", ""] + }, + "tray": { "spacing": 8 }, + "custom/power": { "format": "", "tooltip": false, "on-click": "~/.config/rofi/powermenu.sh" } +} diff --git a/.config/waybar/style.css b/.config/waybar/style.css new file mode 100644 index 0000000..8f98a53 --- /dev/null +++ b/.config/waybar/style.css @@ -0,0 +1,67 @@ +@define-color base #0c0c0c; +@define-color surface0 #1c1c1c; +@define-color surface1 #2e2e2e; +@define-color text #e8e8e8; +@define-color subtext #8c8c8c; +@define-color red #ff5c5c; +@define-color yellow #d9c99a; + +* { + font-family: "JetBrains Mono", "Font Awesome 6 Free"; + font-size: 13px; + border: none; + border-radius: 0; + min-height: 0; +} + +window#waybar { background: transparent; color: @text; } + +/* glass pills: translucent so swayfx blur shows through */ +#workspaces, #window, #clock, #language, #cpu, #memory, #pulseaudio, #network, #battery, +#tray, #mode, #custom-power, #backlight, #idle_inhibitor, #temperature, #mpris { + background: alpha(@base, 0.55); + border: 1px solid alpha(@text, 0.08); + border-radius: 14px; + padding: 0 12px; + margin: 0; + color: @text; + transition: all 0.25s ease; +} + +#workspaces { padding: 0 4px; } +#workspaces button { + color: @subtext; + padding: 0 9px; + margin: 4px 2px; + border-radius: 10px; + background: transparent; + transition: all 0.25s ease; +} +#workspaces button:hover { background: alpha(@text, 0.12); color: @text; box-shadow: none; text-shadow: none; } +#workspaces button.focused { background: alpha(@text, 0.92); color: @base; padding: 0 16px; box-shadow: 0 0 12px alpha(@text, 0.35); } +#workspaces button.urgent { background: @red; color: @base; } + +#mode { background: @text; color: @base; font-weight: bold; } +#window { color: @subtext; } +window#waybar.empty #window { background: transparent; border-color: transparent; } +#clock { font-weight: bold; padding: 0 16px; } +#mpris { color: @subtext; } + +#cpu:hover, #memory:hover, #pulseaudio:hover, #network:hover, #battery:hover, +#language:hover, #backlight:hover, #idle_inhibitor:hover, #temperature:hover, #mpris:hover { + background: alpha(@text, 0.14); + border-color: alpha(@text, 0.25); +} +#idle_inhibitor.activated { background: @text; color: @base; } +#network.disconnected { color: @red; } +#battery.charging { color: @text; } +#battery.warning:not(.charging) { color: @yellow; } +#battery.critical:not(.charging) { color: @red; animation: blink 1s steps(2) infinite; } +#temperature.critical { color: @red; } +#custom-power { padding: 0 14px; } +#custom-power:hover { background: @red; color: @base; border-color: @red; } + +@keyframes blink { to { background: alpha(@red, 0.5); } } + +tooltip { background: alpha(@base, 0.85); border: 1px solid alpha(@text, 0.12); border-radius: 12px; } +tooltip label { color: @text; padding: 2px; } diff --git a/README.md b/README.md new file mode 100644 index 0000000..077b7e5 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# sway-rising + +Monochrome glass rice for SwayFX 0.6: frosted blur, rounded corners, glow on the focused window, floating waybar pills, translucent rofi / dunst / swaylock. + +## Contents +- `.config/sway` – config + `config.d/` (appearance, swayfx effects, workflow), idle/screenshot/mirror scripts +- `.config/waybar`, `.config/rofi`, `.config/dunst`, `.config/swaylock` +- `wallpapers/mono-glow.jpg` + +## Install +Requires: swayfx, waybar, rofi, dunst, swaylock, swayidle, kitty, JetBrains Mono, Font Awesome 6. + + cp -r .config/* ~/.config/ + mkdir -p ~/Pictures/wallpapers && cp wallpapers/* ~/Pictures/wallpapers/ + swaymsg reload + +Waybar is started by sway itself (`/usr/share/sway/config.d/90-bar.conf`); reload its style with `pkill -SIGUSR2 waybar`. diff --git a/wallpapers/mono-glow.jpg b/wallpapers/mono-glow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d5dbaee421621b26f1257c15a8d107a5c3fa2e1 GIT binary patch literal 43931 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 literal 0 HcmV?d00001