Ubuntu + PopOS-shell :: how do you configure the keyboard shortcuts (to try to mimic my i3wm config)?

For later reference, in case I solve this, I’m tracking a script to auto-configure this here: https://github.com/NullVoxPopuli/dotfiles/blob/master/configs.sh

at the time of writing, I have these settings so far:

# For use with https://github.com/pop-os/shell/
#   which is trying to be i3, but on top of gnome
# Use these extensions:
#  https://extensions.gnome.org/extension/3851/workspaces-bar/
#  https://extensions.gnome.org/extension/758/no-workspace-switcher-popup/

# To debug:
# gsettings list-recursively | grep -F "<Super>" # all shortcuts that contain Super
# gsettings list-recursively | grep -F "'<Super>7'" # all Super7 shortcuts

# Use fixed number of workspaces to simulate i3
gsettings set org.gnome.mutter dynamic-workspaces false
gsettings set org.gnome.desktop.wm.preferences num-workspaces 8

# Dock-related hotkeys suck
gsettings set org.gnome.shell.keybindings switch-to-application-1  []
gsettings set org.gnome.shell.keybindings switch-to-application-2  []
gsettings set org.gnome.shell.keybindings switch-to-application-3  []
gsettings set org.gnome.shell.keybindings switch-to-application-4  []
gsettings set org.gnome.shell.keybindings switch-to-application-5  []
gsettings set org.gnome.shell.keybindings switch-to-application-6  []
gsettings set org.gnome.shell.keybindings switch-to-application-7  []
gsettings set org.gnome.shell.keybindings switch-to-application-8  []
gsettings set org.gnome.shell.keybindings switch-to-application-9  []

# <Sumer> + <Workspace #>
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-1  "['<Super>1']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-2  "['<Super>2']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-3  "['<Super>3']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4  "['<Super>4']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-5  "['<Super>5']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-6  "['<Super>6']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-7  "['<Super>7']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-8  "['<Super>8']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-9  "['<Super>9']"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-10 "['<Super>0']"

# Move a window to a particular workspace
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-1  "['<Super><Shift>1']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-2  "['<Super><Shift>2']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-3  "['<Super><Shift>3']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4  "['<Super><Shift>4']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-5  "['<Super><Shift>5']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-6  "['<Super><Shift>6']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-7  "['<Super><Shift>7']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-8  "['<Super><Shift>8']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-9  "['<Super><Shift>9']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-10 "['<Super><Shift>0']"

# Tile Movement -- does this work?
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-left' "['<Super><Shift>h']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-right' "['<Super><Shift>n']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-up' "['<Super><Shift>c']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-down' "['<Super><Shift>t']"

# Hide Icons -- can't have a messy desktop if there are no visible icons!
# (this also fixes the remaining empty tile in pop-shell)
gnome-extensions disable ding@rastersoft.com

So far, this configures the gnome / built in shortcuts to totally ignore the dock (because I launch everything via the quick launcher, and try to use the mouse as infrequently as possible (also the frame.work keyboard just feels so good :smiley: )

But where I’m stuck is that I haven’t found out how to configure the keyboard shortcuts for pop-shell.
I do have this reference for the provided defaults: Pop!_OS Keyboard Shortcuts - System76 Support
but I don’t want to use them as the arrow keys are awkward (on any keyboard).

So, has anyone figured out how to customize the pop-shell shortcuts?
I’ve read things about some program / plugin called: gnome-control-center-pop-shell-shortcuts but I haven’t found how to install it on Ubuntu. :thinking:

Progress! It turns out that I need to enter “edit mode” or “tiling mode” to do most of the stuff I was trying to do outside of those modes.

here are my updated configs:

# pop-shell settings
# schema: https://github.com/pop-os/shell/blob/master/schemas/org.gnome.shell.extensions.pop-shell.gschema.xml
dconf write '/org/gnome/shell/extensions/pop-shell/active-hint' "true"
dconf write '/org/gnome/shell/extensions/pop-shell/hint-color-rgba' "'rgba(158,0,255,0.7)'"
dconf write '/org/gnome/shell/extensions/pop-shell/smart-gaps' "true"
dconf write '/org/gnome/shell/extensions/pop-shell/snap-to-grid' "true"
dconf write '/org/gnome/shell/extensions/pop-shell/gap-inner' "1"
dconf write '/org/gnome/shell/extensions/pop-shell/gap-outer' "1"

# Enter Edit mode
# o - toggle orientation (default)
dconf write '/org/gnome/shell/extensions/pop-shell/tile-enter' "['<Super>u']"
# Focus Movement
dconf write '/org/gnome/shell/extensions/pop-shell/focus-left' "['<Super>h']"
dconf write '/org/gnome/shell/extensions/pop-shell/focus-right' "['<Super>n']"
dconf write '/org/gnome/shell/extensions/pop-shell/focus-up' "['<Super>c']"
dconf write '/org/gnome/shell/extensions/pop-shell/focus-down' "['<Super>t']"
# Tile Movement -- requires "edit mode"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-left' "['<Super>h']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-right' "['<Super>n']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-up' "['<Super>c']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-move-down' "['<Super>t']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-swap-left' "['<Super><Shift>h']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-swap-right' "['<Super><Shift>n']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-swap-up' "['<Super><Shift>c']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-swap-down' "['<Super><Shift>t']"
# Tile Resizing -- requires "edit mode"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-resize-left' "['h']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-resize-right' "['n']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-resize-up' "['c']"
dconf write '/org/gnome/shell/extensions/pop-shell/tile-resize-down' "['t']"

if you use a qwerty layout these may not make sense, so don’t worry about that. :wink:

So, next steps:

  • ask the pop-os/shell folks if we can have an option to do some of these tile edits without going in to “tile mode”

I’ve since given up on pop-os/shell – it’s buggy and not well enough maintained from my perspective – I’ve opened some issues on the repo, and there has been no response.

I’m trying the Forge Extension now, and it’s also ok – it’s at the very least way less buggy than pop-os/shell. Still, I feel that I’m missing the way I had i3wm setup. Modal-based resizing – The ability to enter a “resize mode” and the not have to worry about my keybindings being bound to other things already was really freeing.

Looks like there is a tracking issue for i3 here: [TRACKING] Sway / i3 WM on Framework - #18 by junaruga

As always, the primary issue with i3 is the shell integration:

  • Gnome Settings (power, monitor, other hardware controls)
  • Lockscreen behavior
  • Audio

Some have had success with a bunch of far more manual configuration:

Swap Utils / Plugins:

Additionally, Sway is a i3 drop in replacement, working with Wayland – and sway may be the future? idk.

Curious how compatibility with screen record / share tools would be:

  • Discord
  • Slack
  • Zoom
  • Tuple
  • OBS