Keybindings not matching my config

hey forum !

I just switch from an old eos version to eos cassini nova. I didn t save my config because I m a bit dumb…

There is my problem : I have my binding config in .config/sway/config.d/default (in my sway/config file I have the link to this folder “config.d/*”) with this code (default i3 conf)

Moving around:

# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right

Workspaces:

# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.

but, I have to type $mod + Shift + 1 to focus on containter 1 and nothin happens on $mod + 1…
If anybody got tips or ideas to try :slight_smile:

(I’m kind of a newbie feel free to correct the way I ask my question or whatever !)

If you are already on workspace 1, nothing will happen with $mod+1. If you hit $mod+2 it should bring you to workspace 2, and $mod+3 will bring you to workspace 3–is that working?

$mod+shift+1 moves the currently focused window to workspace 1. If you are already on workspace 1, this also will not change anything. Try $mod+shift+2 and you should be able to move the focused window to workspace 2.

nop that’s my problem. I want the system to react like this but $mod + shit moves me to the workspace and $mod + num dont do anyhting.
I cannot move my windows out of their origin workspace and need to press shift to “move” myself"

What other files do you have in ~/.config/sway?

ls -R ~/.config/sway

nothing special, only eos community edition files :

➜ ~ ls -R ~/.config/sway

/home/jlss/.config/sway:
cheatsheet config config.d keyboard.conf scripts swaylock.png sway.png

/home/jlss/.config/sway/config.d:
application_defaults autostart_applications clamshell default input output theme

/home/jlss/.config/sway/scripts:
clamshell.sh import-gsettings lockman.sh screenshot.sh swayfader.py weather.sh

Is there anything in ~/.config/sway/config, aside from the include ~/.config/sway/config.d/* line you mentioned? I’m just wondering if there is a conflict being introduced somewhere.

no I don’t think so :

➜  ~ cat .config/sway/config
# Initial Setup
# exec ~/set_once.sh

# Config for sway
#
# Read `man 5 sway` for a complete reference.

# user config directory
include $HOME/.config/sway/config.d/*

# only enable this if every app you use is compatible with wayland
# xwayland disable```

Have you rebooted, or reloaded the Sway config since setting it up?

Yes, just reloaded → rebooted → re reload now to make sure, nothing changed

Can you post the full config file?

here it is :

(note that other keybindings are perfectly working)

➜  ~ cat .config/sway/config.d/default
# Logo key. Use Mod1 for Alt.
set $mod Mod4

# Home row direction keys, like vim
set $left h
set $down j
set $up k
set $right l

# audio control
set $sink_volume pactl get-sink-volume @DEFAULT_SINK@ | grep '^Volume:' | cut -d / -f 2 | tr -d ' ' | sed 's/%//'
set $source_volume pactl get-source-volume @DEFAULT_SOURCE@ | grep '^Volume:' | cut -d / -f 2 | tr -d ' ' | sed 's/%//'
set $volume_down $(pactl set-sink-volume @DEFAULT_SINK@ -5% && $sink_volume)
set $volume_up $(pactl set-sink-volume @DEFAULT_SINK@ +5% && $sink_volume)
set $volume_mute $(pactl set-sink-mute @DEFAULT_SINK@ toggle && pactl get-sink-mute @DEFAULT_SINK@ | sed -En "/no/ s/.*/$($sink_volume)/p; /yes/ s/.*/0/p")
set $mic_mute $(pactl set-source-mute @DEFAULT_SOURCE@ toggle && pactl get-source-mute @DEFAULT_SOURCE@ | sed -En "/no/ s/.*/$($source_volume)/p; /yes/ s/.*/0/p")

# Your preferred terminal emulators
set $term-float alacritty

# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu wofi -c ~/.config/wofi/config -I

set $powermenu ~/.config/waybar/scripts/power-menu.sh

### Idle configuration
exec swayidle -w\
    timeout 1070 'swaylock -f -C ~/.config/swaylock/config'\
    timeout 770 'swaymsg "output * power off"' \
    resume 'swaymsg "output * power on"' \
    before-sleep 'swaylock -C ~/.config/swaylock/config'
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 300 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.

## Lock Screen
    bindsym $mod+f1 exec ~/.config/sway/scripts/lockman.sh

### Key bindings
#
# Basics:
#
    # Start a floating terminal
    bindsym $mod+Return exec $term-float

    # Open the power menu
    bindsym $mod+Shift+e exec $powermenu

    # Kill focused window
    bindsym $mod+q kill

    # Start your launcher
    bindsym $mod+d exec $menu

    # Activities
    bindsym $mod+p exec ~/.config/wofi/windows.py

    # Drag floating windows by holding down $mod and left mouse button.
    # Resize them with right mouse button + $mod.
    # Despite the name, also works for non-floating windows.
    # Change normal to inverse to use left mouse button for resizing and right
    # mouse button for dragging.
    floating_modifier $mod normal

    # Reload the configuration file
    bindsym $mod+Shift+r reload

#
# Moving around:
#
    # Move your focus around
    bindsym $mod+$left focus left
    bindsym $mod+$down focus down
    bindsym $mod+$up focus up
    bindsym $mod+$right focus right
    # Or use $mod+[up|down|left|right]
    bindsym $mod+Left focus left
    bindsym $mod+Down focus down
    bindsym $mod+Up focus up
    bindsym $mod+Right focus right

    # Move the focused window with the same, but add Shift
    bindsym $mod+Shift+$left move left
    bindsym $mod+Shift+$down move down
    bindsym $mod+Shift+$up move up
    bindsym $mod+Shift+$right move right
    # Ditto, with arrow keys
    bindsym $mod+Shift+Left move left
    bindsym $mod+Shift+Down move down
    bindsym $mod+Shift+Up move up
    bindsym $mod+Shift+Right move right
#
# Workspaces:
#
    # Switch to workspace
    bindsym $mod+1 workspace number 1
    bindsym $mod+2 workspace number 2
    bindsym $mod+3 workspace number 3
    bindsym $mod+4 workspace number 4
    bindsym $mod+5 workspace number 5
    bindsym $mod+6 workspace number 6
    bindsym $mod+7 workspace number 7
    bindsym $mod+8 workspace number 8
    bindsym $mod+9 workspace number 9
    bindsym $mod+0 workspace number 10
    # Move focused container to workspace
    bindsym $mod+Shift+1 move container to workspace number 1
    bindsym $mod+Shift+2 move container to workspace number 2
    bindsym $mod+Shift+3 move container to workspace number 3
    bindsym $mod+Shift+4 move container to workspace number 4
    bindsym $mod+Shift+5 move container to workspace number 5
    bindsym $mod+Shift+6 move container to workspace number 6
    bindsym $mod+Shift+7 move container to workspace number 7
    bindsym $mod+Shift+8 move container to workspace number 8
    bindsym $mod+Shift+9 move container to workspace number 9
    bindsym $mod+Shift+0 move container to workspace number 10
    # Note: workspaces can have any name you want, not just numbers.
    # We just use 1-10 as the default.
#
# Layout stuff:
#
    # You can "split" the current object of your focus with
    # $mod+b or $mod+v, for horizontal and vertical splits
    # respectively.
    bindsym $mod+b splith
    bindsym $mod+v splitv

    # Switch the current container between different layout styles
    bindsym $mod+s layout stacking
    bindsym $mod+w layout tabbed
    bindsym $mod+e layout toggle split

    # Make the current focus fullscreen
    bindsym $mod+f fullscreen

    # Toggle the current focus between tiling and floating mode
    bindsym $mod+Shift+space floating toggle

    # Swap focus between the tiling area and the floating area
    bindsym $mod+space focus mode_toggle

    # Move focus to the parent container
    bindsym $mod+a focus parent
#
# Scratchpad:
#
    # Sway has a "scratchpad", which is a bag of holding for windows.
    # You can send windows there and get them back later.

    # Move the currently focused window to the scratchpad
    bindsym $mod+Shift+minus move scratchpad

    # Show the next scratchpad window or hide the focused scratchpad window.
    # If there are multiple scratchpad windows, this command cycles through them.
    bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
    # left will shrink the containers width
    # right will grow the containers width
    # up will shrink the containers height
    # down will grow the containers height
    bindsym $left resize shrink width 10px
    bindsym $right resize grow width 10px
    bindsym $up resize shrink height 10px
    bindsym $down resize grow height 10px

    # Ditto, with arrow keys
    bindsym Left resize shrink width 10px
    bindsym Right resize grow width 10px
    bindsym Up resize shrink height 10px
    bindsym Down resize grow height 10px

    # Return to default mode
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

bindsym $mod+r mode "resize"

# Resize floating windows with mouse scroll:
    bindsym --whole-window --border $mod+button4 resize shrink height 5 px or 5 ppt
    bindsym --whole-window --border $mod+button5 resize grow height 5 px or 5 ppt
    bindsym --whole-window --border $mod+Shift+button4 resize shrink width 5 px or 5 ppt
    bindsym --whole-window --border $mod+Shift+button5 resize grow width 5 px or 5 ppt

#
# Volume
#
    # Control volume trough pamixer
    # bindsym --locked XF86AudioRaiseVolume exec pamixer -ui 2
    # bindsym --locked XF86AudioLowerVolume exec pamixer -ud 2
    # bindsym --locked XF86AudioMute exec pamixer -t

    # Control volume directly trough pactl
    bindsym --locked XF86AudioRaiseVolume exec $volume_up
    bindsym --locked XF86AudioLowerVolume exec $volume_down
    bindsym --locked XF86AudioMute exec $volume_mute
#
# Player
#
    bindsym XF86AudioPlay exec playerctl play
    bindsym XF86AudioPause exec playerctl pause
    bindsym XF86AudioNext exec playerctl next
    bindsym XF86AudioPrev exec playerctl previous
#
# Backlight
#
    bindsym XF86MonBrightnessUp exec brightnessctl -c backlight set +5%
    bindsym XF86MonBrightnessDown exec brightnessctl -c backlight set 5%-
#
# App shortcuts
#
    bindsym $mod+n exec thunar
    bindsym $mod+o exec firefox
#
# Screenshots
#
    bindsym print exec /usr/share/sway/scripts/grimshot --notify save output
    bindsym Shift+print exec ~/.config/sway/scripts/screenshot.sh
#
# Keybindings List
#
    bindsym $mod+t exec xed ~/.config/sway/cheatsheet
➜  ~

What type of keyboard layout is in use? If it is a French layout, you must set it up with this special configuration:

Workspace switching on the French layout

Because French number keys only produce numbers when Shift is pressed (or Caps Lock is active), you’ll need to setup key bindings with the various special characters under the numbers (&, é, ", etc):

bindsym $mod+ampersand workspace 1
bindsym $mod+eacute workspace 2
bindsym $mod+quotedbl workspace 3
bindsym $mod+apostrophe workspace 4
bindsym $mod+parenleft workspace 5
bindsym $mod+minus workspace 6	# +section on Apple keyboards
bindsym $mod+egrave workspace 7
bindsym $mod+underscore workspace 8	# +exclam on Apple keyboards
bindsym $mod+ccedilla workspace 9
bindsym $mod+agrave workspace 10

Source: https://github.com/swaywm/sway/wiki#workspace-switching-on-the-french-layout

Yup I’m french, I tried with $mod + & , é " ’ ( - è _ ç à
and didn’t work but imma try this.

update : everything is fine (thank you very much @BluishHumility ). But I’m wondering, if this is hardcoded for my layout I will be in trouble if I switch to a qwerty layout nah ?

1 Like

With a little more hacking around, you can set up keybindings that are bound to a layout. See here: https://wiki.archlinux.org/title/sway#Keybindings_and_keyboard_layouts

Keybindings and keyboard layouts

By default, if you are using more than one keyboard layout, e.g. input * xkb_layout "us,ru", bindings may become broken when you switch on some secondary layout.

Thanks to https://github.com/swaywm/sway/pull/3058, all you need is to add --to-code key to sensitive bindsym lines like this:

bindsym --to-code {
  $mod+$left focus left
  $mod+$down focus down
  $mod+$up focus up
  $mod+$right focus right
}

Alternatively you can create a variable set $mybind bindsym --to-code and then replace all instances of bindsym with $mybind like so: $mybind $mod+w thing

thank u very much mate !

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.