I've tested that this is not an issue with xwayland-satellite.
When starting xterm on DISPLAY=:0 (the one niri uses by default when starting xwayland-satellite and when running X11 apps) it doesn't adhere to the keyboard layout I've set on my config. I then run xwayland-satellite manually on the terminal and it starts a new instance on DISPLAY=:1, then I use the command env DISPLAY=:1 xterm and it does adhere to my keyboard layout. I've tested this on both a laptop using Latin American keymap and a desktop using US International keymap and in both instances the same happens.
Config
config-notification {
disable-failed
}
gestures {
hot-corners {
off
}
}
// Input device configuration.
input {
keyboard {
// xkb {
// layout "us"
// variant "altgr-intl"
// options "compose:menu"
// }
repeat-delay 200
repeat-rate 30
numlock
}
touchpad {
tap
natural-scroll
}
mouse {
}
trackpoint {
}
// Focus windows and outputs automatically when moving the mouse into them.
// Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
focus-follows-mouse max-scroll-amount="0%"
}
// Settings that influence how windows are positioned and sized.
layout {
background-color "transparent"
center-focused-column "never"
preset-column-widths {
proportion 0.33333
proportion 0.5
proportion 0.66667
}
default-column-width { proportion 0.5; }
border {
off
width 4
active-color "#707070" // Neutral gray
inactive-color "#d0d0d0" // Light gray
urgent-color "#cc4444" // Softer red
}
shadow {
softness 30
spread 5
offset x=0 y=5
color "#0007"
}
struts {
}
}
layer-rule {
match namespace="^quickshell$"
place-within-backdrop true
}
overview {
workspace-shadow {
off
}
}
environment {
XDG_CURRENT_DESKTOP "niri"
}
hotkey-overlay {
skip-at-startup
}
prefer-no-csd
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
animations {
workspace-switch {
spring damping-ratio=0.80 stiffness=523 epsilon=0.0001
}
window-open {
duration-ms 150
curve "ease-out-expo"
}
window-close {
duration-ms 150
curve "ease-out-quad"
}
horizontal-view-movement {
spring damping-ratio=0.85 stiffness=423 epsilon=0.0001
}
window-movement {
spring damping-ratio=0.75 stiffness=323 epsilon=0.0001
}
window-resize {
spring damping-ratio=0.85 stiffness=423 epsilon=0.0001
}
config-notification-open-close {
spring damping-ratio=0.65 stiffness=923 epsilon=0.001
}
screenshot-ui-open {
duration-ms 200
curve "ease-out-quad"
}
overview-open-close {
spring damping-ratio=0.85 stiffness=800 epsilon=0.0001
}
}
window-rule {
match app-id=r#"^org\.wezfurlong\.wezterm$"#
default-column-width {}
}
window-rule {
match app-id=r#"^org\.gnome\."#
draw-border-with-background false
geometry-corner-radius 12
clip-to-geometry true
}
window-rule {
match app-id=r#"^gnome-control-center$"#
match app-id=r#"^pavucontrol$"#
match app-id=r#"^nm-connection-editor$"#
default-column-width { proportion 0.5; }
open-floating false
}
window-rule {
match app-id=r#"^gnome-calculator$"#
match app-id=r#"^galculator$"#
match app-id=r#"^qalculate*"#
match app-id=r#"^blueman-manager$"#
match app-id=r#"^org\.gnome\.Nautilus$"#
match app-id=r#"^xdg-desktop-portal$"#
open-floating true
}
window-rule {
match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"#
default-floating-position x=10 y=10 relative-to="bottom-right"
open-focused false
}
window-rule {
match app-id=r#"^org\.wezfurlong\.wezterm$"#
match app-id="Alacritty"
match app-id="zen"
match app-id="com.mitchellh.ghostty"
match app-id="kitty"
draw-border-with-background false
}
window-rule {
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
match app-id="zoom"
open-floating true
}
// Open dms windows as floating by default
window-rule {
match app-id=r#"org.quickshell$"#
open-floating true
}
debug {
honor-xdg-activation-with-invalid-serial
}
// Override to disable super+tab
recent-windows {
binds {
Alt+Tab { next-window scope="output"; }
Alt+Shift+Tab { previous-window scope="output"; }
Alt+grave { next-window filter="app-id"; }
Alt+Shift+grave { previous-window filter="app-id"; }
}
}
spawn-at-startup "lf-dbus"
spawn-at-startup "udiskie" "-t"
spawn-at-startup "kdeconnect-indicator"
// Include dms files
include "dms/colors.kdl"
include "dms/layout.kdl"
include "dms/alttab.kdl"
include "dms/binds.kdl"
include "dms/outputs.kdl"
include "dms/cursor.kdl"
// Include local files
include "local/kblayout.kdl"
// Contents of local/kblayout.kdl
input {
keyboard {
xkb {
layout "us"
model "pc104"
variant "altgr-intl"
options "compose:menu"
}
}
}
System Information
- Distro: Arch Linux x86_64
- GPU 1: AMD Radeon RX 7800 XT [Discrete]
- GPU 2: AMD Raphael [Integrated]
- CPU: AMD Ryzen 5 7600X (12) @ 5.46 GHz
I've tested that this is not an issue with xwayland-satellite.
When starting xterm on
DISPLAY=:0(the one niri uses by default when starting xwayland-satellite and when running X11 apps) it doesn't adhere to the keyboard layout I've set on my config. I then run xwayland-satellite manually on the terminal and it starts a new instance onDISPLAY=:1, then I use the commandenv DISPLAY=:1 xtermand it does adhere to my keyboard layout. I've tested this on both a laptop using Latin American keymap and a desktop using US International keymap and in both instances the same happens.Config
System Information