summaryrefslogtreecommitdiff
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* wallpaper: random prevent duplicate2 * r + 2 * t2025-08-231-1/+15
|
* record: use correct proc (#47)Matheus Oliveira2025-08-201-1/+1
| | | | | | Previously, the start() function always invoked 'wl-screenrec' regardless of detected GPU, which prevented recording on systems with NVIDIA GPUswhen 'wf-recorder' is available. This change updates start() to launch the recorder stored in self.recorder, ensuring the correct recorder is used based on GPU detection.
* shell: set QT_QPA_PLATFORMTHEME env2 * r + 2 * t2025-08-191-1/+7
| | | | | | Hopefully fixes most people's icon issues Fixes caelestia-dots/shell@390
* feat: window resizer command & daemon (#43)Batuhan Edgüer2025-08-183-51/+483
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * resizer: add window resizer daemon command Implements a continuous window resizer daemon that automatically resizes windows based on configurable rules. Features include: - Listens to Hyprland socket events for real-time window detection - Supports multiple match types: initial_title, title_contains, title_exact - Configurable via CLI config file with fallback to sensible defaults - Rate limiting to prevent excessive resize operations - Window actions: float, center, and custom dimensions - Integration with existing CLI structure Usage: caelestia resizer --daemon * refactor: replace pip daemon with integrated resizer functionality ## Summary - Remove standalone pip daemon and integrate its functionality into the resizer - Add regex matching, config support, and active mode to resizer - Implement clean 'caelestia resizer pip' command for quick PiP operations - Update keybinds to use new unified resizer command ## Why Replace the Old PiP Method? ### 1. Code Duplication The old pip daemon duplicated window management logic that already existed in the resizer: - Both daemons listened to Hyprland socket events - Both had similar window detection and manipulation code - Both needed rate limiting and error handling ### 2. Limited Functionality The old pip daemon was restricted: - Only worked with regex pattern matching for 'Picture in Picture' titles - No configuration support for custom rules - No way to apply PiP to arbitrary windows - No integration with other window actions ### 3. Maintenance Overhead Having two separate daemons created maintenance issues: - Two different codebases to maintain and debug - Potential conflicts when both daemons run simultaneously - Inconsistent error handling and logging approaches ### 4. Review Feedback Implementation The PR review specifically requested this consolidation: - "This can actually probably replace the pip daemon entirely" - "consider adding a regex match mode and pip action, then add that to the default rules" ## New Integrated Approach Benefits ### 1. Unified Window Management - Single daemon handles all window operations (resize, float, center, pip) - Consistent configuration format using camelCase - Shared error handling and rate limiting ### 2. Enhanced PiP Functionality - Works with any window title pattern (regex, contains, exact) - Configurable through CLI config file - Active mode: `caelestia resizer pip` for quick PiP on current window - Better error messages and user guidance ### 3. Future-Proof Architecture - Easy to add new window actions (e.g., minimize, maximize, workspace move) - Extensible pattern matching (could add class-based matching) - Single place to implement new Hyprland features ### 4. Improved User Experience - Simpler command structure: `caelestia resizer pip` vs complex arguments - Better error messages when windows aren't floating - Consistent CLI interface across all window operations ## Implementation Details - Added pip action to WindowRule system - Integrated original pip calculation with minimum size constraints - Added type safety improvements throughout - Maintained backward compatibility for existing users - Updated keybind: `bind = $kbWindowPip, exec, caelestia resizer pip` * fix: unpack dispatch_commands list in hypr.batch call - Fix 'sequence item 0: expected str instance, list found' error - hypr.batch() expects individual string arguments, not a list - Use *dispatch_commands to unpack the list properly * fix: handle Hyprland event format with triple > separators - Fix window ID parsing for events with >>> instead of >> - Add .lstrip('>') to remove any leading > characters - Support both >> and >>> formats for compatibility - Fixes 'Invalid window ID format: >555ee935ba30' errors * resizer: implement active mode for all matching windows Active mode now searches through all open windows and applies the rule to any that match the specified pattern, rather than just checking if the currently active window matches. This allows for batch operations on multiple windows with the same pattern. Special case: using pattern "active" will still target only the currently active window, allowing users to apply rules to just the focused window when needed. This addresses the latest review feedback requesting that active mode work on any open window that matches the given pattern. * parser: better resizer help * completions: add for resizer --------- Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
* theme: add nvtop, htop, and cava support (#45)Batuhan Edgüer2025-08-184-1/+229
| | | | | | | * templates: add nvtop, htop, and cava support * Triggers htop and cava theme reloads Sends a USR2 signal to htop and cava after their themes are applied. This prompts the applications to reload their configuration files, ensuring new themes are visible instantly without requiring a manual restart.
* schemes: add dark green scheme2 * r + 2 * t2025-08-172-0/+200
| | | | Scheme by @depcustodian with some tweaks
* pip: use batch request2 * r + 2 * t2025-08-172-2/+10
|
* theme: add Warp terminal theme support (#42)Batuhan Edgüer2025-08-172-0/+37
| | | | | | | | | | | | | | | * theme: add Warp terminal theme support Add support for Warp terminal theming with proper template and integration. - Add warp.yaml template with standard theme variables - Implement apply_warp function with correct 'darker'/'lighter' values - Integrate with main theme application pipeline via enableWarp config * warp: improve theme generation and use proper data directory - Use gen_replace with hash=True for consistent color formatting - Remove # symbols from template to avoid double hashes - Replace warp_mode manually after gen_replace instead of adding to colors dict - Use data_dir for XDG-compliant theme location
* paths: fix custom path envs2 * r + 2 * t2025-08-161-3/+3
| | | | Specify whole path instead of end
* record: fix region2 * r + 2 * t2025-08-161-5/+5
|
* record: add NVIDIA GPU support with wf-recorder (#41)Batuhan Edgüer2025-08-161-3/+31
| | | | | | | | | | | | | | | | * record: add NVIDIA GPU support with wf-recorder - Add automatic GPU detection to choose between wl-screenrec and wf-recorder - Use wf-recorder for NVIDIA GPUs to fix compatibility issues - Map wf-recorder arguments correctly for region, output, and audio recording - Update documentation to include wf-recorder as dependency for NVIDIA users Fixes #37 * format + deduplicate --------- Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
* toggle: improvements2 * r + 2 * t2025-08-162-12/+19
| | | | Closes #40
* toggle: fix specialws2 * r + 2 * t2025-08-161-10/+2
|
* data: add new colours2 * r + 2 * t2025-08-1516-0/+160
| | | | | NOTE: clear your scheme cache when updating to this version `rm -r ~/.cache/caelestia/schemes`
* theme: better qt theming2 * r + 2 * t2025-08-156-9/+332
| | | | | Switch to Darkly for default QT style Use qt5ct-kde and qt6ct-kde
* paths: allow configuring via env vars2 * r + 2 * t2025-08-131-3/+3
| | | | Closes #39
* record: fix multi-monitor and moving across filesystems (#38)anders1302025-08-131-4/+19
| | | | | | | | | | | | | | | * fix(record): support differing filesystems for recording destination * fix(record): for multi-monitor-systems wl-screenrec needs a -o argument * fix(record): replace path.rename with shutil.move * fix(record): use json option to retrieve hyprland focused monitor * use generator --------- Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
* pip: add monitor offset2 * r + 2 * t2025-08-041-1/+1
| | | | Fixes #30 (hopefully)
* toggle: allow configuring2 * r + 2 * t2025-08-041-35/+119
| | | | Closes #33
* paths: use xdg user paths2 * r + 2 * t2025-08-041-3/+5
| | | | Closes #35
* theme: add config for progs to theme2 * r + 2 * t2025-08-042-9/+34
|
* ci: add flake update workflow2 * r + 2 * t2025-08-043-18/+34
| | | | | | | Also add contributing, funding and issue templates parser: add kill option to shell version: fix errors when not on arch
* theme: add template system (#36)Elio Torquet2025-08-043-1/+63
| | | | | | | | | | | * user template system * fix when templates dir doesnt exist Also color -> colour --------- Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
* shell: fix log when no log rulesSoramane2025-07-251-1/+4
| | | | also fix nix devshell
* record: don't use hevc codec2 * r + 2 * t2025-07-231-1/+1
| | | | Cause incompatible with some players (mainly discord)
* shell: remove default log rules2 * r + 2 * t2025-07-222-7/+4
| | | | The spammy logs have been silenced
* theme: ignore perm errors for /dev/pts2 * r + 2 * t2025-07-221-2/+5
| | | | Fixes #27
* shell: remove qproc filterSoramane2025-07-161-4/+1
| | | | unecessary, was removed in qs update
* theme: use dconf instead of gsettings2 * r + 2 * t2025-07-121-3/+3
|
* theme: fix typo2 * r + 2 * t2025-07-121-1/+1
|
* shell: reorder qs args2 * r + 2 * t2025-07-111-1/+1
| | | | So nix substituteInPlace works better
* wallpaper: allow relative paths2 * r + 2 * t2025-07-071-2/+4
| | | | Fixes caelestia-dots/shell#200
* record: ensure recordings dir exists2 * r + 2 * t2025-07-071-0/+1
| | | | Fixes caelestia-dots/shell#199
* version: silence stderr2 * r + 2 * t2025-07-041-1/+4
|
* feat: add version flag2 * r + 2 * t2025-07-043-1/+59
|
* discord: add borders2 * r + 2 * t2025-06-301-1/+1
| | | | Cause separators and other stuff also use this colour
* wallpaper: better variant detection2 * r + 2 * t2025-06-252-5/+49
|
* schemes: fix static themes2 * r + 2 * t2025-06-2516-1226/+1466
| | | | add term colours
* wsaction: remove2 * r + 2 * t2025-06-242-32/+1
|
* internal: more lazy importing2 * r + 2 * t2025-06-242-9/+13
| | | | Also fix some stuff with scheme checking
* internal: lazy import stuff2 * r + 2 * t2025-06-242-8/+7
| | | | Lazy import material generators
* scheme: no mem cache2 * r + 2 * t2025-06-241-43/+11
|
* [!B] wallpaper: smart variant2 * r + 2 * t2025-06-241-14/+26
|
* scheme: reduce chroma for neutral variant2 * r + 2 * t2025-06-241-0/+4
|
* scheme: add extended material to fixed schemes2 * r + 2 * t2025-06-2416-16/+80
|
* [!B] colours: better colours2 * r + 2 * t2025-06-246-154/+110
| | | | | Also remove multiple dynamic flavours Add extended material (success colours)
* score: fix for low contrast wallpapers2 * r + 2 * t2025-06-231-3/+7
|
* [CI] emojis: update datagithub-actions2025-06-231-9732/+9832
|
* emoji: add fetch option2 * r + 2 * t2025-06-232-6/+84
|
* emojis: add missing emojis2 * r + 2 * t2025-06-221-0/+8
| | | | Also add a few common unicode symbols