You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion | 🟠 Major
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash# Search for flake.nix and check its hyprshell configuration
fd -e nix "flake.nix" -x cat {} -n \;2>/dev/null
Repository: shunkakinoki/dotfiles
Length of output: 9025
🏁 Script executed:
#!/bin/bash# Also check if there's any hyprland input defined in flake.nix
fd -e nix "flake.nix" -x grep -n "hyprland\|hyprshell" {} \;2>/dev/null
Repository: shunkakinoki/dotfiles
Length of output: 47
🏁 Script executed:
#!/bin/bash# Check the structure of the repo to understand the context
git ls-files | grep -E "(flake|hyprland)"| head -20
Repository: shunkakinoki/dotfiles
Length of output: 361
Add explicit hyprland version pinning for hyprshell to prevent header mismatch crashes.
Hyprshell builds a Hyprland plugin at runtime which requires C headers matching the running Hyprland instance. Since flake.nix doesn't currently pin hyprland, hyprshell may receive headers from a different version than your system runs, causing runtime crashes.
Add a hyprshell input that follows your hyprland version (or use nixpkgs-unstable consistently):
If version pinning isn't immediately practical, set HYPRSHELL_NO_USE_PLUGIN=1 as a temporary workaround.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@config/hyprland/default.nix` at line 18, The exec-once line launches
hyprshell and can cause runtime crashes due to hyprshell building a plugin
against mismatched Hyprland headers; add an explicit hyprshell input that
follows your pinned hyprland version (so hyprshell uses the same hyprland
headers) — e.g. create an input named hyprshell with inputs.hyprland.follows set
to the same channel as your hyprland pin — or, as a temporary workaround, ensure
the environment variable HYPRSHELL_NO_USE_PLUGIN=1 is exported before the
exec-once = ${pkgs.hyprshell}/bin/hyprshell run & invocation to disable plugin
building.
⚠️ Potential issue | 🟠 Major
🧩 Analysis chain
🌐 Web query:
hyprshell config file auto-detection TOML RON ~/.config/hyprshell
💡 Result:
Hyprshell does not auto-detect between TOML and RON.
Default config path:~/.config/hyprshell/config.ron (loaded on startup and auto-reloaded on change). You can override the path with -c. Hyprshell also supports .json and .json5 config files. [1]
TOML status: TOML was dropped (it couldn’t represent None values). Hyprshell added a TOML → RON migration around v4.6.0. [2]
What to do: put your config at ~/.config/hyprshell/config.ron (or point Hyprshell at a specific file via hyprshell -c /path/to/config.ron).
Sources: [1] [2]
🌐 Web query:
hyprshell run command default config file location format
💡 Result:
Default config file path (used by hyprshell run):~/.config/hyprshell/config.ron.[1][2]
Default format:RON (.ron).[1][2]
Other supported config formats:.toml and .json / .json5.[1]
Hyprshell’s config-loading behavior (per the upstream GitHub repo):
Default config path:~/.config/hyprshell/config.ron. You can override this with the -c CLI argument. The config is loaded at startup and auto-reloaded when the file changes. [1]
Supported config formats:.ron (default); the docs also state you can use .json(5) and .toml formats (depending on build/features/version). [1]
Config versioning/migrations: the config has a version field; on load, Hyprshell checks it to migrate the file if needed. [1]
Reload/watch behavior controls: Hyprshell has file/listener-based hot reload; you can disable listeners with HYPRSHELL_NO_LISTENERS, and adjust the reload debounce/timeout via HYPRSHELL_RELOAD_TIMEOUT (default 1500 ms). [2]
CSS is similar: default CSS at ~/.config/hyprshell/styles.css, overridable with -s, also loaded at startup and reloaded on change. [1]
hyprshell run requires an explicit config path — config.toml will be silently ignored.
Hyprshell defaults to ~/.config/hyprshell/config.ron (RON format) and does not auto-detect .toml files. Without a -c flag pointing to your config.toml, hyprshell starts with built-in defaults, leaving modifier as "alt" instead of "super" — breaking Super+Tab.
- exec-once = ${pkgs.hyprshell}/bin/hyprshell run &+ exec-once = ${pkgs.hyprshell}/bin/hyprshell -c ${config.xdg.configHome}/hyprshell/config.toml run &
📝 Committable suggestion
‼️IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
Verify each finding against the current code and only fix it if needed.
In `@config/hyprland/default.nix` at line 18, The exec-once invocation uses
"${pkgs.hyprshell}/bin/hyprshell run &" which ignores your TOML and falls back
to RON defaults; fix by either renaming the config file to the hyprshell default
(move config/hyprshell/config.toml → config/hyprshell/config.ron and update the
xdg configFile key to point to config.ron) or by keeping the TOML and changing
the exec-once command to include an explicit config flag (invoke hyprshell with
-c /path/to/config.toml) so hyprshell loads your intended modifier ("super").
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The reason will be displayed to describe this comment to others. Learn more.
The PR description states "Install hyprshell from flake input", but there is no corresponding flake input for hyprshell added to flake.nix. This means the package will be pulled from nixpkgs directly rather than from a dedicated flake input. If hyprshell requires a specific version or custom build not available in nixpkgs, you'll need to add it as a flake input in flake.nix and reference it appropriately (similar to how agenix is used on line 10).
The reason will be displayed to describe this comment to others. Learn more.
The PR description states that Super+Tab will be configured to use hyprshell's switch mode, replacing the previous hyprexpo binding. However, this PR only adds the package - it doesn't include the necessary configuration changes. The hyprland configuration file (config/hyprland/hyprland.conf line 261) still has the binding "bind = $mod, TAB, hyprexpo:expo, toggle" which needs to be updated to use hyprshell instead. Additionally, any hyprshell configuration for the switch mode needs to be added.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion | 🟠 Major
🧩 Analysis chain
🏁 Script executed:
Repository: shunkakinoki/dotfiles
Length of output: 9025
🏁 Script executed:
Repository: shunkakinoki/dotfiles
Length of output: 47
🏁 Script executed:
Repository: shunkakinoki/dotfiles
Length of output: 361
Add explicit hyprland version pinning for hyprshell to prevent header mismatch crashes.
Hyprshell builds a Hyprland plugin at runtime which requires C headers matching the running Hyprland instance. Since
flake.nixdoesn't currently pin hyprland, hyprshell may receive headers from a different version than your system runs, causing runtime crashes.Add a hyprshell input that follows your hyprland version (or use nixpkgs-unstable consistently):
If version pinning isn't immediately practical, set
HYPRSHELL_NO_USE_PLUGIN=1as a temporary workaround.🤖 Prompt for AI Agents
🧩 Analysis chain
🌐 Web query:
hyprshell config file auto-detection TOML RON ~/.config/hyprshell💡 Result:
Hyprshell does not auto-detect between TOML and RON.
~/.config/hyprshell/config.ron(loaded on startup and auto-reloaded on change). You can override the path with-c. Hyprshell also supports.jsonand.json5config files. [1]Nonevalues). Hyprshell added a TOML → RON migration around v4.6.0. [2]What to do: put your config at
~/.config/hyprshell/config.ron(or point Hyprshell at a specific file viahyprshell -c /path/to/config.ron).Sources: [1] [2]
🌐 Web query:
hyprshell run command default config file location format💡 Result:
hyprshell run):~/.config/hyprshell/config.ron.[1][2].ron).[1][2].tomland.json/.json5.[1]-c <path>.[1]Sources: [1] [2]
🌐 Web query:
hyprshell github repository config loading behavior💡 Result:
Hyprshell’s config-loading behavior (per the upstream GitHub repo):
~/.config/hyprshell/config.ron. You can override this with the-cCLI argument. The config is loaded at startup and auto-reloaded when the file changes. [1].ron(default); the docs also state you can use.json(5)and.tomlformats (depending on build/features/version). [1]versionfield; on load, Hyprshell checks it to migrate the file if needed. [1]HYPRSHELL_NO_LISTENERS, and adjust the reload debounce/timeout viaHYPRSHELL_RELOAD_TIMEOUT(default1500ms). [2]~/.config/hyprshell/styles.css, overridable with-s, also loaded at startup and reloaded on change. [1]Sources:
[1] Hyprshell
docs/CONFIGURE.md(raw)[2] Hyprshell
README.md(raw)hyprshell runrequires an explicit config path —config.tomlwill be silently ignored.Hyprshell defaults to
~/.config/hyprshell/config.ron(RON format) and does not auto-detect.tomlfiles. Without a-cflag pointing to yourconfig.toml, hyprshell starts with built-in defaults, leavingmodifieras"alt"instead of"super"— breaking Super+Tab.Choose one fix:
Rename to RON (the default format):
config/hyprshell/config.toml→config/hyprshell/config.ronOr pass
-cexplicitly:Option 2 — point to TOML via -c flag
📝 Committable suggestion
🤖 Prompt for AI Agents