From 3fba370e876a033b9b89df5712e2ba1a66f566ac Mon Sep 17 00:00:00 2001 From: Hugo Vigne Date: Fri, 10 Oct 2025 12:02:05 +0200 Subject: [PATCH 1/4] Update keybinds with code:... bindings for workspace navigation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes https://github.com/end-4/dots-hyprland/issues/1705 Some keyboard layouts such as Azerty and Bépo defaults to symbols for the digits row, contrary to Qwerty-based layouts. Pressing Shift allows typing the actual digits instead of symbols. Unfortunately, this breaks Workspace navigation in Hyprland configurations unless using keycodes for binding the digits row (1, 2, 3...0). This commit does exactly that. It was tested with three keyboards, each time with 2 layouts: Azerty (French) / Qwerty (US). The physical keyboards were: - Asus Strix Scope II 96 Wireless - Keychron Q3 HE QMK (ISO layout) - The keyboard integrated in the Lenovo Thinkpad P16s Gen3 laptop. --- .config/hypr/hyprland/keybinds.conf | 40 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf index f0c628dfe..b7a1d12bf 100644 --- a/.config/hypr/hyprland/keybinds.conf +++ b/.config/hypr/hyprland/keybinds.conf @@ -108,16 +108,16 @@ bind = Super+Alt, F, fullscreenstate, 0 3 # Fullscreen spoof bind = Super, P, pin # Pin #/# bind = Super+Alt, Hash,, # Send to workspace # (1, 2, 3,...) -bind = Super+Alt, 1, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 1 # [hidden] -bind = Super+Alt, 2, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 2 # [hidden] -bind = Super+Alt, 3, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 3 # [hidden] -bind = Super+Alt, 4, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 4 # [hidden] -bind = Super+Alt, 5, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 5 # [hidden] -bind = Super+Alt, 6, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 6 # [hidden] -bind = Super+Alt, 7, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 7 # [hidden] -bind = Super+Alt, 8, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 8 # [hidden] -bind = Super+Alt, 9, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 9 # [hidden] -bind = Super+Alt, 0, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 10 # [hidden] +bind = Super+Alt, code:10, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 1 # [hidden] +bind = Super+Alt, code:11, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 2 # [hidden] +bind = Super+Alt, code:12, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 3 # [hidden] +bind = Super+Alt, code:13, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 4 # [hidden] +bind = Super+Alt, code:14, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 5 # [hidden] +bind = Super+Alt, code:15, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 6 # [hidden] +bind = Super+Alt, code:16, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 7 # [hidden] +bind = Super+Alt, code:17, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 8 # [hidden] +bind = Super+Alt, code:18, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 9 # [hidden] +bind = Super+Alt, code:19, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 10 # [hidden] # #/# bind = Super+Shift, Scroll ↑/↓,, # Send to workspace left/right bind = Super+Shift, mouse_down, movetoworkspace, r-1 # [hidden] @@ -140,16 +140,16 @@ bind = Ctrl+Super, S, togglespecialworkspace, # [hidden] ##! Workspace # Switching #/# bind = Super, Hash,, # Focus workspace # (1, 2, 3,...) -bind = Super, 1, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 1 # [hidden] -bind = Super, 2, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 2 # [hidden] -bind = Super, 3, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 3 # [hidden] -bind = Super, 4, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 4 # [hidden] -bind = Super, 5, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 5 # [hidden] -bind = Super, 6, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 6 # [hidden] -bind = Super, 7, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 7 # [hidden] -bind = Super, 8, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 8 # [hidden] -bind = Super, 9, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 9 # [hidden] -bind = Super, 0, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 10 # [hidden] +bind = Super, code:10, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 1 # [hidden] +bind = Super, code:11, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 2 # [hidden] +bind = Super, code:12, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 3 # [hidden] +bind = Super, code:13, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 4 # [hidden] +bind = Super, code:14, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 5 # [hidden] +bind = Super, code:15, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 6 # [hidden] +bind = Super, code:16, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 7 # [hidden] +bind = Super, code:17, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 8 # [hidden] +bind = Super, code:18, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 9 # [hidden] +bind = Super, code:19, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 10 # [hidden] #/# bind = Ctrl+Super, ←/→,, # Focus left/right bind = Ctrl+Super, Right, workspace, r+1 # [hidden] From b4b461d815886d91f22c15355efb1ce696bac669 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Fri, 10 Oct 2025 22:46:28 +0800 Subject: [PATCH 2/4] Update CONTRIBUTING.md --- CONTRIBUTING.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0be4626d4..1c2c57e35 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,14 @@ # Contributing - Please, please, please, make multiple PRs if you have many features/fixes, and don't shove your personal changes along with the PR, including changed defaults -- I can accept features I do not personally want, but in that case I will ask you to make it configurable/optionally loaded -- If you want to start working on something big to contribute, it might be a good idea to ask first to not waste your effort (but if you've already done it for yourself, it doesn't hurt to submit) +- We can accept features that we do not personally want, but in that case we will ask you to make it configurable/optionally loaded. +- If you want to start working on something big to contribute, it might be a good idea to ask first to not waste your effort (but if you've already done it for yourself, it doesn't hurt to submit). # Code details ## Dynamic loading -- If something's not always necessary, especially when guarded by a config option to enable/disable, put it in a `Loader`. One tip with `Loader`s is sometimes you will need to declare positioning properties (like `anchors`) in the `Loader`, not the `sourceComponent` +- If something's not always necessary, especially when guarded by a config option to enable/disable, put it in a `Loader`. One tip with `Loader`s is sometimes you will need to declare positioning properties (like `anchors`) in the `Loader`, not the `sourceComponent`. ## Practical concerns @@ -17,30 +17,33 @@ # Setting up -Assumption: you have an Arch(-based) Linux system +The following instruction assumes that you have an Arch(-based) Linux system. ## Complete -_might not be necessary depending on what you change, but this is recommended_ +_Might not be necessary depending on what you change, but this is recommended._ -- [Install](https://end-4.github.io/dots-hyprland-wiki/en/ii-qs/01setup/) the dotfiles (if you don't wanna replace your stuff completely, do it on a new user) -- Make changes, copy changes to a fork, PR +- [Install](https://ii.clsty.link/en/ii-qs/01setup/) the dotfiles (if you don't wanna replace your stuff completely, do it on a new user). +- Make changes, copy changes to a fork, create PR. ## Partially working shell -_most stuff in the shell will work but not everything_ +_Most stuff in the shell will work but not everything._ -- Install Hyprland and the development version of Quickshell (`yay -S hyprland quickshell-git`) -- Copy `.config/quickshell` folder to your home directory +- Install Hyprland and the development version of Quickshell (`yay -S hyprland quickshell-git`). +- Copy `.config/quickshell` folder to your home directory. ## Extra setup for Quickshell -- Quickshell-specific LSP setup: Run `touch ~/.config/quickshell/ii/.qmlls.ini` for proper LSP support -- Hint for VSCode: Get the official "Qt Qml" extension, go to its settings and change custom exe path to `/usr/bin/qmlls6` +- Quickshell-specific LSP setup: Run `touch ~/.config/quickshell/ii/.qmlls.ini` for proper LSP support. +- Hint for VSCode: Get the official "Qt Qml" extension, go to its settings and change custom exe path to `/usr/bin/qmlls6`. + +## Python +If your changes involves using python package or script, please use the virtual environment created by uv as described in `scriptdata/uv/README.md`. # Running - Launch Hyprland (not the "uwsm-managed" one) - For the shell: - - Open `~/.config/quickshell/ii` in your code editor - - In a terminal run `pkill qs; qs -c ii` to start the shell in the terminal (for logs) + - Open `~/.config/quickshell/ii` in your code editor. + - In a terminal run `pkill qs; qs -c ii` to start the shell in the terminal (for logs). - Make edits in the opened folder. Changes are reloaded live. From 7f2d1702ca5613fbf43b87d1dfb32904406a052c Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Fri, 10 Oct 2025 23:38:51 +0800 Subject: [PATCH 3/4] Update comment in dist-update-notification.yml --- .github/workflows/dist-update-notification.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dist-update-notification.yml b/.github/workflows/dist-update-notification.yml index cb16d9ff4..9fc18755f 100644 --- a/.github/workflows/dist-update-notification.yml +++ b/.github/workflows/dist-update-notification.yml @@ -14,6 +14,7 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} DISCUSSION_NUMBER: 2140 + # https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions # https://docs.github.com/en/graphql/reference/mutations#adddiscussioncomment run: | MESSAGE="**Auto notification:**\n" From 7e9a07838ebecf9918393aa636704ee27827b205 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 10 Oct 2025 23:06:44 +0200 Subject: [PATCH 4/4] hyprland: add note for raw keycode workspace binds --- .config/hypr/hyprland/keybinds.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf index b7a1d12bf..214707ae3 100644 --- a/.config/hypr/hyprland/keybinds.conf +++ b/.config/hypr/hyprland/keybinds.conf @@ -108,6 +108,7 @@ bind = Super+Alt, F, fullscreenstate, 0 3 # Fullscreen spoof bind = Super, P, pin # Pin #/# bind = Super+Alt, Hash,, # Send to workspace # (1, 2, 3,...) +# We use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev` bind = Super+Alt, code:10, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 1 # [hidden] bind = Super+Alt, code:11, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 2 # [hidden] bind = Super+Alt, code:12, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh movetoworkspacesilent 3 # [hidden] @@ -140,6 +141,7 @@ bind = Ctrl+Super, S, togglespecialworkspace, # [hidden] ##! Workspace # Switching #/# bind = Super, Hash,, # Focus workspace # (1, 2, 3,...) +# We use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev` bind = Super, code:10, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 1 # [hidden] bind = Super, code:11, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 2 # [hidden] bind = Super, code:12, exec, ~/.config/hypr/hyprland/scripts/workspace_action.sh workspace 3 # [hidden]