I3wm Select multiple iems with Ctrl not working

Hi,
Its me again, with another inane Q
I have tried to search but cant find anything relevant

In my i3 AL, Thunar, LibreOffice and Joplin (and I would guess other apps) using Ctrl + mouse click to select multiple items ad hoc does not work
Using Shift & mouse click to select a range of items does work
This is for both Left and Right Ctrl keys

The only keybind I have in my config using Control is:

bindsym Control+r mode "resize"

And even commenting this out does not solve this problem

On the same machine and instance of AL, booting into Open Box, Ctrl + mouse click does work to select ad hoc items

Is this a known problem with i3?

And ideas how to solve as its a bit annoying

Please!

PS: Full config:

# ArchLabs i3 config
# Modified by Leigh

# mod key used for most binds
# Mod1 = Alt
# Mod4 = Super
set $Mod Mod4

# border & title
for_window [class="^.*"] border pixel 1, title_format "<b> %class >> %title </b>"

# gaps
gaps inner 4
gaps outer 0

bindsym $Mod+shift+b border toggle

# Setting border style to pixel eliminates title bars
default_border pixel

# wallpaper
exec --no-startup-id sleep 2 && nitrogen --restore

# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:DejaVu Sans Mono 12


###############        Bar         ##################
bar {
#Toggle Hide bar (needs bindsym $mod+h bar mode toggle below)
#    mode hide
    modifier None
    output HDMI1
    position top
	font pango:Noto Sans Regular 12, FontAwesome 12
    status_command i3status --config ~/.config/i3/i3status.conf
}

bar {
#Toggle Hide bar (needs bindsym $mod+h bar mode toggle below)
#    mode hide
    modifier None
    output eDP1
    position bottom
	font pango:Noto Sans Regular 12, FontAwesome 12
    tray_output none
    status_command i3status --config ~/.config/i3/i3status2.conf
}


bindsym $mod+p bar mode toggle

###############     Autostart      ##################

# run with reload
exec_always --no-startup-id xrdb -load ~/.Xresources

#exec --no-startup-id thunar

#exec --no-startup-id xfce4-terminal

# autotiling
exec --no-startup-id autotiling -w 1

#############         Bindings           ##################

# launchers
bindsym $mod+r exec --no-startup-id rofi_run -r

# kill focused window
bindsym $Mod+q kill

# core
bindsym $Mod+w             exec --no-startup-id al-browser
bindsym $Mod+f             exec --no-startup-id al-filemanager
bindsym $Mod+t             exec --no-startup-id al-terminal

# logout script
bindsym $Mod+x exec --no-startup-id rofi_run -l

# Screenshot
#bindsym Print exec --no-startup-id "scrot '%S.png' -e 'mv $f $$(xdg-user-dir PICTURES)/ArchLabs-%S-$wx$h.png ; gthumb $$(xdg-user-dir PICTURES)/ArchLabs-%S-$wx$h.png'"
bindsym Print exec --no-startup-id "scrot '%S.png' -e 'mv $f ~/Pictures/ScreenShots/ScreenShot_%y-%m-%d_%H:%M:%S.png ; gthumb ~/Pictures/ScreenShots/ScreenShot_%y-%m-%d_%H:%M:%S.png'"

# audio
bindsym XF86AudioPlay        exec --no-startup-id playerctl play-pause
bindsym XF86AudioNext        exec --no-startup-id playerctl next
bindsym XF86AudioPrev        exec --no-startup-id playerctl previous
bindsym XF86AudioStop        exec --no-startup-id playerctl stop
bindsym XF86AudioMute        exec --no-startup-id pamixer -t
bindsym XF86AudioRaiseVolume exec --no-startup-id pamixer -i 2
bindsym XF86AudioLowerVolume exec --no-startup-id pamixer -d 2

# backlight
bindsym XF86MonBrightnessUp   exec --no-startup-id xbacklight -inc 10
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10

# Toggle WM
bindsym $mod+a exec ~/.local/bin/WM_Toggle

# start Calibre
bindsym $mod+c exec calibre

# start Editor (xed)
bindsym $mod+e exec xed

# start Grsync
bindsym $mod+g exec grsync

# Start Joplin
bindsym $mod+j exec joplin-desktop

# start Nextcloud
bindsym $mod+n exec nextcloud

# start Skype
bindsym $mod+s exec skypeforlinux

# start VirtualBox
bindsym $mod+v exec virtualbox

# start Zoom
bindsym $mod+z exec zoom


###########          Workspace Bindings          ###############

# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.

set $ws1 "1:"
set $ws2 "2:"
set $ws3 "3:"
set $ws4 "4:"
set $ws5 "5:"
set $ws6 "6:"
set $ws7 "7:"
set $ws8 "8:"
set $ws9 "9:"

# bind program to workspace and focus to them on startup:
# window rules, you can find the window class using xprop
# (?i) means case insensitive
assign [class=Xfce4-terminal|Grsync|GParted|Gnome-disks] $ws1
assign [class=Thunar] $ws2
assign [class=(?i)firefox|Chromium|Yad] $ws3
assign [class=Joplin] $ws4
assign [class=Shotwell|Gthumb] $ws5
assign [class=Xed|calibre|Atril] $ws6
assign [class=zoom|Skype] $ws7
assign [class="(?i)soffice"] $ws8
assign [class="(?i)libreoffice.*"] $ws8
for_window [class="libreoffice-calc"] move container to workspace $ws9


# automatic set focus new window if it opens on a workspace other than the current one:
for_window [class=Xfce4-terminal] focus
for_window [class=(?i)firefox|Chromium] focus
for_window [class=Thunar] focus
for_window [class=Xed] focus
for_window [class=Joplin] focus
for_window [class=Shotwell|Gthumb] focus
for_window [class=calibre|Atril] focus
for_window [class=zoom|Vinagre] focus
for_window [class=GParted|Gnome-Disks|Grsync] focus

# use workspaces on different displays:
# where you have to replace VGA-0/HDMI-0 with the names for your displays
# you can get from xrandr command
workspace $ws1 output eDP1
workspace $ws2 output eDP1
workspace $ws3 output HDMI1
workspace $ws4 output HDMI1
workspace $ws5 output HDMI1
workspace $ws6 output HDMI1
workspace $ws7 output HDMI1
workspace $ws8 output HDMI1
workspace $ws9 output HDMI1

# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9

# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9


##############     Reload configs           ################

# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $Mod+Shift+r restart

# reload the configuration file
bindsym $Mod+Shift+c reload

############      Container/Window control  ############

# Floating
bindsym $Mod+space floating toggle
floating_modifier  ctrl
for_window [class="Blueberry.py" instance="blueberry.py"] floating enable
for_window [class="Yad" instance="yad"] floating enable
for_window [class="Grsync"] floating enable
for_window [class="GParted"] floating enable
for_window [class="Gnome-disks"] floating enable

# Keyhints
for_window [title="Keyhints"] sticky enable # keep on top
bindsym $mod+F1 exec ~/.local/bin/keyhint.sh

#Scratchpad
bindsym $Mod+Shift+d move scratchpad
bindsym $Mod+d scratchpad show

# change focus with the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right

# move focused window with the cursor 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

# container layout
# split in horizontal orientation
bindsym $mod+Shift+h split h

# split in vertical orientation
bindsym $mod+Shift+v split v

default_orientation horizontal

# resize window using arrows
bindsym Control+r mode "resize"

mode "resize" {
        # These bindings trigger as soon as you enter the resize mode

        # Pressing left will shrink the window’s width.
        # Pressing right will grow the window’s width.
        # Pressing up will shrink the window’s height.
        # Pressing down will grow the window’s height.
        bindsym Left resize shrink width 10 px or 10 ppt
        bindsym Down resize grow height 10 px or 10 ppt
        bindsym Up resize shrink height 10 px or 10 ppt
        bindsym Right resize grow width 10 px or 10 ppt

        # back to normal: Enter or Escape or $mod+r
        bindsym Return mode "default"
        bindsym Escape mode "default"
        bindsym $mod+r mode "default"

}

Doh!
Sometimes you need to ask someone’s advice to stimulate yourself to immediately find the answer - sorry!

floating_modifier  ctrl

When I comment this out, i3 ctrl + click gives me ad hoc select

I’ll leave this here as a resource for others (although I am perhaps the only one who would not find this obvious :smiley: )

2 Likes

Lol, a great thing that you fixed it yourself @leigh

Please mark it as Solved as it can be of some help to other members in the future !

1 Like

Done, I was just a bit dubious about asking a daft Q then solving it myself and marking my own solution as solved :rofl:

Yes sir !

1 Like

Are keybindings that begin with $mod - like this:

# start Editor (xed)
bindsym $mod+e exec xed

working correctly?

1 Like

yup, all working
The problem was that ctrl as floating modifier keybind.
I will change that to something else as I use ctrl a lot for selecting things

I was just curious because you have:

# mod key used for most binds
# Mod1 = Alt
# Mod4 = Super
set $Mod Mod4

but no

set $mod <some mod key>

in your config. Apparently it’s not case sensitive.

1 Like

must be case insensitive - ne’er noticed that

It’s just best practice to not use ctrl as a solo modifier, many applications use this heavily. In combination with other modifiers it’s fine though, like alt-ctrl-…

2 Likes

Thanks @natemaia


floating_modifier  ctrl+Mod1

That works, but because I am a freaky sinister lefthander its not too comfy

I need to use the Right ctrl+alt gr.
I will look into that

EDIT, actually ctrl + numlock is more comfy and numlock is already assigned to Mod2 so I used that:

i3 config:

floating_modifier  ctrl+Mod2
leigh@archlabs ~ % xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_L (0x42),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        ISO_Level5_Shift (0xcb)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c)