Compare commits
25 Commits
5a00782b36
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 649e324ac7 | |||
| b58b194797 | |||
| ae154bcaa7 | |||
| e3b628dab1 | |||
| 09f3684972 | |||
| ebe112090f | |||
| 682e0f962e | |||
| 4108cce1a4 | |||
| 6a0f661332 | |||
| b7fc65e62d | |||
| f45424899d | |||
| 7c7b3ff006 | |||
| eca5a12a8b | |||
| e603a7cb77 | |||
| eec1d53ad6 | |||
| 22536afc79 | |||
| d5dfbe16ee | |||
| 07f6759d0d | |||
| fbf475fa82 | |||
| 2222453712 | |||
| 0a3010e072 | |||
| a05a2c5ca3 | |||
| 7cb84800e4 | |||
| 22c8288c93 | |||
| 27d14261fb |
231
.config/README.md
Normal file
231
.config/README.md
Normal file
@@ -0,0 +1,231 @@
|
||||
# Hyprland Configuration Requirements
|
||||
|
||||
This README contains all the necessary applications and dependencies required to run the Hyprland configuration found in this repository. My dotfiles are based on the CachyOS Hyprland configuration but extended with additional features and color schemes using wallust and other stuff.
|
||||
|
||||
## Packages used
|
||||
|
||||
### Window Management
|
||||
- **Hyprland**: Tiling window manager
|
||||
- **Waybar**: Status bar with system information
|
||||
- **Mako**: Notification daemon
|
||||
|
||||
### Application Launching
|
||||
- **Tofi**: Application launcher (Super + Space)
|
||||
- **Alacritty**: Terminal emulator (Super + Return)
|
||||
- **Dolphin**: File manager (Super + E)
|
||||
|
||||
### Screenshots and Recording
|
||||
- **Hyprshot**: Window, output, and region screenshots
|
||||
- **Grim + Slurp**: Screen capture selection
|
||||
- **Swappy**: Screenshot annotation
|
||||
- **wl-screenrec**: Screen recording with compression options
|
||||
|
||||
### System Controls
|
||||
- **Swaylock**: Screen locker with customizable options
|
||||
- **Brightnessctl**: Screen brightness control
|
||||
- **Playerctl**: Media playback control
|
||||
- **Volume controls**: Via PulseAudio/WirePlumber
|
||||
|
||||
### Utilities
|
||||
- **Cliphist**: Clipboard history (Super + C)
|
||||
- **Hyprpicker**: Color picker (Super + P)
|
||||
- **Waypaper**: Wallpaper management
|
||||
- **Wallust**: Color scheme generation
|
||||
- **cmatrix** & **swaylock**: Matrix style screen lock
|
||||
- **hypridle**: Idle management daemon
|
||||
## Core Dependencies5
|
||||
|
||||
Install all packages:
|
||||
|
||||
```bash
|
||||
yay -S hyprland hyprpaper hyprshot hyprpicker waybar mako swaylock swayidle grim slurp swappy alacritty tofi dolphin blueman-applet fcitx5 nm-applet polkit-kde-agent wob wl-screenrec ffmpeg wireplumber pulseaudio playerctl brightnessctl btop xsensors wl-paste xclip cliphist wl-copy waypaper wallust gnome-calculator ttf-hack cmatrix swaylock
|
||||
```
|
||||
|
||||
## Required Packages
|
||||
|
||||
### Hyprland and Core Wayland Components
|
||||
```bash
|
||||
yay -S hyprland hyprpaper hyprshot hyprpicker
|
||||
```
|
||||
|
||||
### Window Manager and Desktop Environment
|
||||
```bash
|
||||
yay -S waybar mako swaylock swayidle grim slurp swappy
|
||||
```
|
||||
|
||||
### Terminal and Application Launcher
|
||||
```bash
|
||||
yay -S alacritty tofi
|
||||
```
|
||||
|
||||
### File Manager and System Tools
|
||||
```bash
|
||||
yay -S dolphin blueman-applet fcitx5 nm-applet
|
||||
```
|
||||
|
||||
### Authentication and System Integration
|
||||
```bash
|
||||
yay -S polkit-kde-agent wob
|
||||
```
|
||||
|
||||
### Screenshot and Screen Recording
|
||||
```bash
|
||||
yay -S hyprshot grim slurp swappy wl-screenrec ffmpeg
|
||||
```
|
||||
|
||||
### Audio and Media Control
|
||||
```bash
|
||||
yay -S wireplumber pulseaudio pactl playerctl
|
||||
```
|
||||
|
||||
### System Monitoring and Hardware Control
|
||||
```bash
|
||||
yay -S brightnessctl btop xsensors
|
||||
```
|
||||
|
||||
### Clipboard and Utility Tools
|
||||
```bash
|
||||
yay -S wl-paste xclip cliphist wl-copy
|
||||
```
|
||||
|
||||
### Wallpaper Management
|
||||
```bash
|
||||
yay -S waypaper wallust
|
||||
```
|
||||
|
||||
### Calculator and Additional Apps
|
||||
```bash
|
||||
yay -S gnome-calculator
|
||||
```
|
||||
|
||||
### Fonts (if using Hack font for swaylock)
|
||||
```bash
|
||||
yay -S ttf-hack
|
||||
```
|
||||
|
||||
## Optional Dependencies
|
||||
|
||||
### Alternative Launcher
|
||||
|
||||
Some keybinds use `wofi`, `rofi` or `fuzzel` as an alternative to `tofi`, e.g. the `Super + S` for wl-screenrec recording. You can install any of these launchers based on your preference but wallust is configured to use `tofi` by default.
|
||||
|
||||
```bash
|
||||
yay -S rofi wofi fuzzel
|
||||
```
|
||||
|
||||
### Video Compression (for screen recording)
|
||||
|
||||
The screencasting script uses `ffmpeg` for video compression. Ensure you have it installed:
|
||||
|
||||
```bash
|
||||
yay -S ffmpeg
|
||||
```
|
||||
|
||||
## Complete Installation Command
|
||||
|
||||
You can install all required packages with this single command:
|
||||
|
||||
```bash
|
||||
yay -S hyprland hyprpaper hyprshot hyprpicker waybar mako swaylock swayidle grim slurp swappy alacritty tofi dolphin blueman-applet fcitx5 nm-applet polkit-kde-agent wob wl-screenrec ffmpeg wireplumber pulseaudio playerctl brightnessctl btop xsensors wl-paste xclip cliphist wl-copy waypaper wallust gnome-calculator ttf-hack
|
||||
```
|
||||
|
||||
## Configuration Structure
|
||||
|
||||
The Hyprland configuration is organized as follows:
|
||||
|
||||
- `hyprland.conf` - Main configuration file that sources other configs
|
||||
- `config/autostart.conf` - Applications that start automatically
|
||||
- `config/keybinds.conf` - Keyboard shortcuts and bindings
|
||||
- `config/defaults.conf` - Default applications (terminal, file manager, etc.)
|
||||
- `config/environment.conf` - Environment variables
|
||||
- `scripts/` - Helper scripts for various functions
|
||||
|
||||
## Post-Installation Setup
|
||||
|
||||
1. **Audio Setup**: Ensure PulseAudio or PipeWire is properly configured
|
||||
2. **Input Method**: Configure fcitx5 if needed for international input
|
||||
3. **Bluetooth**: Use blueman-applet for Bluetooth device management
|
||||
4. **Network**: nm-applet provides network management in the system tray
|
||||
5. **Wallpapers**: Use waypaper to set and manage wallpapers
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- If waybar doesn't start, check that all waybar modules dependencies are installed
|
||||
- For audio issues, verify PulseAudio/PipeWire service status
|
||||
- Screen lock issues may require proper PAM configuration
|
||||
- Missing fonts can cause display issues in applications
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
| Keybind | Action | Description |
|
||||
| -------------------------------- | ------------------ | ----------------------------------------- |
|
||||
| **Application Launching** | | |
|
||||
| `Super + Return` | Terminal | Opens Alacritty terminal |
|
||||
| `Super + E` | File Manager | Opens Dolphin file manager |
|
||||
| `Super + Space` | App Launcher | Opens Tofi application launcher |
|
||||
| `Super + Shift + P` | Calculator | Opens gnome-calculator |
|
||||
| **Window Management** | | |
|
||||
| `Super + Q` | Close Window | Closes current window (not kill) |
|
||||
| `Super + V` | Toggle Float | Switches between floating and tiling mode |
|
||||
| `Super + F` | Fullscreen | Toggles fullscreen mode |
|
||||
| `Super + Y` | Pin Window | Pin window (shows on all workspaces) |
|
||||
| `Super + J` | Toggle Split | Toggles window split mode |
|
||||
| `Super + K` | Toggle Group | Toggles window group mode |
|
||||
| `Super + Tab` | Group Next | Switches to next window in group |
|
||||
| **Window Movement** | | |
|
||||
| `Super + Shift + ←/→/↑/↓` | Move Window | Move active window in direction |
|
||||
| `Super + ←/→/↑/↓` | Move Focus | Move focus in direction |
|
||||
| `Super + Mouse Left` | Move Window | Drag window with mouse |
|
||||
| `Super + Mouse Right` | Resize Window | Resize window with mouse |
|
||||
| **Window Resizing** | | |
|
||||
| `Super + Ctrl + Shift + ←/→/↑/↓` | Quick Resize | Quick resize in direction |
|
||||
| `Super + Ctrl + Shift + H/J/K/L` | Quick Resize | Quick resize (vim keys) |
|
||||
| `Super + R` | Resize Mode | Activate resize mode |
|
||||
| **In Resize Mode:** | | |
|
||||
| `←/→/↑/↓` or `H/J/K/L` | Resize | Resize window in direction |
|
||||
| `Escape` | Exit Resize | Exit resize mode |
|
||||
| **Workspace Management** | | |
|
||||
| `Super + 1-9,0` | Switch Workspace | Switch to workspace 1-10 |
|
||||
| `Super + Ctrl + 1-9,0` | Move & Switch | Move window and switch to workspace |
|
||||
| `Super + Shift + 1-9,0` | Move Silent | Move window to workspace (stay current) |
|
||||
| `Super + Ctrl + ←/→` | Move & Switch | Move window and switch workspace |
|
||||
| `Super + Alt + ←/→` | Switch Workspace | Switch to previous/next workspace |
|
||||
| `Super + , / .` | Scroll Workspaces | Scroll through workspaces |
|
||||
| `Super + /` | Previous Workspace | Switch to previous workspace |
|
||||
| `Super + Scroll` | Scroll Workspaces | Scroll workspaces with mouse |
|
||||
| **Special Workspaces** | | |
|
||||
| `Super + -` | Move to Special | Move window to special workspace |
|
||||
| `Super + =` | Toggle Special | Toggle special workspace |
|
||||
| `Super + F1` | Scratchpad | Toggle scratchpad workspace |
|
||||
| `Super + Alt + Shift + F1` | Move to Scratchpad | Move window to scratchpad |
|
||||
| **Screenshots & Recording** | | |
|
||||
| `Super + A` | Capture Selection | Screen capture selection with grim/slurp |
|
||||
| `Print` | Screenshot Monitor | Screenshot current monitor |
|
||||
| `Super + Print` | Screenshot Window | Screenshot current window |
|
||||
| `Shift + Print` | Screenshot Region | Screenshot selected region |
|
||||
| `Super + S` | Record/Screenshot | Advanced recording/screenshot script |
|
||||
| **System Controls** | | |
|
||||
| `Super + L` | Lock Screen | Lock screen with swaylock-fancy |
|
||||
| `Super + Shift + M` | Exit Hyprland | Terminate user session |
|
||||
| `Super + O` | Reload Waybar | Restart Waybar |
|
||||
| `Super + G` | Remove Gaps | Remove gaps between windows |
|
||||
| `Super + Shift + G` | Default Gaps | Set CachyOS default gaps |
|
||||
| **Media Controls** | | |
|
||||
| `XF86AudioPlay` | Play/Pause | Toggle media playback |
|
||||
| `XF86AudioNext` | Next Track | Next media track |
|
||||
| `XF86AudioPrev` | Previous Track | Previous media track |
|
||||
| `XF86AudioRaiseVolume` | Volume Up | Increase volume |
|
||||
| `XF86AudioLowerVolume` | Volume Down | Decrease volume |
|
||||
| `XF86AudioMute` | Mute Toggle | Toggle audio mute |
|
||||
| `XF86MonBrightnessUp` | Brightness Up | Increase screen brightness (+5%) |
|
||||
| `XF86MonBrightnessDown` | Brightness Down | Decrease screen brightness (-5%) |
|
||||
| **Utilities** | | |
|
||||
| `Super + P` | Color Picker | Launch hyprpicker |
|
||||
| `Super + C` | Clipboard History | Open clipboard history with tofi |
|
||||
|
||||
## Customization
|
||||
|
||||
- Edit `config/defaults.conf` to change default applications
|
||||
- Modify `config/keybinds.conf` to customize keyboard shortcuts
|
||||
- Adjust `config/autostart.conf` to change startup applications
|
||||
- Update waybar configuration in `~/.config/waybar/` for status bar customization
|
||||
@@ -6,7 +6,7 @@ source = ~/.config/hypr/config/defaults.conf
|
||||
|
||||
# Autostart wiki https://wiki.hyprland.org/0.45.0/Configuring/Keywords/#executing #
|
||||
|
||||
exec-once = waybar &
|
||||
exec-once = /home/michaelb/.config/hypr/scripts/launch-waybar.sh &
|
||||
exec-once = blueman-applet &
|
||||
exec-once = fcitx5 -d &
|
||||
exec-once = mako &
|
||||
@@ -23,3 +23,8 @@ exec-once = dbus-update-activation-environment --systemd &
|
||||
|
||||
# ## Idle configuration
|
||||
exec-once = $idlehandler
|
||||
|
||||
# Clipboard fix
|
||||
# https://github.com/hyprwm/Hyprland/issues/2319#issuecomment-2409983376
|
||||
exec-once = wl-paste -t text -w xclip -selection clipboard &
|
||||
exec-once = wl-paste --watch cliphist store &
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
# ┃ Colors Configuration ┃
|
||||
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
||||
|
||||
$cachylgreen = rgba(8fbcbbff) # Teal
|
||||
$cachymgreen = rgba(88c0d0ff) # Icy Blue
|
||||
$cachydgreen = rgba(81a1c1ff) # Frost
|
||||
$cachylblue = rgba(5e81acff) # Desaturated Blue
|
||||
$cachymblue = rgba(4c566aff) # Slate
|
||||
$cachydblue = rgba(3b4252ff) # Dark Background
|
||||
$cachywhite = rgba(d8dee9ff) # Snow
|
||||
$cachygrey = rgba(e5e9f0ff) # Light Gray
|
||||
$cachygray = rgba(434c5eff) # Dark Gray
|
||||
$wallpaper = /usr/share/wallpapers/downloaded/pexels-zetong-li-880728-18780512.jpg
|
||||
$background = rgb(0D0F10)
|
||||
$foreground = rgb(FCF1D3)
|
||||
$color0 = rgb(38393A)
|
||||
$color1 = rgb(7F4E47)
|
||||
$color2 = rgb(7D7F54)
|
||||
$color3 = rgb(8B7C7D)
|
||||
$color4 = rgb(61868C)
|
||||
$color5 = rgb(D2D1E6)
|
||||
$color6 = rgb(F5D782)
|
||||
$color7 = rgb(F2E3B8)
|
||||
$color8 = rgb(A99F81)
|
||||
$color9 = rgb(7F4E47)
|
||||
$color10 = rgb(7D7F54)
|
||||
$color11 = rgb(8B7C7D)
|
||||
$color12 = rgb(61868C)
|
||||
$color13 = rgb(D2D1E6)
|
||||
$color14 = rgb(F5D782)
|
||||
$color15 = rgb(F2E3B8)
|
||||
@@ -8,8 +8,10 @@ source = ~/.config/hypr/config/colors.conf
|
||||
|
||||
decoration {
|
||||
active_opacity = 1
|
||||
inactive_opacity = 0.6
|
||||
rounding = 3
|
||||
inactive_opacity = 0.7
|
||||
rounding = 10
|
||||
dim_inactive = true
|
||||
dim_strength = 0.1
|
||||
|
||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#blur
|
||||
blur {
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
$filemanager = dolphin
|
||||
$applauncher = tofi-drun --drun-launch=true
|
||||
#$applauncher = rofi -show combi -modi window,run,combi -combi-modi window,run
|
||||
$terminal = alacritty
|
||||
$terminal = kitty
|
||||
$idlehandler = swayidle -w timeout 300 'swaylock -f -c 000000' before-sleep 'swaylock -f -c 000000'
|
||||
$capturing = grim -g "$(slurp)" - | swappy -f -
|
||||
|
||||
@@ -21,16 +21,11 @@ bindd = $mainMod, J, Toggles curren window split mode, togglesplit, # dwindle
|
||||
bindd = $mainMod, K, Toggles current window group mode (ungroup all related), togglegroup,
|
||||
bindd = $mainMod, Tab, Switches to the next window in the group, changegroupactive, f
|
||||
|
||||
# ======= Toggle Gaps =======
|
||||
|
||||
bindd = $mainMod SHIFT, G, Set CachyOS default gaps, exec, hyprctl --batch "keyword general:gaps_out 5;keyword general:gaps_in 3"
|
||||
bindd = $mainMod, G, Remove gaps between window, exec, hyprctl --batch "keyword general:gaps_out 0;keyword general:gaps_in 0"
|
||||
|
||||
# ======= Volume Control =======
|
||||
|
||||
bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% && pactl get-sink-volume @DEFAULT_SINK@ | grep -oP '\d+(?=%)' | awk '{if($1>100) system("pactl set-sink-volume @DEFAULT_SINK@ 100%")}' # Raise Volume
|
||||
bindel = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% # Lower Volume
|
||||
bindel = , XF86AudioMute, exec, amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > /tmp/$HYPRLAND_INSTANCE_SIGNATURE.wob #Mutes player audio
|
||||
bindel = , XF86AudioRaiseVolume, exec, ~/.config/hypr/scripts/volume-helper.sh up
|
||||
bindel = , XF86AudioLowerVolume, exec, ~/.config/hypr/scripts/volume-helper.sh down
|
||||
bindel = , XF86AudioMute, exec, ~/.config/hypr/scripts/volume-helper.sh toggle
|
||||
|
||||
# ======= Playback Control =======
|
||||
|
||||
@@ -43,7 +38,7 @@ bindd = , XF86AudioPrev, Previous track, exec, playerctl previous
|
||||
bindel = , XF86MonBrightnessUp, exec, brightnessctl s +5% #Increases brightness 5%
|
||||
bindel = , XF86MonBrightnessDown, exec, brightnessctl s 5%- #Decreases brightness 5%
|
||||
bindd = $mainMod SHIFT, P, Runs the calculator application, exec, gnome-calculator
|
||||
bindd = $mainMod, L, Lock the screen, exec, swaylock-fancy -e -K -p 10 -f Hack-Regular
|
||||
bindd = $mainMod, L, Lock the screen, exec, ~/.config/swaylock/lockscript.sh
|
||||
bindd = $mainMod, O, Reload/restarts Waybar, exec, killall -SIGUSR2 waybar
|
||||
|
||||
# ======= Window Actions =======
|
||||
@@ -141,7 +136,7 @@ bindd = $mainMod, slash, Switch to the previous workspace, workspace, previous
|
||||
bindd = $mainMod, minus, Move active window to Special workspace, movetoworkspace,special
|
||||
bindd = $mainMod, equal, Toggles the Special workspace, togglespecialworkspace, special
|
||||
bindd = $mainMod, F1, Call special workspace scratchpad, togglespecialworkspace, scratchpad
|
||||
bindd = $mainMod ALT SHIFT, F1, Move active window to special workspace scratchpad, movetoworkspacesilent, special:scratchpad
|
||||
bindd = $mainMod ALT SHIFT, F1, Move active window to s~/.config/hypr/scripts/pecial workspace scratchpad, movetoworkspacesilent, special:scratchpad
|
||||
|
||||
# ======= Screenshot =======
|
||||
# Screenshot a window
|
||||
@@ -150,9 +145,16 @@ bind = $mainMod, PRINT, exec, hyprshot -m window
|
||||
bind = , PRINT, exec, hyprshot -m output
|
||||
# Screenshot a region
|
||||
bind = $shiftMod, PRINT, exec, hyprshot -m region
|
||||
# Screenrec
|
||||
bind = $mainMod, S, exec, ~/.config/hypr/scripts/record-or-screenshot.sh
|
||||
|
||||
# ======= Color Picker =======
|
||||
bindd = $mainMod, P, Launch hyprpicker to pick a color, exec, hyprpicker -a
|
||||
|
||||
# ======= Additional Settings =======
|
||||
|
||||
bind = $mainMod, c, exec, cliphist list | tofi --prompt-text="clip:" | cliphist decode | wl-copy
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Binds
|
||||
binds {
|
||||
allow_workspace_cycles = 1
|
||||
@@ -161,3 +163,18 @@ binds {
|
||||
movefocus_cycles_fullscreen = true
|
||||
window_direction_monitor_fallback = true
|
||||
}
|
||||
|
||||
# Toggle Waybar
|
||||
bind = $mainMod, W, exec, killall -SIGUSR1 waybar
|
||||
|
||||
# ======= Monitors =======
|
||||
# Toggle Monitor Flip
|
||||
bind = $mainMod, F7, exec, ~/.config/hypr/scripts/rotate_current_screen.sh
|
||||
|
||||
# One-key flip: externals on/off
|
||||
bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh toggle-externals
|
||||
|
||||
# Explicit profiles
|
||||
bind = $mainMod, F8, exec, ~/.config/hypr/scripts/monitor-toggle.sh laptop
|
||||
bind = $mainMod, F9, exec, ~/.config/hypr/scripts/monitor-toggle.sh dual
|
||||
bind = $mainMod, F10, exec, ~/.config/hypr/scripts/monitor-toggle.sh triple
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
# Monitor wiki https://wiki.hyprland.org/0.45.0/Configuring/Monitors/
|
||||
|
||||
monitor = eDP-2, highres@highrr, 0x0, 1, vrr, 0
|
||||
monitor = DP-2, 1920x1080@60, auto-left, 1, vrr, 0
|
||||
monitor = DP-2, highres@highrr, auto-left, 1, vrr, 0
|
||||
|
||||
monitor = HDMI-A-1, highres@highrr, auto-left, 1, transform, 1
|
||||
|
||||
# If you need to scale things like steam etc, please uncomment these lines.
|
||||
# Adjust GDK_SCALE accordingly to your liking.
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
|
||||
source = ~/.config/hypr/config/colors.conf
|
||||
|
||||
# Variables wiki https://wiki.hyprland.org/0.45.0/Configuring/Variables/ #
|
||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#general
|
||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 1
|
||||
gaps_out = 2
|
||||
border_size = 2
|
||||
col.active_border = $cachylgreen
|
||||
col.inactive_border = $cachymblue
|
||||
gaps_in = 2
|
||||
gaps_out = 1
|
||||
border_size = 1
|
||||
col.active_border = $color4
|
||||
col.inactive_border = $color2
|
||||
layout = dwindle # master|dwindle
|
||||
resize_on_border = true
|
||||
extend_border_grab_area = 10
|
||||
@@ -32,39 +31,42 @@ gestures {
|
||||
|
||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#group
|
||||
group {
|
||||
col.border_active = $cachydgreen
|
||||
col.border_inactive = $cachylgreen
|
||||
col.border_locked_active = $cachymgreen
|
||||
col.border_locked_inactive = $cachydblue
|
||||
col.border_active = $color6
|
||||
col.border_inactive = $color2
|
||||
col.border_locked_active = $color3
|
||||
col.border_locked_inactive = $color0
|
||||
|
||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#groupbar
|
||||
groupbar {
|
||||
font_size = 13
|
||||
height = 15
|
||||
indicator_height = 2
|
||||
rounding = 0
|
||||
font_family = "Fira Sans"
|
||||
text_color = 0xbbffffff
|
||||
height = 1
|
||||
indicator_height = 16
|
||||
rounding = 2
|
||||
font_family = "Roboto Sanss"
|
||||
text_color = $foreground
|
||||
text_offset = -8
|
||||
font_weight_active = ultraheavy
|
||||
font_weight_inactive = normal
|
||||
col.active = $cachydgreen
|
||||
col.inactive = $cachylgreen
|
||||
col.locked_active = $cachymgreen
|
||||
col.locked_inactive = $cachydblue
|
||||
font_weight_inactive = semibold
|
||||
col.active = $color6
|
||||
col.inactive = $color2
|
||||
col.locked_active = $color3
|
||||
col.locked_inactive = $color0
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#misc
|
||||
misc {
|
||||
font_family = "Fira Sans"
|
||||
splash_font_family = "Fira Sans"
|
||||
disable_hyprland_logo = false
|
||||
col.splash = $cachylgreen
|
||||
background_color = $cachydblue
|
||||
font_family = "Roboto Sans"
|
||||
splash_font_family = "Roboto Sans"
|
||||
disable_hyprland_logo = true
|
||||
col.splash = $color2
|
||||
background_color = $background
|
||||
enable_swallow = true
|
||||
swallow_regex = ^(cachy-browser|firefox|nautilus|nemo|thunar|btrfs-assistant.)$
|
||||
focus_on_activate = true
|
||||
vrr = 2
|
||||
# Hypridle cmatrix fix:
|
||||
session_lock_xray = true
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#render
|
||||
|
||||
@@ -6,40 +6,48 @@
|
||||
|
||||
# Float Necessary Windows
|
||||
windowrule = float, title:Rofi
|
||||
windowrulev2 = float, class:^(org.pulseaudio.pavucontrol)
|
||||
windowrulev2 = float, class:^()$,title:^(Picture in picture)$
|
||||
windowrulev2 = float, class:^()$,title:^(Save File)$
|
||||
windowrulev2 = float, class:^()$,title:^(Open File)$
|
||||
windowrulev2 = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$
|
||||
windowrulev2 = float, class:^(blueman-manager)$
|
||||
windowrulev2 = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
|
||||
windowrulev2 = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
|
||||
windowrulev2 = float, class:^(CachyOSHello)$
|
||||
windowrulev2 = float, class:^(zenity)$
|
||||
windowrulev2 = float, class:^()$,title:^(Steam - Self Updater)$
|
||||
windowrule = float, class:^(org.pulseaudio.pavucontrol)
|
||||
windowrule = float, class:^()$,title:^(Picture in picture)$
|
||||
windowrule = float, class:^()$,title:^(Save File)$
|
||||
windowrule = float, class:^()$,title:^(Open File)$
|
||||
windowrule = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$
|
||||
windowrule = float, class:^(blueman-manager)$
|
||||
windowrule = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
|
||||
windowrule = float, class:^(pomodorolm)$
|
||||
windowrule = float, title:^(Extension:.*)$
|
||||
windowrule = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
|
||||
windowrule = float, class:^(CachyOSHello)$
|
||||
windowrule = float, class:^(zenity)$
|
||||
windowrule = float, class:^()$,title:^(Steam - Self Updater)$
|
||||
windowrule = float, class:^(Zotero)$,title:^(Progress)$
|
||||
# Increase the opacity
|
||||
windowrulev2 = opacity 0.92, class:^(thunar|nemo|dolphin)$
|
||||
windowrulev2 = opacity 0.96, class:^(discord|armcord|webcord)$
|
||||
windowrulev2 = opacity 0.95, title:^(QQ|Telegram)$
|
||||
windowrulev2 = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$
|
||||
windowrule = opacity 0.92, class:^(thunar|nemo|dolphin)$
|
||||
windowrule = opacity 0.96, class:^(discord|armcord|webcord)$
|
||||
windowrule = opacity 0.95, title:^(QQ|Telegram)$
|
||||
windowrule = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$
|
||||
windowrule = opacity 1, class:^(kitty)$
|
||||
# General window rules
|
||||
windowrulev2 = float, title:^(Picture-in-Picture)$
|
||||
windowrulev2 = size 960 540, title:^(Picture-in-Picture)$
|
||||
windowrulev2 = move 25%-, title:^(Picture-in-Picture)$
|
||||
windowrulev2 = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||
windowrulev2 = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||
windowrulev2 = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||
windowrulev2 = pin, title:^(danmufloat)$
|
||||
windowrulev2 = rounding 5, title:^(danmufloat|termfloat)$
|
||||
windowrulev2 = animation slide right, class:^(kitty|Alacritty)$
|
||||
windowrulev2 = noblur, class:^(org.mozilla.firefox)$
|
||||
windowrule = size 260 340, class:^(pomodorolm)$
|
||||
windowrule = float, title:^(Picture-in-Picture)$
|
||||
windowrule = size 960 540, title:^(Picture-in-Picture)$
|
||||
windowrule = move 25%-, title:^(Picture-in-Picture)$
|
||||
windowrule = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp|nwg-look|nwg-displays)$
|
||||
windowrule = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||
windowrule = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||
windowrule = pin, title:^(danmufloat)$
|
||||
windowrule = rounding 5, title:^(danmufloat|termfloat)$
|
||||
windowrule = animation slide right, class:^(kitty|Alacritty)$
|
||||
windowrule = noblur, class:^(org.mozilla.firefox)$
|
||||
windowrule = nodim, class:^(zen)$
|
||||
windowrule = float, title:^(Zotero Settings)$
|
||||
# Decorations related to floating windows on workspaces 1 to 10
|
||||
windowrulev2 = bordersize 2, floating:1, onworkspace:w[fv1-10]
|
||||
windowrulev2 = bordercolor $cachylblue, floating:1, onworkspace:w[fv1-10]
|
||||
windowrulev2 = rounding 8, floating:1, onworkspace:w[fv1-10]
|
||||
windowrule = bordersize 2, floating:1, onworkspace:w[fv1-10]
|
||||
windowrule = bordercolor $color4, floating:1, onworkspace:w[fv1-10]
|
||||
windowrule = rounding 8, floating:1, onworkspace:w[fv1-10]
|
||||
# Decorations related to tiling windows on workspaces 1 to 10
|
||||
windowrulev2 = bordersize 3, floating:0, onworkspace:f[1-10]
|
||||
windowrulev2 = rounding 4, floating:0, onworkspace:f[1-10]
|
||||
windowrule = bordersize 3, floating:0, onworkspace:f[1-10]
|
||||
windowrule = rounding 4, floating:0, onworkspace:f[1-10]
|
||||
windowrule = opacity 0.9, title:^(.+nvim$)
|
||||
# Windows Rules End #
|
||||
|
||||
# Workspaces Rules https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/ #
|
||||
@@ -51,8 +59,8 @@ windowrulev2 = rounding 4, floating:0, onworkspace:f[1-10]
|
||||
# workspace = special:scratchpad, on-created-empty:$applauncher
|
||||
# no_gaps_when_only deprecated instead workspaces rules with selectors can do the same
|
||||
# Smart gaps from 0.45.0 https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#smart-gaps
|
||||
workspace = w[tv1-10], gapsout:5, gapsin:3
|
||||
workspace = f[1], gapsout:5, gapsin:3
|
||||
#workspace = w[tv1-10], gapsout:5, gapsin:3
|
||||
#workspace = f[1], gapsout:5, gapsin:3
|
||||
# Workspaces Rules End #
|
||||
|
||||
# Layers Rules #
|
||||
@@ -61,3 +69,8 @@ layerrule = animation slide top, logout_dialog
|
||||
layerrule = animation slide down, waybar
|
||||
layerrule = animation fade 50%, wallpaper
|
||||
# Layers Rules End #
|
||||
|
||||
# Zotero Libreoffice
|
||||
windowrule = float,class:^(Zotero)$,title:^(Citation Dialog)$
|
||||
windowrule = center,class:^(Zotero)$,title:^(Citation Dialog)$
|
||||
windowrule = noanim,class:^(Zotero)$,title:^(Citation Dialog)$
|
||||
|
||||
@@ -11,3 +11,6 @@ workspace = 5, monitor:DP-2
|
||||
workspace = 6, monitor:DP-2
|
||||
workspace = 7, monitor:DP-2
|
||||
workspace = 8, monitor:DP-2
|
||||
|
||||
workspace = 7, monitor:HDMI-A-1
|
||||
workspace = 8, monitor:HDMI-A-1
|
||||
|
||||
29
.config/hypr/hypridle.conf
Normal file
29
.config/hypr/hypridle.conf
Normal file
@@ -0,0 +1,29 @@
|
||||
general {
|
||||
lock_cmd = pidof swaylock || swaylock # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = brightnessctl -r # lock before suspend.
|
||||
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 150 # 2.5min.
|
||||
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
on-resume = brightnessctl -r # monitor backlight restore.
|
||||
}
|
||||
|
||||
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
|
||||
listener {
|
||||
timeout = 150 # 2.5min.
|
||||
on-timeout = brightnessctl -sd asus::kbd_backlight set 0 # turn off keyboard backlight.
|
||||
on-resume = brightnessctl -rd asus::kbd_backlight # turn on keyboard backlight.
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300 # 5min
|
||||
on-timeout = ~/.config/swaylock/lockscript.sh # lock screen when timeout has passed
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 900 # 15min
|
||||
on-timeout = hyprctl dispatch dpms off 5.5 # screen off when timeout has passed
|
||||
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
|
||||
}
|
||||
33
.config/hypr/scripts/launch-waybar.sh
Executable file
33
.config/hypr/scripts/launch-waybar.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
# start waybar if not started
|
||||
if ! pgrep -x "waybar" > /dev/null; then
|
||||
waybar &
|
||||
fi
|
||||
|
||||
# current checksums
|
||||
current_checksum_config=$(md5sum ~/.config/waybar/config)
|
||||
current_checksum_style=$(md5sum ~/.config/waybar/style.css)
|
||||
current_checksum_colors=$(md5sum ~/.config/waybar/colors-wallust.css)
|
||||
|
||||
# loop forever
|
||||
while true; do
|
||||
# new checksums
|
||||
new_checksum_config=$(md5sum ~/.config/waybar/config)
|
||||
new_checksum_style=$(md5sum ~/.config/waybar/style.css)
|
||||
new_checksum_colors==$(md5sum ~/.config/waybar/colors-wallust.css)
|
||||
|
||||
# if checksums are different
|
||||
if [ "$current_checksum_config" != "$new_checksum_config" ] || [ "$current_checksum_style" != "$new_checksum_style" ] || [ "$current_checksum_colors" != "$new_checksum_colors" ]; then
|
||||
# kill waybar
|
||||
killall waybar
|
||||
|
||||
# start waybar
|
||||
waybar &
|
||||
|
||||
# update checksums
|
||||
current_checksum_config=$new_checksum_config
|
||||
current_checksum_style=$new_checksum_style
|
||||
current_checksum_colors=$new_checksum_colors
|
||||
fi
|
||||
done
|
||||
132
.config/hypr/scripts/monitor-toggle.sh
Executable file
132
.config/hypr/scripts/monitor-toggle.sh
Executable file
@@ -0,0 +1,132 @@
|
||||
#!/usr/bin/env bash
|
||||
# Quick display control for Hyprland
|
||||
# Profiles:
|
||||
# laptop -> keep eDP-2, disable all externals
|
||||
# dual -> eDP-2 + primary external
|
||||
# triple -> eDP-2 + both externals
|
||||
# Toggles:
|
||||
# toggle-externals -> if any external enabled => laptop; else => triple (or dual if only one preset)
|
||||
# dpms-toggle-focused -> blank/unblank the currently focused monitor (does NOT change layout)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PRIMARY="eDP-2"
|
||||
|
||||
# --- exact enable lines (copy from hyprland.conf) ---
|
||||
EXT1='desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1'
|
||||
EXT2='desc:Samsung Electric Company S24F350 H4ZK111233, highres@highrr, auto-right, 1, transform, 1'
|
||||
# Optional fallback by connector (harmless if not present)
|
||||
EXT_FALLBACK='HDMI-A-1, highres@highrr, auto-right, 1'
|
||||
|
||||
# Which external is the "main" one you prefer for Dual:
|
||||
DUAL_MAIN="$EXT1"
|
||||
|
||||
notify() {
|
||||
if command -v notify-send >/dev/null 2>&1; then
|
||||
notify-send -a "Hyprland" "$1" "${2:-}"
|
||||
else
|
||||
[ -n "${2:-}" ] && printf '%s: %s\n' "$1" "$2" >&2 || printf '%s\n' "$1" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
hypr() {
|
||||
local out
|
||||
if ! out="$(hyprctl "$@" 2>&1)"; then
|
||||
notify "hyprctl failed" "$out"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
jqok(){ command -v jq >/dev/null; }
|
||||
monjson(){ hyprctl -j monitors 2>/dev/null || true; }
|
||||
|
||||
any_external_enabled() {
|
||||
if jqok; then
|
||||
monjson | jq -e --arg P "$PRIMARY" '.[] | select(.name!=$P and (.disabled!=true))' >/dev/null
|
||||
else
|
||||
hyprctl monitors | awk -v P="$PRIMARY" '/^Monitor /{gsub(/^Monitor[ \t]+/, "", $0); split($0,a," "); if (a[1]!=P){print; exit 0}}' | grep -q .
|
||||
fi
|
||||
}
|
||||
|
||||
disable_all_externals() {
|
||||
if jqok; then
|
||||
mapfile -t names < <(monjson | jq -r --arg P "$PRIMARY" '.[] | select(.name!=$P) | .name')
|
||||
else
|
||||
mapfile -t names < <(hyprctl monitors | awk -v P="$PRIMARY" '/^Monitor /{gsub(/^Monitor[ \t]+/, "", $0); split($0,a," "); if (a[1]!=P) print a[1]}')
|
||||
fi
|
||||
for n in "${names[@]:-}"; do
|
||||
hypr keyword monitor "$n, disable"
|
||||
done
|
||||
}
|
||||
|
||||
enable_line() {
|
||||
local line="$1"
|
||||
[ -n "$line" ] && hypr keyword monitor "$line"
|
||||
}
|
||||
|
||||
profile_laptop() {
|
||||
disable_all_externals
|
||||
notify "Profile: Laptop-only" "$PRIMARY active, externals disabled"
|
||||
}
|
||||
|
||||
profile_dual() {
|
||||
# Ensure only one external is on
|
||||
disable_all_externals
|
||||
enable_line "$DUAL_MAIN"
|
||||
notify "Profile: Dual" "Enabled main external with preferred transform"
|
||||
}
|
||||
|
||||
profile_triple() {
|
||||
# Ensure both externals are on (and only those two)
|
||||
disable_all_externals
|
||||
enable_line "$EXT1"
|
||||
enable_line "$EXT2"
|
||||
# You can drop EXT_FALLBACK if you don't actually need it:
|
||||
# enable_line "$EXT_FALLBACK"
|
||||
notify "Profile: Triple" "Enabled both externals"
|
||||
}
|
||||
|
||||
toggle_externals() {
|
||||
if any_external_enabled; then
|
||||
profile_laptop
|
||||
else
|
||||
# Prefer triple if we have two presets, else dual
|
||||
if [ -n "$EXT1" ] && [ -n "$EXT2" ]; then
|
||||
profile_triple
|
||||
else
|
||||
profile_dual
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
dpms_toggle_focused() {
|
||||
# Blank/unblank the currently focused output, layout unchanged
|
||||
local name
|
||||
if jqok; then
|
||||
name="$(monjson | jq -r '.[] | select(.focused==true) | .name // empty')"
|
||||
else
|
||||
name="$(hyprctl monitors | awk '$1=="Monitor"{gsub(/^Monitor[ \t]+/,""); split($0,a," "); name=a[1]} /focused: yes/{print name; exit}')"
|
||||
fi
|
||||
[ -z "$name" ] && { notify "No focused monitor" ""; exit 2; }
|
||||
hypr dispatch dpms toggle "$name"
|
||||
notify "DPMS toggle" "$name"
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
laptop) profile_laptop ;;
|
||||
dual) profile_dual ;;
|
||||
triple) profile_triple ;;
|
||||
toggle-externals) toggle_externals ;;
|
||||
dpms-toggle-focused) dpms_toggle_focused ;;
|
||||
*)
|
||||
cat <<EOF
|
||||
Usage:
|
||||
$(basename "$0") laptop # eDP-2 only
|
||||
$(basename "$0") dual # eDP-2 + main external
|
||||
$(basename "$0") triple # eDP-2 + both externals
|
||||
$(basename "$0") toggle-externals # flip between laptop-only and (dual/triple)
|
||||
$(basename "$0") dpms-toggle-focused # blank/unblank focused output (no layout change)
|
||||
EOF
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
176
.config/hypr/scripts/record-or-screenshot.sh
Executable file
176
.config/hypr/scripts/record-or-screenshot.sh
Executable file
@@ -0,0 +1,176 @@
|
||||
#!/bin/env bash
|
||||
|
||||
# Menu launcher wrapper
|
||||
menu_prompt() {
|
||||
if command -v tofi &>/dev/null; then
|
||||
printf "%b" "$1" | tofi --prompt-text="$2"
|
||||
elif command -v fuzzel &>/dev/null; then
|
||||
printf "%b" "$1" | fuzzel -d -p "$2" -w 25 -l 10
|
||||
elif command -v wofi &>/dev/null; then
|
||||
printf "%b" "$1" | wofi --dmenu --prompt="$2"
|
||||
elif command -v rofi &>/dev/null; then
|
||||
printf "%b" "$1" | rofi -dmenu -p "$2"
|
||||
else
|
||||
notify-send "No compatible launcher found" "Install tofi, fuzzel, wofi, or rofi."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Directories
|
||||
SCREENSHOT_DIR="${HOME}/Pictures"
|
||||
RECORDING_DIR="${HOME}/Videos"
|
||||
|
||||
# Ensure directories exist
|
||||
mkdir -p "$SCREENSHOT_DIR" "$RECORDING_DIR"
|
||||
|
||||
# Stop active wl-screenrec session
|
||||
if pgrep -u "$USER" wl-screenrec > /dev/null; then
|
||||
pkill -INT -u "$USER" wl-screenrec
|
||||
notify-send "Recording stopped"
|
||||
|
||||
# Ask if user wants to compress the video
|
||||
COMPRESS=$(menu_prompt "✅ compress\n❌ keep original" "🗜️ Compress video?")
|
||||
if [[ "$COMPRESS" == "✅ compress" ]]; then
|
||||
# Find the most recent video file
|
||||
LATEST_VIDEO=$(find "$RECORDING_DIR" -name "*.mp4" -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -d' ' -f2-)
|
||||
if [[ -n "$LATEST_VIDEO" ]] && [[ -f "$LATEST_VIDEO" ]]; then
|
||||
COMPRESSED_VIDEO="${LATEST_VIDEO%.mp4}_compressed.mp4"
|
||||
notify-send "Compressing video..." "This may take a moment"
|
||||
if ffmpeg -i "$LATEST_VIDEO" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "$COMPRESSED_VIDEO" -y &>/dev/null; then
|
||||
notify-send "Compression complete" "$COMPRESSED_VIDEO"
|
||||
# Ask if user wants to delete original
|
||||
DELETE_ORIGINAL=$(menu_prompt "🗑️ delete original\n📁 keep both" "Delete original?")
|
||||
if [[ "$DELETE_ORIGINAL" == "🗑️ delete original" ]]; then
|
||||
rm "$LATEST_VIDEO"
|
||||
notify-send "Original deleted" "Keeping compressed version only"
|
||||
fi
|
||||
else
|
||||
notify-send "Compression failed" "Keeping original file"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get current outputs dynamically
|
||||
OUTPUTS=$(hyprctl monitors | grep "Monitor" | awk '{print $2}' | paste -sd " " -)
|
||||
|
||||
OPTIONS=$(
|
||||
cat <<EOF
|
||||
screenshot selection
|
||||
$(for OUTPUT in $OUTPUTS; do echo "screenshot $OUTPUT"; done)
|
||||
screenshot all
|
||||
record selection
|
||||
$(for OUTPUT in $OUTPUTS; do echo "record $OUTPUT"; done)
|
||||
record all
|
||||
EOF
|
||||
)
|
||||
|
||||
SELECTION=$(menu_prompt "$OPTIONS" " ")
|
||||
[ -z "$SELECTION" ] && exit 0
|
||||
|
||||
# Ask for audio mode if it's a recording
|
||||
select_audio_mode() {
|
||||
AUDIO_MODE=$(menu_prompt "🎤 mic\n💻 internal\n🚫 none" "🎙️ Audio?")
|
||||
[ -z "$AUDIO_MODE" ] && echo "__cancel__" && return
|
||||
|
||||
case "$AUDIO_MODE" in
|
||||
"🚫 none")
|
||||
echo ""
|
||||
;;
|
||||
"🎤 mic")
|
||||
echo "--audio"
|
||||
;;
|
||||
"💻 internal")
|
||||
echo "--audio --audio-device default.monitor"
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Screenshot or record depending on selection
|
||||
case "$SELECTION" in
|
||||
"screenshot selection")
|
||||
TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
IMG="${SCREENSHOT_DIR}/${TIMESTAMP}.png"
|
||||
grim -g "$(slurp)" "$IMG" || { notify-send "Error" "Failed to take screenshot"; exit 1; }
|
||||
[ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG"
|
||||
notify-send "Screenshot Taken" "$IMG"
|
||||
;;
|
||||
|
||||
"screenshot all")
|
||||
TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
IMG="${SCREENSHOT_DIR}/${TIMESTAMP}.png"
|
||||
TEMP_FILES=()
|
||||
for OUTPUT in $OUTPUTS; do
|
||||
OUT_IMG="${IMG//.png/-$OUTPUT.png}"
|
||||
grim -c -o "$OUTPUT" "$OUT_IMG" && TEMP_FILES+=("$OUT_IMG")
|
||||
done
|
||||
if [ "${#TEMP_FILES[@]}" -gt 1 ]; then
|
||||
montage "${TEMP_FILES[@]}" -tile x1 -geometry +0+0 "$IMG"
|
||||
rm "${TEMP_FILES[@]}"
|
||||
[ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG"
|
||||
notify-send "Screenshot Taken" "$IMG"
|
||||
else
|
||||
notify-send "Error" "Not enough outputs to montage"
|
||||
fi
|
||||
;;
|
||||
|
||||
"record selection")
|
||||
TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
VID="${RECORDING_DIR}/${TIMESTAMP}.mp4"
|
||||
AUDIO_ARGS=$(select_audio_mode)
|
||||
[ "$AUDIO_ARGS" == "__cancel__" ] && notify-send "Recording cancelled" && exit 0
|
||||
|
||||
# Get selection geometry
|
||||
notify-send "Select area" "Click and drag to select recording area"
|
||||
GEOMETRY="$(slurp)"
|
||||
if [ $? -ne 0 ] || [ -z "$GEOMETRY" ]; then
|
||||
notify-send "Recording cancelled" "Area selection was cancelled"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Start recording
|
||||
if [ -n "$AUDIO_ARGS" ]; then
|
||||
eval "wl-screenrec --geometry '$GEOMETRY' --filename '$VID' $AUDIO_ARGS" &
|
||||
else
|
||||
wl-screenrec --geometry "$GEOMETRY" --filename "$VID" &
|
||||
fi
|
||||
notify-send "Recording started" "Saving to $VID"
|
||||
;;
|
||||
|
||||
"record all")
|
||||
notify-send "Not implemented" "Recording all screens is not supported yet."
|
||||
;;
|
||||
|
||||
"screenshot "*)
|
||||
TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
IMG="${SCREENSHOT_DIR}/${TIMESTAMP}.png"
|
||||
OUT=$(echo "$SELECTION" | awk '{print $2}')
|
||||
grim -c -o "$OUT" "$IMG" || { notify-send "Error" "Failed to screenshot $OUT"; exit 1; }
|
||||
[ -x "$(command -v wl-copy)" ] && wl-copy < "$IMG"
|
||||
notify-send "Screenshot Taken" "$IMG"
|
||||
;;
|
||||
|
||||
"record "*)
|
||||
TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
VID="${RECORDING_DIR}/${TIMESTAMP}.mp4"
|
||||
OUT=$(echo "$SELECTION" | awk '{print $2}')
|
||||
AUDIO_ARGS=$(select_audio_mode)
|
||||
[ "$AUDIO_ARGS" == "__cancel__" ] && notify-send "Recording cancelled" && exit 0
|
||||
|
||||
# Start recording
|
||||
if [ -n "$AUDIO_ARGS" ]; then
|
||||
eval "wl-screenrec --output '$OUT' --filename '$VID' $AUDIO_ARGS" &
|
||||
else
|
||||
wl-screenrec --output "$OUT" --filename "$VID" &
|
||||
fi
|
||||
notify-send "Recording started" "Saving to $VID"
|
||||
;;
|
||||
|
||||
*)
|
||||
notify-send "Invalid selection" "$SELECTION"
|
||||
;;
|
||||
esac
|
||||
75
.config/hypr/scripts/rotate_current_screen.sh
Executable file
75
.config/hypr/scripts/rotate_current_screen.sh
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
# Rotate the CURRENTLY FOCUSED monitor in 90° steps: 0→90→180→270→0…
|
||||
set -euo pipefail
|
||||
|
||||
notify() {
|
||||
if command -v notify-send >/dev/null 2>&1; then
|
||||
notify-send -a "Hyprland" "$1" "${2:-}"
|
||||
else
|
||||
[ -n "${2:-}" ] && printf '%s: %s\n' "$1" "$2" >&2 || printf '%s\n' "$1" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
# Read monitors
|
||||
MON_JSON="$(hyprctl -j monitors 2>/dev/null || true)"
|
||||
if [ -z "$MON_JSON" ]; then
|
||||
notify "Hyprland error" "Couldn’t read monitors via hyprctl."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Focused monitor info
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
NAME="$(printf '%s' "$MON_JSON" | jq -r '.[] | select(.focused==true) | .name' | head -n1)"
|
||||
DESC="$(printf '%s' "$MON_JSON" | jq -r '.[] | select(.focused==true) | .description' | head -n1)"
|
||||
TFORM="$(printf '%s' "$MON_JSON" | jq -r '.[] | select(.focused==true) | (.transform // 0)' | head -n1)"
|
||||
else
|
||||
NAME=""; DESC=""; TFORM=""; FOC=0; GOT=0
|
||||
while IFS= read -r line || [ -n "$line" ]; do
|
||||
if [[ $line =~ ^Monitor[[:space:]]+([^[:space:]]+)[[:space:]]+\(ID[[:space:]] ]]; then
|
||||
if (( FOC==1 )); then GOT=1; break; fi
|
||||
NAME="${BASH_REMATCH[1]}"; DESC=""; TFORM=""; FOC=0
|
||||
elif [[ $line =~ ^[[:space:]]*description:[[:space:]]*(.*)$ ]]; then
|
||||
DESC="${BASH_REMATCH[1]}"
|
||||
elif [[ $line =~ ^[[:space:]]*transform:[[:space:]]*([0-9]+)$ ]]; then
|
||||
TFORM="${BASHREMATCH[1]}"
|
||||
elif [[ $line =~ ^[[:space:]]*focused:[[:space:]]*yes$ ]]; then
|
||||
FOC=1
|
||||
elif [[ -z $line ]]; then
|
||||
if (( FOC==1 )); then GOT=1; break; fi
|
||||
fi
|
||||
done < <(hyprctl monitors 2>/dev/null)
|
||||
if (( GOT==0 && FOC==1 )); then GOT=1; fi
|
||||
if (( GOT==0 )); then NAME=""; fi
|
||||
: "${TFORM:=0}"
|
||||
fi
|
||||
|
||||
if [ -z "${NAME:-}" ] || [ "${NAME:-null}" = "null" ]; then
|
||||
notify "No active monitor to rotate" "Couldn’t determine a focused monitor."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Use description if available (most specific), else connector name
|
||||
if [ -n "${DESC:-}" ] && [ "${DESC:-null}" != "null" ]; then
|
||||
IDENT="desc:${DESC}"
|
||||
else
|
||||
IDENT="${NAME}" # bare connector name; no "name:" prefix
|
||||
fi
|
||||
|
||||
# Base monitor string
|
||||
BASE="${IDENT}, highres@highrr, auto-right, 1"
|
||||
|
||||
# Compute next transform in 90° steps (ignore flipped bit if present)
|
||||
if ! [[ "${TFORM:-}" =~ ^[0-9]+$ ]]; then TFORM=0; fi
|
||||
BASE_ROT=$(( TFORM % 4 ))
|
||||
NEXT=$(( (BASE_ROT + 1) % 4 ))
|
||||
DEG=$(( NEXT * 90 ))
|
||||
|
||||
run_hyprctl() {
|
||||
if ! OUT="$(hyprctl keyword monitor "$1" 2>&1)"; then
|
||||
notify "hyprctl failed" "$OUT"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_hyprctl "$BASE, transform, $NEXT"
|
||||
notify "Rotation applied" "${DESC:-$NAME} → ${DEG}° (transform $NEXT)"
|
||||
80
.config/hypr/scripts/volume-helper.sh
Executable file
80
.config/hypr/scripts/volume-helper.sh
Executable file
@@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# volume-helper.sh — Unified volume control script for Hyprland using pactl
|
||||
#
|
||||
# Purpose:
|
||||
# Many systems have multiple audio output devices (sinks), such as onboard
|
||||
# audio and an external device (e.g. M-Audio M-Track). This script adjusts the
|
||||
# volume of both:
|
||||
#
|
||||
# - The default sink (`@DEFAULT_SINK@`)
|
||||
# - A second sink (identified by partial name, e.g., "M-Track")
|
||||
#
|
||||
# Supports:
|
||||
# - up → Increase volume by 5% (defined by STEP, capped at MAX_VOLUME)
|
||||
# - down → Decrease volume by 5%
|
||||
# - mute → Mute all sinks
|
||||
# - unmute → Unmute all sinks
|
||||
# - toggle → Toggle mute state of all sinks
|
||||
#
|
||||
# Do NOT run this with sudo! pactl must run in your user session.
|
||||
#
|
||||
|
||||
MAX_VOLUME=140
|
||||
STEP=5
|
||||
|
||||
# Secondary sink (e.g. M-Track 2X2)
|
||||
SECOND_SINK=$(pactl list short sinks | grep "M-Track" | awk '{print $1}')
|
||||
DEFAULT_SINK="@DEFAULT_SINK@"
|
||||
|
||||
adjust_volume() {
|
||||
local sink=$1
|
||||
local direction=$2
|
||||
|
||||
if [[ "$direction" == "up" ]]; then
|
||||
pactl set-sink-volume "$sink" +${STEP}%
|
||||
VOL=$(pactl get-sink-volume "$sink" | grep -oP '\d+(?=%)' | sort -nr | head -1)
|
||||
if [ "$VOL" -gt "$MAX_VOLUME" ]; then
|
||||
pactl set-sink-volume "$sink" "$MAX_VOLUME"%
|
||||
fi
|
||||
elif [[ "$direction" == "down" ]]; then
|
||||
pactl set-sink-volume "$sink" -${STEP}%
|
||||
fi
|
||||
}
|
||||
|
||||
toggle_mute() {
|
||||
local sink=$1
|
||||
pactl set-sink-mute "$sink" "$2"
|
||||
}
|
||||
|
||||
# Process action
|
||||
case "$1" in
|
||||
up)
|
||||
adjust_volume "$DEFAULT_SINK" up
|
||||
[[ -n "$SECOND_SINK" ]] && adjust_volume "$SECOND_SINK" up
|
||||
;;
|
||||
down)
|
||||
adjust_volume "$DEFAULT_SINK" down
|
||||
[[ -n "$SECOND_SINK" ]] && adjust_volume "$SECOND_SINK" down
|
||||
;;
|
||||
mute)
|
||||
toggle_mute "$DEFAULT_SINK" 1
|
||||
[[ -n "$SECOND_SINK" ]] && toggle_mute "$SECOND_SINK" 1
|
||||
;;
|
||||
unmute)
|
||||
toggle_mute "$DEFAULT_SINK" 0
|
||||
[[ -n "$SECOND_SINK" ]] && toggle_mute "$SECOND_SINK" 0
|
||||
;;
|
||||
toggle)
|
||||
CURRENT_STATE=$(pactl get-sink-mute "$DEFAULT_SINK" | grep -oE "yes|no")
|
||||
if [[ "$CURRENT_STATE" == "yes" ]]; then
|
||||
"$0" unmute
|
||||
else
|
||||
"$0" mute
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 up|down|mute|unmute|toggle"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
6
.config/kitty/kitty.conf
Normal file
6
.config/kitty/kitty.conf
Normal file
@@ -0,0 +1,6 @@
|
||||
include colors.conf
|
||||
background_opacity .3
|
||||
background_blur 16
|
||||
|
||||
|
||||
|
||||
139
.config/swaylock/alacritty-matrix.toml
Normal file
139
.config/swaylock/alacritty-matrix.toml
Normal file
@@ -0,0 +1,139 @@
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
WINIT_X11_SCALE_FACTOR = "1"
|
||||
|
||||
[window]
|
||||
dynamic_padding = true
|
||||
decorations = "full"
|
||||
title = "Alacritty"
|
||||
opacity = 0.3
|
||||
decorations_theme_variant = "Dark"
|
||||
|
||||
[window.dimensions]
|
||||
columns = 100
|
||||
lines = 30
|
||||
|
||||
[window.class]
|
||||
instance = "Alacritty"
|
||||
general = "Alacritty"
|
||||
|
||||
[scrolling]
|
||||
history = 10000
|
||||
multiplier = 4
|
||||
|
||||
[font]
|
||||
size = 11
|
||||
|
||||
[font.normal]
|
||||
family = "monospace"
|
||||
style = "Regular"
|
||||
|
||||
[font.bold]
|
||||
family = "monospace"
|
||||
style = "Bold"
|
||||
|
||||
[font.italic]
|
||||
family = "monospace"
|
||||
style = "Italic"
|
||||
|
||||
[font.bold_italic]
|
||||
family = "monospace"
|
||||
style = "Bold Italic"
|
||||
|
||||
[selection]
|
||||
semantic_escape_chars = ",│`|:\"' ()[]{}<>\t"
|
||||
save_to_clipboard = true
|
||||
|
||||
[cursor]
|
||||
style = "Underline"
|
||||
vi_mode_style = "None"
|
||||
unfocused_hollow = true
|
||||
thickness = 0.15
|
||||
|
||||
[mouse]
|
||||
hide_when_typing = true
|
||||
|
||||
[[mouse.bindings]]
|
||||
mouse = "Middle"
|
||||
action = "PasteSelection"
|
||||
|
||||
[keyboard]
|
||||
[[keyboard.bindings]]
|
||||
key = "Paste"
|
||||
action = "Paste"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "Copy"
|
||||
action = "Copy"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "L"
|
||||
mods = "Control"
|
||||
action = "ClearLogNotice"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "L"
|
||||
mods = "Control"
|
||||
mode = "~Vi"
|
||||
chars = "\f"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "PageUp"
|
||||
mods = "Shift"
|
||||
mode = "~Alt"
|
||||
action = "ScrollPageUp"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "PageDown"
|
||||
mods = "Shift"
|
||||
mode = "~Alt"
|
||||
action = "ScrollPageDown"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "Home"
|
||||
mods = "Shift"
|
||||
mode = "~Alt"
|
||||
action = "ScrollToTop"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "End"
|
||||
mods = "Shift"
|
||||
mode = "~Alt"
|
||||
action = "ScrollToBottom"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "V"
|
||||
mods = "Control|Shift"
|
||||
action = "Paste"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "C"
|
||||
mods = "Control|Shift"
|
||||
action = "Copy"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "F"
|
||||
mods = "Control|Shift"
|
||||
action = "SearchForward"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "B"
|
||||
mods = "Control|Shift"
|
||||
action = "SearchBackward"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "C"
|
||||
mods = "Control|Shift"
|
||||
mode = "Vi"
|
||||
action = "ClearSelection"
|
||||
|
||||
[[keyboard.bindings]]
|
||||
key = "Key0"
|
||||
mods = "Control"
|
||||
action = "ResetFontSize"
|
||||
|
||||
[general]
|
||||
live_config_reload = true
|
||||
working_directory = "None"
|
||||
import = ["/home/michaelb/.config/alacritty/colors.toml"]
|
||||
|
||||
33
.config/swaylock/config
Normal file
33
.config/swaylock/config
Normal file
@@ -0,0 +1,33 @@
|
||||
show-failed-attempts
|
||||
clock
|
||||
color=00000000
|
||||
indicator
|
||||
indicator-radius=100
|
||||
indicator-thickness=1
|
||||
line-color=00000000
|
||||
ring-color=00000000
|
||||
inside-color=00000000
|
||||
key-hl-color=ffffff88
|
||||
separator-color=00000000
|
||||
text-color=ffffff88
|
||||
text-caps-lock-color=""
|
||||
line-ver-color=00000000
|
||||
ring-ver-color=00000000
|
||||
inside-ver-color=00000000
|
||||
text-ver-color=ffffff88
|
||||
ring-wrong-color=00000000
|
||||
text-wrong-color=ffffff88
|
||||
inside-wrong-color=00000000
|
||||
inside-clear-color=00000000
|
||||
text-clear-color=ffffff88
|
||||
ring-clear-color=00000000
|
||||
line-clear-color=00000000
|
||||
line-wrong-color=00000000
|
||||
bs-hl-color=ffffff88
|
||||
grace=2
|
||||
grace-no-mouse
|
||||
grace-no-touch
|
||||
datestr=%a, %B %e
|
||||
timestr=%I:%M %p
|
||||
fade-in=0.2
|
||||
ignore-empty-password
|
||||
26
.config/swaylock/lockscript.sh
Executable file
26
.config/swaylock/lockscript.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
USER_HOME="$HOME"
|
||||
MATRIX_SCRIPT="$USER_HOME/.config/swaylock/matrix.sh"
|
||||
ALACRITTY_CONF="$USER_HOME/.config/swaylock/alacritty-matrix.toml"
|
||||
|
||||
# 1) Spawn matrix per monitor
|
||||
mapfile -t MONS < <(hyprctl -j monitors | jq -r '.[].name')
|
||||
for mon in "${MONS[@]}"; do
|
||||
hyprctl dispatch focusmonitor "$mon"
|
||||
printf "Monitor: $mon\n"
|
||||
sleep 0.06
|
||||
kitty \
|
||||
--class matrix \
|
||||
--title "matrix-$mon" \
|
||||
--start-as fullscreen \
|
||||
bash -lc "$MATRIX_SCRIPT" &
|
||||
sleep 0.15
|
||||
done
|
||||
|
||||
# 2) Lock screen (blocks until unlock)
|
||||
swaylock
|
||||
|
||||
# 3) Tear down matrix
|
||||
pkill -f "$MATRIX_SCRIPT" || true
|
||||
4
.config/swaylock/matrix.sh
Executable file
4
.config/swaylock/matrix.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
|
||||
#!/bin/bash
|
||||
sleep 0.21
|
||||
cmatrix
|
||||
@@ -1,28 +1,25 @@
|
||||
font = Fanwood Text
|
||||
font = Roboto Sans
|
||||
font-size = 32
|
||||
|
||||
outline-width = 0
|
||||
border-width = 0
|
||||
padding-left = 34%
|
||||
padding-left = 25%
|
||||
padding-top = 22%
|
||||
padding-right = 0
|
||||
padding-bottom = 0
|
||||
|
||||
background-color = #111
|
||||
background-color = #FFF
|
||||
text-color = #f9fbff
|
||||
selection-color = #933
|
||||
|
||||
width = 100%
|
||||
height = 100%
|
||||
|
||||
hide-cursor = true
|
||||
text-color = #cdd6f4
|
||||
prompt-color = #f38ba8
|
||||
selection-color = #f9e2af
|
||||
background-color = #1e1e2eAA
|
||||
hide-cursor = false
|
||||
text-color = #ffffff77
|
||||
prompt-color = #ffffff77
|
||||
selection-color = #ffffff
|
||||
background-color = #00000099
|
||||
|
||||
#
|
||||
### Behaviour
|
||||
#
|
||||
hide-cursor = true
|
||||
history = true
|
||||
history = true
|
||||
|
||||
19
.config/wallust/templates/hyprland.conf
Normal file
19
.config/wallust/templates/hyprland.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
$wallpaper = {{wallpaper}}
|
||||
$background = rgb({{background | strip}})
|
||||
$foreground = rgb({{foreground | strip}})
|
||||
$color0 = rgb({{color0 | strip}})
|
||||
$color1 = rgb({{color1 | strip}})
|
||||
$color2 = rgb({{color2 | strip}})
|
||||
$color3 = rgb({{color3 | strip}})
|
||||
$color4 = rgb({{color4 | strip}})
|
||||
$color5 = rgb({{color5 | strip}})
|
||||
$color6 = rgb({{color6 | strip}})
|
||||
$color7 = rgb({{color7 | strip}})
|
||||
$color8 = rgb({{color8 | strip}})
|
||||
$color9 = rgb({{color9 | strip}})
|
||||
$color10 = rgb({{color10 | strip}})
|
||||
$color11 = rgb({{color11 | strip}})
|
||||
$color12 = rgb({{color12 | strip}})
|
||||
$color13 = rgb({{color13 | strip}})
|
||||
$color14 = rgb({{color14 | strip}})
|
||||
$color15 = rgb({{color15 | strip}})
|
||||
25
.config/wallust/templates/kitty.conf
Normal file
25
.config/wallust/templates/kitty.conf
Normal file
@@ -0,0 +1,25 @@
|
||||
# uses https://codeberg.org/explosion-mental/wallust-templates/src/branch/master/kitty.conf
|
||||
|
||||
background {{ background }}
|
||||
foreground {{ foreground }}
|
||||
|
||||
color0 {{ color0 }}
|
||||
color1 {{ color1 }}
|
||||
color2 {{ color2 }}
|
||||
color3 {{ color3 }}
|
||||
color4 {{ color4 }}
|
||||
color5 {{ color5 }}
|
||||
color6 {{ color6 }}
|
||||
color7 {{ color7 }}
|
||||
color8 {{ color8 }}
|
||||
color9 {{ color9 }}
|
||||
color10 {{ color10 }}
|
||||
color11 {{ color11 }}
|
||||
color12 {{ color12 }}
|
||||
color13 {{ color13 }}
|
||||
color14 {{ color14 }}
|
||||
color15 {{ color15 }}
|
||||
|
||||
mark1_foreground {{ color6 | saturate(0.2) }}
|
||||
mark2_foreground {{ color7 | saturate(0.2) }}
|
||||
mark3_foreground {{ color6 | saturate(0.2) }}
|
||||
20
.config/wallust/templates/tofi
Normal file
20
.config/wallust/templates/tofi
Normal file
@@ -0,0 +1,20 @@
|
||||
font = Roboto Sans
|
||||
font-size = 32
|
||||
|
||||
outline-width = 0
|
||||
border-width = 0
|
||||
padding-left = 25%
|
||||
padding-top = 22%
|
||||
padding-right = 0
|
||||
padding-bottom = 22%
|
||||
|
||||
width = 100%
|
||||
height = 100%
|
||||
|
||||
hide-cursor = false
|
||||
text-color = #{{ color1 | strip }}55
|
||||
prompt-color = #{{ foreground | strip }}77
|
||||
selection-color = #{{ color5 | strip }}
|
||||
background-color = #{{ background | strip }}99
|
||||
|
||||
history = true
|
||||
16
.config/wallust/templates/vscode
Normal file
16
.config/wallust/templates/vscode
Normal file
@@ -0,0 +1,16 @@
|
||||
{{ background }}
|
||||
{{ color1 }}
|
||||
{{ color2 }}
|
||||
{{ color3 }}
|
||||
{{ color4 }}
|
||||
{{ color5 }}
|
||||
{{ color6 }}
|
||||
{{ color7 }}
|
||||
{{ color8 }}
|
||||
{{ color9 }}
|
||||
{{ color10 }}
|
||||
{{ color11 }}
|
||||
{{ color12 }}
|
||||
{{ color13 }}
|
||||
{{ color14 }}
|
||||
{{ color15 }}
|
||||
@@ -1,7 +1,48 @@
|
||||
# wallust v3.3
|
||||
#
|
||||
# You can copy this file to ~/.config/wallust/wallust.toml (keep in mind is a sample config)
|
||||
|
||||
# SIMPLE TUTORIAL, or `man wallust.5`:
|
||||
# https://explosion-mental.codeberg.page/wallust/
|
||||
#
|
||||
# If comming from v2: https://explosion-mental.codeberg.page/wallust/v3.html#wallusttoml
|
||||
|
||||
# Global section - values below can be overwritten by command line flags
|
||||
|
||||
# How the image is parse, in order to get the colors:
|
||||
# # full - resized - wal - thumb - fastresize - kmeans
|
||||
backend = "fastresize"
|
||||
color_space = "lch"
|
||||
|
||||
# What color space to use to produce and select the most prominent colors:
|
||||
# lab - labmixed - lch - lchmixed
|
||||
color_space = "lab"
|
||||
|
||||
# Use the most prominent colors in a way that makes sense, a scheme color palette:
|
||||
# dark - dark16 - darkcomp - darkcomp16
|
||||
# light - light16 - lightcomp - lightcomp16
|
||||
# harddark - harddark16 - harddarkcomp - harddarkcomp16
|
||||
# softdark - softdark16 - softdarkcomp - softdarkcomp16
|
||||
# softlight - softlight16 - softlightcomp - softlightcomp16
|
||||
palette = "dark"
|
||||
|
||||
# Ensures a "readable contrast" (OPTIONAL, disabled by default)
|
||||
# Should only be enabled when you notice an unreadable contrast frequently happening
|
||||
# with your images. The reference color for the contrast is the background color.
|
||||
check_contrast = true
|
||||
|
||||
# Color saturation, between [1% and 100%] (OPTIONAL, disabled by default)
|
||||
# usually something higher than 50 increases the saturation and below
|
||||
# decreases it (on a scheme with strong and vivid colors)
|
||||
#saturation = 35
|
||||
|
||||
# Alpha value for templating, by default 100 (no other use whatsoever)
|
||||
#alpha = 50
|
||||
|
||||
|
||||
[templates]
|
||||
waybar = { template = 'waybar.css', target = '~/.config/waybar/colors-wallust.css' }
|
||||
alacritty = { template = 'alacritty.toml', target = '~/.config/alacritty/colors.toml' }
|
||||
# alacritty = { template = 'alacritty.toml', target = '~/.config/alacritty/colors.toml' }
|
||||
hyprland = { template = 'hyprland.conf', target = '~/.config/hypr/config/colors.conf' }
|
||||
vscode = { template = 'vscode', target = '~/.cache/wal/colors' }
|
||||
kitty = { template = 'kitty.conf', target = '~/.config/kitty/colors.conf'}
|
||||
tofi = { template = 'tofi', target = '~/.config/tofi/config' }
|
||||
|
||||
@@ -34,6 +34,10 @@ window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
window#waybar.empty #window {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 3px 2px;
|
||||
margin: 3px 2px;
|
||||
|
||||
Reference in New Issue
Block a user