Hyprland keyboard layout issue

Hello to all and happy Holidays!

My Issue:

I added another language (ru) to the config file and it saves it and works fine, but the second language that i added is automatically removed after restart. I did comment out exec-once = mon.sh line.

########################################################################################
AUTOGENERATED HYPR CONFIG.
PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
########################################################################################

#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#

#autogenerated = 1 # remove this line to remove the warning

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = eDP-1, 1920x1080@60.09600, 0x0, 1.00
monitor = HDMI-A-2, 1920x1080@60.00000, 1920x0, 1.00
# See https://wiki.hyprland.org/Configuring/Keywords/ for more

# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox

# Add networkmanager applet to tray in waybar
exec-once = nm-applet --indicator

# Set keyboard layout
exec-once = .local/bin/garuda-locale.sh

# Set monitor values. For own values, please comment with #
#exec-once = .local/bin/mon.sh
exec-once = pypr

# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/

input {
kb_layout = us
#    kb_variant =
#    kb_model =
    kb_options = grp:shifts_toggle
#    kb_rules =
    numlock_by_default = true
    follow_mouse = 1
       
touchpad {
    natural_scroll = true
    tap-to-click = true
    disable_while_typing = true
}


    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 5
    gaps_out = 10
    border_size = 2
    col.active_border = rgba(33ccffee) rgba(8f00ffee) 45deg
    col.inactive_border = rgba(595959aa)

    layout = dwindle
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 10
    blur {
       enabled = true
       size = 5
       passes = 1
    }

    drop_shadow = true
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
}

animations {
    enabled = true

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, default, popin 80%
    animation = border, 1, 10, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
    preserve_split = true # you probably want this
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
    new_is_master = true
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = on
}
misc {
	disable_hyprland_logo = true
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic mouse V1 {
    sensitivity = -0.5
}

# binding workspaces to monitors

workspace = name:1, monitor:DP-1, default:true
workspace = name:2, monitor:DP-1, default:true
workspace = name:3, monitor:DP-1, default:true
workspace = name:4, monitor:DP-1, default:true
workspace = name:5, monitor:DP-1, default:true
workspace = name:6, monitor:HDMI-A-2, default:true
workspace = name:7, monitor:HDMI-A-2, default:true
workspace = name:8, monitor:HDMI-A-2, default:true
workspace = name:9, monitor:HDMI-A-2, default:true
workspace = name:10, monitor:HDMI-A-2, default:true
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPERTR

#bind = CONTROL SHIFT, , exec, hyprctl keyword input: kb_layout ru,
#bind = ALT SHIFT, , exec, hyprctl keyword input: kb_layout us,
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod SHIFT, R, exec, hyprctl reload
bind = $mainMod, 36, exec, footclient
bind = $mainMod, T, exec, footclient
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, E, exec, nwgbar
bind = $mainMod, N, exec, thunar
bind = $mainMod SHIFT, 65, togglefloating
bind = $mainMod, D, exec, wofi --show drun --allow-images
bind = $mainMod SHIFT, D, exec, nwg-drawer
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, G, exec, gimp
bind = $mainMod, A, exec, authenticator
bind = $mainMod, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
#bind = $mainMod, W, exec, cliphist wipe

# Mainmod + Function keys
bind = $mainMod, F1, exec, firedragon
bind = $mainMod, F2, exec, vlc
bind = $mainMod, F3, exec, thunar
bind = $mainMod, F4, exec, geany
bind = $mainMod, F5, exec, brave
bind = $mainMod, F6, exec, gparted
bind = $mainMod, F7, exec, librewolf
bind = $mainMod, F8, exec, strawberry
bind = $mainMod, F9, exec, meld
bind = $mainMod, F10, exec, zoom
bind = $mainMod, F11, exec, snapper-tools
bind = $mainMod, F12, exec, galculator

#Scratchpads
bind = SUPERSHIFT,t,exec,pypr toggle term && hyprctl dispatch bringactivetotop
#bind = SUPERSHIFT,f,exec,pypr toggle thunar && hyprctl dispatch bringactivetotop
bind = SUPERSHIFT,v,exec,pypr toggle vol && hyprctl dispatch bringactivetotop

# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Move to workspace with focused container with ALT + SHIFT + [0-9]
bind = ALT SHIFT, 1, movetoworkspace, 1
bind = ALT SHIFT, 2, movetoworkspace, 2
bind = ALT SHIFT, 3, movetoworkspace, 3
bind = ALT SHIFT, 4, movetoworkspace, 4
bind = ALT SHIFT, 5, movetoworkspace, 5
bind = ALT SHIFT, 6, movetoworkspace, 6
bind = ALT SHIFT, 7, movetoworkspace, 7
bind = ALT SHIFT, 8, movetoworkspace, 8
bind = ALT SHIFT, 9, movetoworkspace, 9
bind = ALT SHIFT, 0, movetoworkspace, 10

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

#background
exec-once = wpaperd

#status bar
exec-once = waybar
layerrule = blur , waybar
layerrule = ignorezero , waybar

# set volume (laptops only and may or may not work on PCs)
bind = ,122, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
bind = ,123, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
bind = ,121, exec, pactl set-sink-volume @DEFAULT_SINK@ 0%
# other bindings
bind = $mainMod, O, exec, firedragon
bind = $mainMod, F, fullscreen
bind = $mainMod SHIFT, F, fakefullscreen
bind = ,232,exec,brightnessctl -c backlight set 5%-
bind = ,233,exec,brightnessctl -c backlight set +5%
bind = $mainMod SHIFT,C, exec, killall -9 wpaperd && wpaperd

# Screenshots:

# https://github.com/hyprwm/contrib/blob/main/grimblast/grimblast.1.scd
# Print: All outputs
# SHIFT+Print: Select area
# $mainMod+Print: Current window
# $mainMod+Shfit+Print: Current output

bind = ,Print, exec, grimblast save screen && notify-send Screenshot captured
bind = SHIFT, Print, exec, grimblast save area && notify-send Selected\ area captured
bind = $mainMod, Print, exec, grimblast save active && notify-send Active\ window captured
bind = $mainMod SHIFT, Print, exec, grimblast output active && notify-send Output captured

# for resizing window
# will switch to a submap called resize
bind=$mainMod,R,submap,resize

# will start a submap called "resize"
submap=resize

# sets repeatable binds for resizing the active window
binde=,right,resizeactive,10 0
binde=,left,resizeactive,-10 0
binde=,up,resizeactive,0 -10
binde=,down,resizeactive,0 10

# use reset to go back to the global submap
bind=,escape,submap,reset

# will reset the submap, meaning end the current one and return to the global one
submap=reset

# to move window
bind = $mainMod SHIFT,up, movewindow, u
bind = $mainMod SHIFT,down, movewindow, d
bind = $mainMod SHIFT,left, movewindow, l
bind = $mainMod SHIFT,right, movewindow, r

# other blurings
blurls = wofi
blurls = thunar
blurls = gedit
blurls = gtk-layer-shell # for nwg-drawer
blurls = catfish
# window rules
windowrule = opacity 0.85 override 0.85 override,^(thunar)$
windowrule = opacity 0.85 override 0.85 override,^(gedit)$
windowrule = opacity 0.85 override 0.85 override,^(catfish)$
#window rules with evaluation
windowrulev2 = opacity 0.85 0.85,floating:1
windowrulev2 = workspace 1, class:^(firedragon)$
windowrulev2 = workspace 6, class:^(freetube)$
windowrulev2 = workspace 7, class:^(thunderbird)$
windowrulev2 = workspace 7, class:^(tutanota-desktop)$
windowrulev2 = workspace 7, class:^(electron-mail)$

#scratchpads
$scratchpadsize = size 80% 85%
$scratchpad = class:^(scratchpad)$
windowrulev2 = float,$scratchpad
windowrulev2 = $scratchpadsize,$scratchpad
windowrulev2 = workspace special silent,$scratchpad
windowrulev2 = center,$scratchpad

exec-once = mako
exec-once =/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once = foot --server
# experimental(might work might won't)

#pre executions (under development)
exec-once=exec xrdb -load ~/.Xresources
exec-once=cliphist
#exec-once=wl-paste -t text --watch clipman store
exec-once=wl-clipboard-history -t

#video play paues bindings
bind=,172,exec,playerctl play-pause
bind=,171,exec,playerctl next
bind=,173,exec,playerctl previous

# Use gtk-settings
exec-once = apply-gsettings

# Install Garuda Hyprland
bind = $mainMod, I, exec, .local/bin/calamares.sh

# start my apps
exec-once = firedragon
exec-once = tutanota
exec-once = thunderbird
exec-once = electron-mail
exec-once = freetube

I have 2 scratchpads setup, but the last one (vol) does not want to be in floating mode:

{
	"pyprland": {
	   "plugins": ["scratchpads"]
	},
	
	"scratchpads": {
	    "term": {
	       "command": "alacritty --class scratchpad",
	       "margin": 50,
	       "animation": "fromTop",
	       "unfocus": "hide"
	     },
	     "vol": {
		   "command": "pavucontrol --class scratchpad",
		   "animation": "fromRight"
		 }
    }
}

Here is my garuda.inxi

System:
  Kernel: 6.6.7-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 13.2.1
    clocksource: tsc available: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=dd9fd6ec-3b83-4828-8464-f7f638424e5c rw rootflags=subvol=@
    quiet resume=UUID=ecf14cac-c4c2-498e-963b-a82243df27a8 loglevel=3 ibt=off
  Desktop: Hyprland info: waybar vt: 1 dm: SDDM Distro: Garuda Linux
    base: Arch Linux
Machine:
  Type: Laptop System: ASUSTeK product: N550JV v: 1.0
    serial: <superuser required>
  Mobo: ASUSTeK model: N550JV v: 1.0 serial: <superuser required>
    UEFI: American Megatrends v: N550JV.207 date: 09/17/2013
Battery:
  ID-1: BAT0 charge: 35.4 Wh (60.1%) condition: 58.9/59.2 Wh (99.5%)
    power: 24.0 W volts: 14.8 min: 14.8 model: ASUSTeK N550-40 type: Li-ion
    serial: N/A status: discharging cycles: 592
CPU:
  Info: model: Intel Core i7-4700HQ bits: 64 type: MT MCP arch: Haswell
    gen: core 4 level: v3 note: check built: 2013-15 process: Intel 22nm
    family: 6 model-id: 0x3C (60) stepping: 3 microcode: 0x28
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache:
    L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB desc: 4x256 KiB
    L3: 6 MiB desc: 1x6 MiB
  Speed (MHz): avg: 1398 high: 2395 min/max: 800/3400 scaling:
    driver: intel_cpufreq governor: schedutil cores: 1: 2395 2: 800 3: 2395
    4: 2395 5: 800 6: 800 7: 800 8: 800 bogomips: 38312
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities: <filter>
Graphics:
  Device-1: Intel 4th Gen Core Processor Integrated Graphics vendor: ASUSTeK
    driver: i915 v: kernel arch: Gen-7.5 process: Intel 22nm built: 2013 ports:
    active: eDP-1 empty: DP-1,HDMI-A-1,HDMI-A-2 bus-ID: 00:02.0
    chip-ID: 8086:0416 class-ID: 0300
  Device-2: NVIDIA GK107M [GeForce GT 750M] vendor: ASUSTeK driver: nouveau
    v: kernel non-free: series: 470.xx+ status: legacy-active (EOL~2024-09-xx)
    arch: Kepler code: GKxxx process: TSMC 28nm built: 2012-2018 pcie: gen: 1
    speed: 2.5 GT/s lanes: 16 link-max: gen: 3 speed: 8 GT/s bus-ID: 01:00.0
    chip-ID: 10de:0fe4 class-ID: 0302 temp: 42.0 C
  Device-3: Chicony HD WebCam (Asus N-series) driver: uvcvideo type: USB
    rev: 2.0 speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-1.3:3
    chip-ID: 04f2:b3fd class-ID: 0e02 serial: <filter>
  Display: wayland server: X.org v: 1.21.1.10 with: Xwayland v: 23.2.3
    compositor: Hyprland driver: X: loaded: modesetting
    alternate: fbdev,intel,nouveau,nv,vesa dri: crocus,nouveau gpu: i915
    display-ID: 1
  Monitor-1: eDP-1 model: Samsung 0x324c built: 2013 res: 1920x1080 hz: 60
    dpi: 142 gamma: 1.2 scale: 1 size: 344x194mm (13.54x7.64")
    diag: 395mm (15.5") ratio: 16:9 modes: 1920x1080
  API: Vulkan Message: No Vulkan data available.
  API: EGL Message: EGL data requires eglinfo. Check --recommends.
Audio:
  Device-1: Intel Xeon E3-1200 v3/4th Gen Core Processor HD Audio
    driver: snd_hda_intel v: kernel bus-ID: 00:03.0 chip-ID: 8086:0c0c
    class-ID: 0403
  Device-2: Intel 8 Series/C220 Series High Definition Audio
    vendor: ASUSTeK 8 driver: snd_hda_intel v: kernel bus-ID: 00:1b.0
    chip-ID: 8086:8c20 class-ID: 0403
  API: ALSA v: k6.6.7-zen1-1-zen status: kernel-api tools: N/A
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: PipeWire v: 1.0.0 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel Wireless 7260 driver: iwlwifi v: kernel pcie: gen: 1
    speed: 2.5 GT/s lanes: 1 bus-ID: 04:00.0 chip-ID: 8086:08b1 class-ID: 0280
  IF: wlp4s0 state: up mac: <filter>
  Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    vendor: ASUSTeK driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s
    lanes: 1 port: d000 bus-ID: 05:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: enp5s0 state: down mac: <filter>
Bluetooth:
  Device-1: TP-Link UB500 Adapter driver: btusb v: 0.8 type: USB rev: 1.1
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 2-1.1:3 chip-ID: 2357:0604
    class-ID: e001 serial: <filter>
  Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 5.1
    lmp-v: 10 status: discoverable: no pairing: no class-ID: 6c010c
Drives:
  Local Storage: total: 1.36 TiB used: 11.21 GiB (0.8%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/sda maj-min: 8:0 vendor: Samsung model: ST1000LM024 HN-M101MBB
    size: 931.51 GiB block-size: physical: 4096 B logical: 512 B speed: 3.0 Gb/s
    tech: HDD rpm: 5400 serial: <filter> fw-rev: 0002 scheme: GPT
  ID-2: /dev/sdb maj-min: 8:16 vendor: Samsung model: SSD 860 EVO 500GB
    size: 465.76 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    tech: SSD serial: <filter> fw-rev: 1B6Q scheme: GPT
Partition:
  ID-1: / raw-size: 922.42 GiB size: 922.42 GiB (100.00%)
    used: 11.2 GiB (1.2%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 576 KiB (0.2%) fs: vfat dev: /dev/sda1 maj-min: 8:1
  ID-3: /home raw-size: 922.42 GiB size: 922.42 GiB (100.00%)
    used: 11.2 GiB (1.2%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
  ID-4: /var/log raw-size: 922.42 GiB size: 922.42 GiB (100.00%)
    used: 11.2 GiB (1.2%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
  ID-5: /var/tmp raw-size: 922.42 GiB size: 922.42 GiB (100.00%)
    used: 11.2 GiB (1.2%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 7.64 GiB used: 0 KiB (0.0%) priority: 100
    comp: zstd avail: lzo,lzo-rle,lz4,lz4hc,842 max-streams: 8 dev: /dev/zram0
  ID-2: swap-2 type: partition size: 8.8 GiB used: 0 KiB (0.0%) priority: -2
    dev: /dev/sda3 maj-min: 8:3
Sensors:
  System Temperatures: cpu: 52.0 C mobo: N/A gpu: nouveau temp: 43.0 C
  Fan Speeds (rpm): cpu: 4100
Info:
  Processes: 254 Uptime: 1m wakeups: 0 Memory: total: 8 GiB
  available: 7.64 GiB used: 2.49 GiB (32.6%) Init: systemd v: 255
  default: graphical tool: systemctl Compilers: gcc: 13.2.1 Packages: 1242
  pm: pacman pkgs: 1224 libs: 349 tools: paru pm: flatpak pkgs: 18 Shell: fish
  v: 3.6.4 running-in: foot inxi: 3.3.31
Garuda (2.6.21-1):
  System install date:     2023-12-11
  Last full system update: 2023-12-19
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut
  Windows dual boot:       No/Undetected
  Failed units:  

Thank you for your help!

P.S. Found out that Thunar does not like to be a scratchpad. You can’t copy files and you can’t open it regularly. Thunar does file manipulations outside if it is not a scratchpad, but not for very long. So I am thinking of using different file manager.

hello, please follow the template. Only one issue per topic and please post your garuda-inxi

:warning: Missing information requested in the template may result in not receiving assistance :warning:

Make sure you have done the following before you post:

Issue still unresolved? Then:

  • ONE issue per topic.
  • Describe your issue in detail. The more we know, the better we can help
  • Show us the results of your searches, and what you’ve tried
  • After rebooting, post the FULL output of garuda-inxi in the body of the post (not linked externally, or collapsed with the “hide details” feature)
  • Format terminal output (including your garuda-inxi) as a code block by clicking the preformatted text button (</) , or put three tildes (~) above and below the text
2 Likes

I found a solution! I commented this line in the config:

exec-once = .local/bin/garuda-locale.sh

Hopefully it helps someone else!

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

Late to the party :slight_smile:

This was fixed at 2023-11-27 with tag 0.4.94

sed -i "s|exec-once = .local/bin/mon.sh|#exec-once = .local/bin/mon.sh|" $HOME/.config/hypr/hyprland.conf

After first boot it is commented. If you see updates in terminal with garuda-hyprland-settings, check folder /etc/skel/ and maybe the forum. There are many fix in the pipeline.

1 Like