diff --git a/.gitignore b/.gitignore index b18e375..4fb2421 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ */colors.css */colors.conf +backups/ diff --git a/README.md b/README.md index f3ecd20..d369d73 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,8 @@ mv ~/scripts/waybar/waybar_sway_config.json ~/scripts/waybar/config ```bash ln -sf ~/scripts/i3 ~/.config/i3 -ln -sf ~/scripts/i3/i3blocks.conf ~/.config/i3blocks/config -ln -sf ~/scripts/i3/i3status.conf ~/.config/i3status/config +ln -sf ~/scripts/i3blocks ~/.config/i3blocks +ln -sf ~/scripts/i3status ~/.config/i3status ``` ### Cursor @@ -162,6 +162,7 @@ Prefix is Ctrl + f. | `Prefix + g` | Split horizontal | | `Prefix + v` | Split vertical | | `Prefix + h/j/k/l` | Select pane | +| `Prefix + J/K` | Swap pane down/up | | `Prefix + Ctrl + H/J/K/L` | Resize pane | | `Prefix + 1-0` | Select window 1-10 | | `Alt + 1-0` | Create window 1-10 | @@ -171,6 +172,8 @@ Prefix is Ctrl + f. | `Prefix + [` / `]` | Copy mode / Paste | | `Prefix + r` | Refresh | | `Prefix + R` | Reload config | +| `Prefix + Space` | Send prefix (nested tmux) | +| `Prefix + ?` | List keys | | `Prefix + Ctrl + s` | Save session (resurrect) | | `Prefix + Ctrl + r` | Restore session (resurrect) | diff --git a/hypr/base b/hypr/base new file mode 100644 index 0000000..f14d61b --- /dev/null +++ b/hypr/base @@ -0,0 +1,377 @@ +# Hyprland config - converted from i3 config by Adam French +# https://wiki.hyprland.org/Configuring/ + + +################ +### MONITORS ### +################ + +monitor=,preferred,auto,1 + + +################### +### MY PROGRAMS ### +################### + +$terminal = kitty +$fileManager = kitty -e ranger +$menu = wofi --show run + +################### +### CURSOR ### +################### + +env = XCURSOR_THEME,Miku Cursor +env = XCURSOR_SIZE,48 +env = HYPRCURSOR_SIZE,48 + +################# +### AUTOSTART ### +################# + +exec-once = fcitx5 +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once = nm-applet +exec-once = wl-paste --watch cliphist store +exec-once = dunst +exec-once = hypridle # replaces xautolock; configure lock in hypridle.conf +exec-once = waterfox +exec-once = steam +exec-once = surfshark +exec-once = waybar +# exec-once = volctl # may need a Wayland-compatible tray volume tool +# exec-once = pamac-tray # check for Wayland support +# NOTE: ff-theme-util and fix_xcursor are X11-specific; drop or find Wayland equivalents +# Caps<->Escape swap is handled below via input config + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + + +##################### +### LOOK AND FEEL ### +##################### + +general { + gaps_in = 5 # inner gaps (i3: gaps inner 10 → split between two sides) + gaps_out = 0 # outer gaps (i3: gaps outer 0) + border_size = 1 + + col.active_border = $color_primary + col.inactive_border = $color_gray + + resize_on_border = true + allow_tearing = false + layout = master # closest to i3's stacking default; use dwindle for split +} + +decoration { + rounding = 0 + + active_opacity = 1.0 + inactive_opacity = 1.0 + + shadow { + enabled = false + } + + blur { + enabled = true + size = 3 + passes = 1 + } +} + +animations { + enabled = true + + bezier = myBezier, 0.645, 0.045, 0.355, 1.000 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, myBezier + animation = border, 1, 10, myBezier + animation = borderangle, 1, 8, myBezier + animation = fade, 1, 7, myBezier + animation = workspaces, 1, 6, myBezier +} + +master { + new_status = slave +} + +misc { + force_default_wallpaper = 0 + disable_hyprland_logo = true + focus_on_activate = true # replaces i3's "for_window [urgent=latest] focus" +} + + +############# +### INPUT ### +############# + +input { + kb_layout = gb + kb_options = caps:swapescape + follow_mouse = 1 + sensitivity = 0 +} + +################### +### KEYBINDINGS ### +################### + +$mod = SUPER + +# Terminal +bind = $mod, Return, exec, $terminal + +# Kill focused window +bind = $mod SHIFT, Q, killactive + +# Launcher (wofi replaces dmenu) +bind = $mod, D, exec, wofi --show run --style ~/scripts/wofi/style.css +# To approximate your dmenu colors, configure wofi's style.css + +# Pavucontrol +bind = $mod CTRL, M, exec, pavucontrol + +# Applications +bind = $mod, F2, exec, waterfox +bind = $mod, F3, exec, $fileManager +bind = $mod SHIFT, F3, exec, pcmanfm +bind = $mod, F5, exec, kitty -e mocp + +# Compositor toggle (picom → hyprland manages its own compositor; these are no-ops) +# bind = $mod, T, exec, pkill picom +# bind = $mod CTRL, T, exec, picom -b + +# Restart dunst +bind = $mod SHIFT, D, exec, killall dunst && notify-send 'restart dunst' + +# Screenshots (flameshot on Wayland needs -g flag or use grim/slurp instead) +bind = , Print, exec, flameshot gui +bind = $mod, Print, exec, grim -g "$(slurp)" - | wl-copy +bind = $mod SHIFT, Print, exec, grim -g "$(slurp)" ~/screenshot.png + +# Xkill equivalent +bind = $mod CTRL, X, exec, hyprctl kill + +# Lock screen +bind = $mod, 9, exec, hyprlock # replaces blurlock; configure hyprlock separately + +# Toggle bar visibility (waybar) +bind = $mod, M, exec, pkill -SIGUSR1 waybar + +# Reload Hyprland config +bind = $mod SHIFT, C, exec, hyprctl reload + +# Exit Hyprland +bind = $mod SHIFT, E, exec, hyprctl dispatch exit + +# System mode (replaces i3's $mode_system) +# Simple submap equivalent: +bind = $mod, 0, submap, system +submap = system +bind = , L, exec, hyprlock +bind = , L, submap, reset +bind = , S, exec, systemctl suspend +bind = , S, submap, reset +bind = , H, exec, systemctl hibernate +bind = , H, submap, reset +bind = , R, exec, systemctl reboot +bind = , R, submap, reset +bind = SHIFT, S, exec, systemctl poweroff +bind = SHIFT, S, submap, reset +bind = , E, exec, hyprctl dispatch exit +bind = , E, submap, reset +bind = , Return, submap, reset +bind = , Escape, submap, reset +submap = reset + +# --- FOCUS --- +bind = $mod, H, movefocus, l +bind = $mod, J, movefocus, d +bind = $mod, K, movefocus, u +bind = $mod, L, movefocus, r +bind = $mod, left, movefocus, l +bind = $mod, down, movefocus, d +bind = $mod, up, movefocus, u +bind = $mod, right, movefocus, r + +# --- MOVE WINDOWS --- +bind = $mod SHIFT, H, movewindow, l +bind = $mod SHIFT, J, movewindow, d +bind = $mod SHIFT, K, movewindow, u +bind = $mod SHIFT, L, movewindow, r +bind = $mod SHIFT, left, movewindow, l +bind = $mod SHIFT, down, movewindow, d +bind = $mod SHIFT, up, movewindow, u +bind = $mod SHIFT, right, movewindow, r + +# --- FLOATING --- +bind = $mod SHIFT, space, togglefloating +bind = $mod, space, focusurgentorlast # approximate focus mode_toggle + +# --- FULLSCREEN --- +bind = $mod, F, fullscreen, 0 + +# --- SPLIT / LAYOUT --- +# Hyprland uses dwindle preselect or master swaps; approximate below: +bind = $mod, G, layoutmsg, orientationleft # tile horizontally +bind = $mod, V, layoutmsg, orientationbottom # tile vertically +bind = $mod, E, layoutmsg, togglesplit + +bind = $mod, w, exec, hyprctl dispatch togglegroup + +# --- STICKY (pin floating window) --- +bind = $mod SHIFT, S, pin + +# --- SCRATCHPAD --- +bind = $mod SHIFT, minus, movetoworkspacesilent, special:scratchpad +bind = $mod, minus, togglespecialworkspace, scratchpad + +# --- WORKSPACE NAVIGATION --- +bind = $mod CTRL, right, workspace, +1 +bind = $mod CTRL, left, workspace, -1 +bind = $mod, B, workspace, previous # back_and_forth + +# Switch to workspace +bind = $mod, 1, workspace, 1 +bind = $mod, 2, workspace, 2 +bind = $mod, 3, workspace, 3 +bind = $mod, 4, workspace, 4 +bind = $mod, 5, workspace, 5 +bind = $mod, 6, workspace, 6 +bind = $mod, 7, workspace, 7 +bind = $mod, 8, workspace, 8 + +# Move container to workspace (silent = don't follow) +bind = $mod CTRL, 1, movetoworkspacesilent, 1 +bind = $mod CTRL, 2, movetoworkspacesilent, 2 +bind = $mod CTRL, 3, movetoworkspacesilent, 3 +bind = $mod CTRL, 4, movetoworkspacesilent, 4 +bind = $mod CTRL, 5, movetoworkspacesilent, 5 +bind = $mod CTRL, 6, movetoworkspacesilent, 6 +bind = $mod CTRL, 7, movetoworkspacesilent, 7 +bind = $mod CTRL, 8, movetoworkspacesilent, 8 + +# Move to workspace AND follow (replaces $mod+Shift+N in i3) +bind = $mod SHIFT, 1, movetoworkspace, 1 +bind = $mod SHIFT, 2, movetoworkspace, 2 +bind = $mod SHIFT, 3, movetoworkspace, 3 +bind = $mod SHIFT, 4, movetoworkspace, 4 +bind = $mod SHIFT, 5, movetoworkspace, 5 +bind = $mod SHIFT, 6, movetoworkspace, 6 +bind = $mod SHIFT, 7, movetoworkspace, 7 +bind = $mod SHIFT, 8, movetoworkspace, 8 + +# --- RESIZE SUBMAP --- +bind = $mod, R, submap, resize +submap = resize +binde = , H, resizeactive, -20 0 +binde = , J, resizeactive, 0 20 +binde = , K, resizeactive, 0 -20 +binde = , L, resizeactive, 20 0 +binde = , left, resizeactive, -30 0 +binde = , down, resizeactive, 0 30 +binde = , up, resizeactive, 0 -30 +binde = , right, resizeactive, 30 0 +bind = , Return, submap, reset +bind = , Escape, submap, reset +submap = reset + +# --- MOUSE BINDS --- +bindm = $mod, mouse:272, movewindow # mod+LMB drag to move floating +bindm = $mod, mouse:273, resizewindow # mod+RMB drag to resize + +# --- AUDIO --- +bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +10% +bindel = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -10% +bindl = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle +bindl = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle + +# --- BRIGHTNESS --- +bindel = , XF86MonBrightnessUp, exec, brightnessctl set +5% +bindel = , XF86MonBrightnessDown, exec, brightnessctl set 5%- + + +#################### +### WINDOW RULES ### +#################### + +windowrule { + name = Surfshark + match:class = ^(Surfshark)$ + workspace = 8 silent + tile = on +} + +windowrule { + name = pavucontrol + match:class = ^(pavucontrol)$ + float = on +} + +windowrule { + name = Lxappearance + match:class = ^(Lxappearance)$ + float = on +} + +windowrule { + name = PiP + match:title = ^(Picture-in-Picture)$ + float = off +} + + +############################## +### WORKSPACE NAMES / ICONS ## +############################## + +# Hyprland workspace names (replaces i3 set $ws variables) +# These are used by waybar's workspaces module — configure names there. +# ws1=ツ ws2=ಠ‿ಠ ws3=◕‿◕ ws4=ʘ‿ʘ +# ws5=˘◡˘ ws6=◠‿◠ ws7=ᵔᴥᵔ ws8=æ + + +############################## +### COLORS (reference only) ## +############################## + +# Your theme palette for use in waybar / wofi CSS: +# Background: #1b110e +# BG Secondary: #000000 +# Primary: #55ffbb (green) +# Secondary: #62ff57 (lime) +# Tertiary: #ff579a (pink) +# Quaternary: #024942 (dark teal) +# Link: #222222 + + +##################################### +### NOTES ON MIGRATING FROM i3 ## +##################################### +# 1. BAR: Replace i3bar+i3status with waybar. Copy the color palette above +# into your waybar style.css. Workspace icon names go in waybar config. +# +# 2. LOCK: Replace blurlock with hyprlock. Configure in ~/.config/hypr/hyprlock.conf +# Replace xautolock with hypridle in ~/.config/hypr/hypridle.conf (30 min timeout). +# +# 3. LAUNCHER: wofi replaces dmenu. Style with ~/.config/wofi/style.css using +# your palette colors above. +# +# 4. SCREENSHOTS: grim + slurp replace i3-scrot on Wayland. flameshot also +# works with the -g flag on some setups. +# +# 5. STACKING layout: Set layout = master above (or dwindle). Hyprland has no +# direct stacking mode; use floating or master layout as closest equivalent. +# +# 6. GAP MODE: Replace the i3-gaps mode with direct hyprctl commands if needed: +# hyprctl keyword general:gaps_in 10 +# +# 7. BORDER TOGGLE ($mod+u/y/n): Use windowrulev2 or hyprctl at runtime: +# hyprctl keyword general:border_size 0 diff --git a/hypr/build.sh b/hypr/build.sh new file mode 100755 index 0000000..436181b --- /dev/null +++ b/hypr/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")" +cat colors.conf base > hyprland.conf diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 5817a0e..0abe39e 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -1,7 +1,16 @@ +$color_primary = rgb(55ffbb) +$color_secondary = rgb(62ff57) +$color_tertiary = rgb(ff579a) +$color_bg = rgb(1b110e) +$color_bg_secondary = rgb(000000) +$color_alt_bg = rgb(024942) +$color_gray = rgb(222222) +$color_text_light = rgb(F0F0F0) +$color_text_dark = rgb(1b110e) +$color_white = rgb(FFFFFF) # Hyprland config - converted from i3 config by Adam French # https://wiki.hyprland.org/Configuring/ -source = ~/scripts/hypr/colors.conf ################ ### MONITORS ### diff --git a/i3/base b/i3/base new file mode 100644 index 0000000..66a0475 --- /dev/null +++ b/i3/base @@ -0,0 +1,374 @@ +# This is my personal personal i3 config file! - Adam French + + +# WORKSPACE NAMES ----------------------------------- +set $ws1 1:ツ +set $ws2 2:ಠ‿ಠ +set $ws3 3:◕‿◕ +set $ws4 4:ʘ‿ʘ +set $ws5 5:˘◡˘ +set $ws6 6:◠‿◠ +set $ws7 7:ᵔᴥᵔ +set $ws8 8:æ + +# DEFAULT STARTUP -------------------------------------- +exec --no-startup-id setxkbmap -option caps:swapescape +exec --no-startup-id volctl +exec --no-startup-id fcitx5 +exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +# exec --no-startup-id manjaro-hello +exec --no-startup-id nm-applet +exec --no-startup-id pamac-tray +exec --no-startup-id clipit +exec --no-startup-id dunst +exec --no-startup-id xautolock -time 30 -locker blurlock +# exec --no-startup-id nitrogen ~/scripts/background.jpg +# exec --no-startup-id blueman-applet +# exec_always --no-startup-id sbxkb +# exec --no-startup-id start_conky_maia +# exec --no-startup-id start_conky_green +exec --no-startup-id waterfox +exec --no-startup-id steam +exec --no-startup-id surfshark + + +# PACTL BINDINGS --------------------------------------- + +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle + +# BRIGHTNESSCTL BINDINGS ---------------------------------- + +bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5% +bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%- + +# DEFAULT WINDOW LAYOUT ------------------------------------- + +# set default desktop layout (default is tiling) +workspace_layout stacking +# Configure border style +default_border pixel 1 +default_floating_border normal +# Hide borders +hide_edge_borders none + +# KEYBINDS -------------------------------------------------- + +# Set mod key (Mod1=, Mod4=) +set $mod Mod4 + +# change borders +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +# Use Mouse+$mod to drag floating windows +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec kitty +# kill focused window +bindsym $mod+Shift+q kill +# start program launcher +bindsym $mod+d exec --no-startup-id dmenu_run -nb '$color_bg' -sf '$color_tertiary' -sb '$color_bg' -nf '$color_primary' + +bindsym $mod+Ctrl+m exec pavucontrol + +# Start Applications +bindsym $mod+F2 exec waterfox +# bindsym $mod+F3 exec pcmanfm +bindsym $mod+F3 exec kitty -e ranger +bindsym $mod+Shift+F3 exec pcmanfm_pkexec +bindsym $mod+F5 exec kitty -e 'mocp' +bindsym $mod+t exec --no-startup-id pkill picom +bindsym $mod+Ctrl+t exec --no-startup-id picom -b +bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'" +bindsym Print exec flameshot gui +bindsym $mod+Print --release exec --no-startup-id i3-scrot -w +bindsym $mod+Shift+Print --release exec --no-startup-id i3-scrot -s +# bindsym $mod+Shift+h exec xdg-open /usr/share/doc/manjaro/i3_help.pdf +bindsym $mod+Ctrl+x --release exec --no-startup-id xkill + +focus_follows_mouse yes + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# alternatively, you can use the cursor 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 + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+g split h;exec notify-send 'tile horizontally' +bindsym $mod+v split v;exec notify-send 'tile vertically' +bindsym $mod+q split toggle + +# toggle fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking;exec notify-send 'layout stacking' +bindsym $mod+w layout tabbed; exec notify-send 'layout tabbed' +bindsym $mod+e layout toggle split; exec notify-send 'layout split' + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# toggle sticky +bindsym $mod+Shift+s sticky toggle + +# focus the parent container +bindsym $mod+a focus parent + +# 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 + +#navigate workspaces next / previous +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 + +# Move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 + +# Move to workspace with focused container +bindsym $mod+Shift+1 move container to workspace $ws1; +bindsym $mod+Shift+2 move container to workspace $ws2; +bindsym $mod+Shift+3 move container to workspace $ws3; +bindsym $mod+Shift+4 move container to workspace $ws4; +bindsym $mod+Shift+5 move container to workspace $ws5; +bindsym $mod+Shift+6 move container to workspace $ws6; +bindsym $mod+Shift+7 move container to workspace $ws7; +bindsym $mod+Shift+8 move container to workspace $ws8; + +# reload the configuration file +bindsym $mod+Shift+c reload + +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +# Set shut down, restart and locking features +bindsym $mod+0 mode "$mode_system" +set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown +mode "$mode_system" { + bindsym l exec --no-startup-id i3exit lock, mode "default" + bindsym s exec --no-startup-id i3exit suspend, mode "default" + bindsym u exec --no-startup-id i3exit switch_user, mode "default" + bindsym e exec --no-startup-id i3exit logout, mode "default" + bindsym h exec --no-startup-id i3exit hibernate, mode "default" + bindsym r exec --no-startup-id i3exit reboot, mode "default" + bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym h resize shrink width 5 px or 5 ppt + bindsym j resize grow height 5 px or 5 ppt + bindsym k resize shrink height 5 px or 5 ppt + bindsym l resize grow width 5 px or 5 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # exit resize mode: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + + +# Lock screen +bindsym $mod+9 exec --no-startup-id blurlock +# APPLICATION WORKSPACES ---------------------------------------------------- +assign [class="Surfshark"] $ws8 +# assign [class="zed"] $ws1 +# assign [class="gimp"] $ws2 +# assign [class="Pale moon"] $ws2 +# assign [class="Pcmanfm"] $ws3 +# assign [class="Skype"] $ws5 + +# APPLICATION WINDOW MODES -------------------------------------------------- +for_window [title="Picture-in-Picture"] floating disable border pixel 0 + +for_window [title="alsamixer"] floating enable border pixel 1 +for_window [class="calamares"] floating enable border normal +for_window [class="Clipgrab"] floating enable +for_window [title="File Transfer*"] floating enable +for_window [class="fpakman"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +for_window [class="GParted"] floating enable border normal +for_window [title="i3_help"] floating enable sticky enable border normal +for_window [class="Lightdm-settings"] floating enable +for_window [class="Lxappearance"] floating enable sticky enable border normal +for_window [class="Manjaro-hello"] floating enable +for_window [class="Manjaro Settings Manager"] floating enable border normal +for_window [title="MuseScore: Play Panel"] floating enable +for_window [class="Nitrogen"] floating enable sticky enable border normal +for_window [class="Oblogout"] fullscreen enable +for_window [class="octopi"] floating enable +for_window [title="About Pale Moon"] floating enable +for_window [class="Pamac-manager"] floating enable +for_window [class="Pavucontrol"] floating enable +for_window [class="qt5ct"] floating enable sticky enable border normal +for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal +for_window [class="Simple-scan"] floating enable border normal +for_window [class="(?i)System-config-printer.py"] floating enable border normal +for_window [class="Skype"] floating enable border normal +for_window [class="Timeset-gui"] floating enable border normal +for_window [class="(?i)virtualbox"] floating enable border normal +for_window [class="Xfburn"] floating enable + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# AESTETICS ---------------------------------------------------------------- + +# Start i3bar to display a workspace bar (plus the system information i3status if available) +bar { + #status_command i3blocks -c ~/scripts/i3blocks.conf + status_command i3status + position bottom + + tray_output primary + + bindsym button4 nop + bindsym button5 nop + font xft:URWGothic-Book 11 + strip_workspace_numbers yes + + colors { + background $color_bg + statusline $color_primary + separator $color_tertiary + focused_workspace $color_primary $color_bg $color_white + active_workspace $color_primary $color_alt_bg $color_white + inactive_workspace $color_gray $color_alt_bg $color_white + binding_mode $color_tertiary $color_bg $color_white + urgent_workspace $color_tertiary $color_alt_bg $color_white + } +} + +# hide/unhide i3status bar +bindsym $mod+m bar mode toggle + +# Theme colors +# class border backgr. text indic. +client.focused $color_secondary $color_primary $color_text_dark $color_primary +client.focused_inactive $color_primary $color_alt_bg $color_text_light $color_tertiary +client.unfocused $color_gray $color_alt_bg $color_text_light $color_primary +client.urgent $color_tertiary $color_alt_bg $color_white $color_tertiary +client.placeholder $color_bg $color_bg $color_white $color_bg + +client.background $color_bg + +# Set inner/outer gaps +gaps inner 10 +gaps outer 0 +smart_gaps on + +# Smart borders (draw borders around container only if it is not the only container on this workspace) +# on|no_gaps (on=always activate and no_gaps=only activate if the gap size to the edge of the screen is 0) +smart_borders on diff --git a/i3/build.sh b/i3/build.sh new file mode 100755 index 0000000..6aa190d --- /dev/null +++ b/i3/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")" +cat colors.conf base > config diff --git a/i3/config b/i3/config index 968eb8a..785c249 100644 --- a/i3/config +++ b/i3/config @@ -1,6 +1,15 @@ +set $color_primary #55ffbb +set $color_secondary #62ff57 +set $color_tertiary #ff579a +set $color_bg #1b110e +set $color_bg_secondary #000000 +set $color_alt_bg #024942 +set $color_gray #222222 +set $color_text_light #F0F0F0 +set $color_text_dark #1b110e +set $color_white #FFFFFF # This is my personal personal i3 config file! - Adam French -include ~/scripts/i3/colors.conf # WORKSPACE NAMES ----------------------------------- set $ws1 1:ツ diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..444c1d5 --- /dev/null +++ b/install.sh @@ -0,0 +1,169 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPTS_DIR="$HOME/scripts" +CONFIG_DIR="$HOME/.config" +BACKUP_DIR="" + +usage() { + echo "Usage: $(basename "$0") [OPTIONS] ..." + echo + echo "Targets:" + echo " hyprland Hyprland + waybar + wofi" + echo " sway Sway + waybar + wofi" + echo " i3 i3 + i3blocks + i3status" + echo " cursor Miku cursor theme" + echo " shell Source bashrc/zshrc and add sh/ to PATH" + echo " alacritty Add import to alacritty.toml" + echo " tmux Source tmux.conf" + echo " nvim Neovim (LazyVim) config" + echo " vim Source vimrc" + echo " all Everything (uses hyprland as WM)" + echo + echo "Options:" + echo " -h, --help Show this help" +} + +backup() { + local path="$1" + if [ -e "$path" ] || [ -L "$path" ]; then + if [ -z "$BACKUP_DIR" ]; then + BACKUP_DIR="$SCRIPTS_DIR/backups/$(date +%Y%m%d_%H%M%S)" + mkdir -p "$BACKUP_DIR" + echo "Backing up existing configs to $BACKUP_DIR" + fi + local name + name=$(basename "$path") + cp -a "$path" "$BACKUP_DIR/$name" + echo " Backed up $path" + fi +} + +link() { + local src="$1" dest="$2" + backup "$dest" + rm -rf "$dest" + ln -sf "$src" "$dest" + echo " Linked $dest -> $src" +} + +append_if_missing() { + local file="$1" line="$2" + if [ ! -f "$file" ]; then + echo "$line" > "$file" + echo " Created $file with: $line" + elif ! grep -qF "$line" "$file"; then + echo "" >> "$file" + echo "$line" >> "$file" + echo " Appended to $file: $line" + else + echo " Already in $file: $line" + fi +} + +install_hyprland() { + echo "Installing Hyprland configs..." + "$SCRIPTS_DIR/hypr/build.sh" + "$SCRIPTS_DIR/waybar/build.sh" + "$SCRIPTS_DIR/wofi/build.sh" + mkdir -p "$CONFIG_DIR" + link "$SCRIPTS_DIR/hypr" "$CONFIG_DIR/hypr" + link "$SCRIPTS_DIR/waybar" "$CONFIG_DIR/waybar" + link "$SCRIPTS_DIR/wofi" "$CONFIG_DIR/wofi" +} + +install_sway() { + echo "Installing Sway configs..." + "$SCRIPTS_DIR/sway/build.sh" + "$SCRIPTS_DIR/waybar/build.sh" + "$SCRIPTS_DIR/wofi/build.sh" + mkdir -p "$CONFIG_DIR" + link "$SCRIPTS_DIR/sway" "$CONFIG_DIR/sway" + link "$SCRIPTS_DIR/waybar" "$CONFIG_DIR/waybar" + link "$SCRIPTS_DIR/wofi" "$CONFIG_DIR/wofi" +} + +install_i3() { + echo "Installing i3 configs..." + "$SCRIPTS_DIR/i3/build.sh" + mkdir -p "$CONFIG_DIR" + link "$SCRIPTS_DIR/i3" "$CONFIG_DIR/i3" + link "$SCRIPTS_DIR/i3blocks" "$CONFIG_DIR/i3blocks" + link "$SCRIPTS_DIR/i3status" "$CONFIG_DIR/i3status" +} + +install_cursor() { + echo "Installing cursor theme..." + mkdir -p "$HOME/.local/share/icons" + link "$SCRIPTS_DIR/hatsune-miku-windows-linux-cursors/miku-cursor-linux" "$HOME/.local/share/icons/Miku Cursor" +} + +install_shell() { + echo "Installing shell configs..." + if [ -f "$HOME/.zshrc" ] || [ "$SHELL" = *zsh* ]; then + append_if_missing "$HOME/.zshrc" "source ~/scripts/zshrc" + append_if_missing "$HOME/.zshrc" 'export PATH="$HOME/scripts/sh:$PATH"' + fi + if [ -f "$HOME/.bashrc" ] || [ "$SHELL" = *bash* ]; then + append_if_missing "$HOME/.bashrc" "source ~/scripts/bashrc" + append_if_missing "$HOME/.bashrc" 'export PATH="$HOME/scripts/sh:$PATH"' + fi +} + +install_alacritty() { + echo "Installing Alacritty config..." + local conf="$CONFIG_DIR/alacritty/alacritty.toml" + mkdir -p "$CONFIG_DIR/alacritty" + append_if_missing "$conf" 'import = ["~/scripts/alacritty.toml"]' +} + +install_tmux() { + echo "Installing tmux config..." + append_if_missing "$HOME/.tmux.conf" "source ~/scripts/tmux.conf" +} + +install_nvim() { + echo "Installing Neovim config..." + mkdir -p "$CONFIG_DIR" + link "$SCRIPTS_DIR/nvim" "$CONFIG_DIR/nvim" +} + +install_vim() { + echo "Installing vim config..." + append_if_missing "$HOME/.vimrc" "source ~/scripts/vimrc" +} + +if [ $# -eq 0 ]; then + usage + exit 1 +fi + +targets=() +for arg in "$@"; do + case "$arg" in + -h|--help) usage; exit 0 ;; + all) targets+=(hyprland cursor shell alacritty tmux nvim vim) ;; + *) targets+=("$arg") ;; + esac +done + +for target in "${targets[@]}"; do + case "$target" in + hyprland) install_hyprland ;; + sway) install_sway ;; + i3) install_i3 ;; + cursor) install_cursor ;; + shell) install_shell ;; + alacritty) install_alacritty ;; + tmux) install_tmux ;; + nvim) install_nvim ;; + vim) install_vim ;; + *) echo "Unknown target: $target"; usage; exit 1 ;; + esac +done + +if [ -n "$BACKUP_DIR" ]; then + echo + echo "Backups saved to: $BACKUP_DIR" +fi +echo "Done!" diff --git a/sway/base b/sway/base new file mode 100644 index 0000000..74a8118 --- /dev/null +++ b/sway/base @@ -0,0 +1,331 @@ + +output * scale 1.2 + + +# WORKSPACE NAMES ----------------------------------- +set $ws1 1:ツ +set $ws2 2:ಠ‿ಠ +set $ws3 3:◕‿◕ +set $ws4 4:ʘ‿ʘ +set $ws5 5:˘◡˘ +set $ws6 6:◠‿◠ +set $ws7 7:ᵔᴥᵔ +set $ws8 8:æ + +# DEFAULT STARTUP -------------------------------------- +# Keyboard: caps:swapescape via sway input (replaces setxkbmap) +input * { + xkb_options caps:swapescape + xkb_layout gb +} + +exec --no-startup-id volctl +exec --no-startup-id fcitx5 +exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec --no-startup-id nm-applet --indicator +exec --no-startup-id pamac-tray +# clipit is X11-only; use cliphist + wl-paste instead: +exec wl-paste --watch cliphist store +exec --no-startup-id dunst +# swayidle replaces xautolock +exec swayidle -w timeout 1800 'swaylock -f' before-sleep 'swaylock -f' +exec --no-startup-id waterfox +exec --no-startup-id steam +exec --no-startup-id surfshark + +# picom is X11-only; sway has a built-in compositor — no exec needed + +# PACTL BINDINGS --------------------------------------- + +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle + +# BRIGHTNESSCTL BINDINGS ---------------------------------- + +bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5% +bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%- + +# DEFAULT WINDOW LAYOUT ------------------------------------- + +workspace_layout stacking +default_border pixel 1 +default_floating_border normal +hide_edge_borders none + +# KEYBINDS -------------------------------------------------- + +set $mod Mod4 + +# change borders +bindsym $mod+u border none +bindsym $mod+y border pixel 1 +bindsym $mod+n border normal + +# Use Mouse+$mod to drag floating windows +floating_modifier $mod normal + +# start a terminal +bindsym $mod+Return exec kitty +# kill focused window +bindsym $mod+Shift+q kill +# start program launcher +bindsym $mod+d exec --no-startup-id wofi --show drun --style ~/scripts/wofi/wofi_style.css + +bindsym $mod+Ctrl+m exec pavucontrol + +# Start Applications +bindsym $mod+F2 exec waterfox +bindsym $mod+F3 exec kitty -e ranger +bindsym $mod+Shift+F3 exec pcmanfm +bindsym $mod+F5 exec kitty -e 'mocp' +# picom keybinds removed (not applicable on Wayland) +bindsym $mod+Shift+d --release exec "killall dunst; exec notify-send 'restart dunst'" +# Screenshots: grim + slurp replace i3-scrot / flameshot +bindsym Print exec grim -g "$(slurp)" +bindsym $mod+Print exec grim -g "$(swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')" +bindsym $mod+Shift+Print exec grim -g "$(slurp)" +# xkill not available on Wayland; swaymsg kill is the closest equivalent +bindsym $mod+Ctrl+x exec swaymsg kill + +focus_follows_mouse yes + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# alternatively, you can use the cursor 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 + +# workspace back and forth (with/without active container) +workspace_auto_back_and_forth yes +bindsym $mod+b workspace back_and_forth +bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth + +# split orientation +bindsym $mod+g split h;exec notify-send 'tile horizontally' +bindsym $mod+v split v;exec notify-send 'tile vertically' +bindsym $mod+q split toggle + +# toggle fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking;exec notify-send 'layout stacking' +bindsym $mod+w layout tabbed; exec notify-send 'layout tabbed' +bindsym $mod+e layout toggle split; exec notify-send 'layout split' + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# toggle sticky +bindsym $mod+Shift+s sticky toggle + +# focus the parent container +bindsym $mod+a focus parent + +# 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. +bindsym $mod+minus scratchpad show + +#navigate workspaces next / previous +bindsym $mod+Ctrl+Right workspace next +bindsym $mod+Ctrl+Left workspace prev + + +# switch to workspace +bindsym $mod+1 workspace $ws1 +bindsym $mod+2 workspace $ws2 +bindsym $mod+3 workspace $ws3 +bindsym $mod+4 workspace $ws4 +bindsym $mod+5 workspace $ws5 +bindsym $mod+6 workspace $ws6 +bindsym $mod+7 workspace $ws7 +bindsym $mod+8 workspace $ws8 + +# Move focused container to workspace +bindsym $mod+Ctrl+1 move container to workspace $ws1 +bindsym $mod+Ctrl+2 move container to workspace $ws2 +bindsym $mod+Ctrl+3 move container to workspace $ws3 +bindsym $mod+Ctrl+4 move container to workspace $ws4 +bindsym $mod+Ctrl+5 move container to workspace $ws5 +bindsym $mod+Ctrl+6 move container to workspace $ws6 +bindsym $mod+Ctrl+7 move container to workspace $ws7 +bindsym $mod+Ctrl+8 move container to workspace $ws8 + +# Move to workspace with focused container +bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 +bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 +bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 +bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 +bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 +bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 +bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 +bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 + +# reload the configuration file +bindsym $mod+Shift+c reload + +# restart sway inplace +bindsym $mod+Shift+r 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' + +# Set shut down, restart and locking features +bindsym $mod+0 mode "$mode_system" +set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown +mode "$mode_system" { + bindsym l exec swaylock -f, mode "default" + bindsym s exec systemctl suspend, mode "default" + bindsym u exec swaymsg exit, mode "default" + bindsym e exit + bindsym h exec systemctl hibernate, mode "default" + bindsym r exec systemctl reboot + bindsym Shift+s exec systemctl poweroff + + # exit system mode: "Enter" or "Escape" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Resize window (you can also use the mouse for that) +bindsym $mod+r mode "resize" +mode "resize" { + bindsym h resize shrink width 5 px or 5 ppt + bindsym j resize grow height 5 px or 5 ppt + bindsym k resize shrink height 5 px or 5 ppt + bindsym l resize grow width 5 px or 5 ppt + + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +# Gaps mode +set $mode_gaps Gaps: (o) outer, (i) inner +set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) +set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) +bindsym $mod+Shift+g mode "$mode_gaps" + +mode "$mode_gaps" { + bindsym o mode "$mode_gaps_outer" + bindsym i mode "$mode_gaps_inner" + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_inner" { + bindsym plus gaps inner current plus 5 + bindsym minus gaps inner current minus 5 + bindsym 0 gaps inner current set 0 + + bindsym Shift+plus gaps inner all plus 5 + bindsym Shift+minus gaps inner all minus 5 + bindsym Shift+0 gaps inner all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + +mode "$mode_gaps_outer" { + bindsym plus gaps outer current plus 5 + bindsym minus gaps outer current minus 5 + bindsym 0 gaps outer current set 0 + + bindsym Shift+plus gaps outer all plus 5 + bindsym Shift+minus gaps outer all minus 5 + bindsym Shift+0 gaps outer all set 0 + + bindsym Return mode "default" + bindsym Escape mode "default" +} + + +# Lock screen +bindsym $mod+9 exec --no-startup-id swaylock -f + +# APPLICATION WORKSPACES ---------------------------------------------------- +assign [app_id="Surfshark"] $ws8 + +# APPLICATION WINDOW MODES -------------------------------------------------- +# Note: use app_id for native Wayland apps, class for XWayland apps +for_window [title="Picture-in-Picture"] floating disable border pixel 0 + +for_window [title="alsamixer"] floating enable border pixel 1 +for_window [class="calamares"] floating enable border normal +for_window [class="Clipgrab"] floating enable +for_window [title="File Transfer*"] floating enable +for_window [class="fpakman"] floating enable +for_window [class="Galculator"] floating enable border pixel 1 +for_window [class="GParted"] floating enable border normal +for_window [title="i3_help"] floating enable sticky enable border normal +for_window [class="Lightdm-settings"] floating enable +for_window [class="Lxappearance"] floating enable sticky enable border normal +for_window [class="Manjaro-hello"] floating enable +for_window [class="Manjaro Settings Manager"] floating enable border normal +for_window [title="MuseScore: Play Panel"] floating enable +for_window [class="Nitrogen"] floating enable sticky enable border normal +for_window [class="Oblogout"] fullscreen enable +for_window [class="octopi"] floating enable +for_window [title="About Pale Moon"] floating enable +for_window [class="Pamac-manager"] floating enable +for_window [app_id="pavucontrol"] floating enable +for_window [class="qt5ct"] floating enable sticky enable border normal +for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal +for_window [class="Simple-scan"] floating enable border normal +for_window [class="(?i)System-config-printer.py"] floating enable border normal +for_window [class="Skype"] floating enable border normal +for_window [class="Timeset-gui"] floating enable border normal +for_window [class="(?i)virtualbox"] floating enable border normal +for_window [class="Xfburn"] floating enable + +# switch to workspace with urgent window automatically +for_window [urgent=latest] focus + +# AESTETICS ---------------------------------------------------------------- +exec_always waybar -c ~/scripts/waybar/waybar_sway_config.json -s ~/scripts/waybar/waybar_style.css + +# Theme colors +# class border backgr. text indic. +client.focused $color_secondary $color_primary $color_text_dark $color_primary +client.focused_inactive $color_primary $color_alt_bg $color_text_light $color_tertiary +client.unfocused $color_gray $color_alt_bg $color_text_light $color_primary +client.urgent $color_tertiary $color_alt_bg $color_white $color_tertiary +client.placeholder $color_bg $color_bg $color_white $color_bg + +client.background $color_bg + +# Set inner/outer gaps +gaps inner 10 +gaps outer 0 +smart_gaps on + +smart_borders on diff --git a/sway/build.sh b/sway/build.sh new file mode 100755 index 0000000..6aa190d --- /dev/null +++ b/sway/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")" +cat colors.conf base > config diff --git a/sway/config b/sway/config index 5db85f9..5c91605 100644 --- a/sway/config +++ b/sway/config @@ -1,4 +1,13 @@ -include ~/scripts/sway/colors.conf +set $color_primary #55ffbb +set $color_secondary #62ff57 +set $color_tertiary #ff579a +set $color_bg #1b110e +set $color_bg_secondary #000000 +set $color_alt_bg #024942 +set $color_gray #222222 +set $color_text_light #F0F0F0 +set $color_text_dark #1b110e +set $color_white #FFFFFF output * scale 1.2 diff --git a/waybar/base.css b/waybar/base.css new file mode 100644 index 0000000..1b1ceb3 --- /dev/null +++ b/waybar/base.css @@ -0,0 +1,123 @@ + +* { + font-family: "URWGothic-Book", monospace; + font-size: 16px; + min-height: 0; + border: none; + border-radius: 0; + padding: 0; + margin: 0; +} + +window#waybar { + background-color: @color_bg; + color: @color_primary; +} + +/* Workspaces */ +#workspaces button { + padding: 0 8px; + background-color: @color_alt_bg; + color: @color_white; + border-bottom: 2px solid transparent; +} + +#workspaces button:hover { + background-color: @color_alt_bg; + border-bottom: 2px solid @color_primary; + box-shadow: none; +} + +#workspaces button.focused, +#workspaces button.active { + background-color: @color_bg; + color: @color_white; + border-bottom: 2px solid @color_primary; +} + +#workspaces button.urgent { + background-color: @color_tertiary; + color: @color_white; +} + +#mode { + background-color: @color_tertiary; + color: @color_text_dark; + padding: 0 8px; + font-style: italic; +} + +/* Right-side modules */ +#custom-greetings, +#custom-history, +#custom-claudebar, +#pulseaudio, +#cpu, +#memory, +#disk, +#network, +#battery, +#clock { + padding: 0 10px; + color: @color_primary; +} + +/* Pink separators between modules (matching i3bar separator color) */ +#custom-history, +#custom-claudebar, +#pulseaudio, +#cpu, +#memory, +#disk, +#network, +#battery, +#clock { + border-left: 1px solid @color_tertiary; +} + +#battery.warning { + color: @color_secondary; +} + +#battery.critical { + color: @color_tertiary; +} + +#custom-greetings { + color: @color_secondary; +} + +#clock { + color: @color_tertiary; +} + +/* claudebar severity classes */ +#custom-claudebar.low { + color: @color_primary; +} + +#custom-claudebar.mid { + color: @color_secondary; +} + +#custom-claudebar.high { + color: @color_tertiary; +} + +#custom-claudebar.critical { + color: @color_tertiary; +} + +#tray { + padding: 0 8px; + border-left: 1px solid @color_tertiary; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: @color_tertiary; +} diff --git a/waybar/build.sh b/waybar/build.sh new file mode 100755 index 0000000..f8e185a --- /dev/null +++ b/waybar/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")" +cat colors.css base.css > style.css diff --git a/waybar/style.css b/waybar/style.css index bf58241..a0fe21f 100644 --- a/waybar/style.css +++ b/waybar/style.css @@ -1,4 +1,13 @@ -@import "colors.css"; +@define-color color_primary #55ffbb; +@define-color color_secondary #62ff57; +@define-color color_tertiary #ff579a; +@define-color color_bg #1b110e; +@define-color color_bg_secondary #000000; +@define-color color_alt_bg #024942; +@define-color color_gray #222222; +@define-color color_text_light #F0F0F0; +@define-color color_text_dark #1b110e; +@define-color color_white #FFFFFF; * { font-family: "URWGothic-Book", monospace; diff --git a/wofi/base.css b/wofi/base.css new file mode 100644 index 0000000..c6d7834 --- /dev/null +++ b/wofi/base.css @@ -0,0 +1,49 @@ + +window { + margin: 0px; + border: 1px solid @color_primary; + background-color: @color_bg; + border-radius: 8px; +} + +#input { + padding: 4px 8px; + margin: 6px; + color: @color_text_light; + background-color: @color_alt_bg; + border: 1px solid @color_primary; + border-radius: 4px; +} + +#inner-box { + background-color: @color_bg; +} + +#outer-box { + margin: 4px; + padding: 4px; + background-color: @color_bg; +} + +#scroll { + margin: 0px; + padding: 4px; +} + +#text { + margin: 2px 8px; + color: @color_primary; +} + +#entry { + border-radius: 4px; +} + +#entry:selected { + background-color: @color_alt_bg; + border: 1px solid @color_primary; +} + +#text:selected { + color: @color_tertiary; +} diff --git a/wofi/build.sh b/wofi/build.sh new file mode 100755 index 0000000..f8e185a --- /dev/null +++ b/wofi/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +cd "$(dirname "$0")" +cat colors.css base.css > style.css diff --git a/wofi/style.css b/wofi/style.css index 259dc41..62e10af 100644 --- a/wofi/style.css +++ b/wofi/style.css @@ -1,4 +1,13 @@ -@import "/home/adamf/scripts/wofi/colors.css"; +@define-color color_primary #55ffbb; +@define-color color_secondary #62ff57; +@define-color color_tertiary #ff579a; +@define-color color_bg #1b110e; +@define-color color_bg_secondary #000000; +@define-color color_alt_bg #024942; +@define-color color_gray #222222; +@define-color color_text_light #F0F0F0; +@define-color color_text_dark #1b110e; +@define-color color_white #FFFFFF; window { margin: 0px;