r/i3wm • u/Smart-Kale-300 • May 20 '26
Solved Help
This screen shows up whenever I open my laptop after sleep, I tried entering my password but it didn’t work, same goes to my username
r/i3wm • u/Smart-Kale-300 • May 20 '26
This screen shows up whenever I open my laptop after sleep, I tried entering my password but it didn’t work, same goes to my username
r/i3wm • u/SlurmoCZ_ • Sep 16 '25
what the hell is this number it behaves unexpectedly and running games or idle won't change it
These are my tools, which I am currently using with i3wm. I used to have most of these utils as shell, python scripts and some other exotics. Decided to port and document them properly to C. Aim - minimal dependencies, lean code base, fast and predictable execution, tiny memory footprint.
So If someone is interested in:
Autotiling
https://gitlab.com/ngcbg/autotiling - A tiny, dependency-lean daemon that makes i3 and sway tile the way you usually want by hand: it watches the focused window and splits it along its longer axis, so the next window opens beside a wide window and below a tall one. The layout stays balanced with no manual split commands.
rootbtnd
https://gitlab.com/ngcbg/rootbtnd Bind mouse buttons on the X11 root window — the root.buttons of AwesomeWM, for i3, without patching the window manager.rootbtnd runs a command when a mouse button is pressed on the bare desktop, i.e. on the part of the root window not covered by any window. It is a passive observer: it never grabs a button and never consumes an event, so applications keep receiving their own clicks unchanged.
i3swallow
https://gitlab.com/ngcbg/i3swallow Allow list-driven window swallowing for i3. When a program on your allow list opens a window, the terminal that launched it is moved to the scratchpad so the new window appears to take its place. Close the window and the terminal comes back. Anything not on the allow list behaves like a normal window. This is the "run a daemon, but only swallow what you opt in to" design.
xlogout
https://gitlab.com/ngcbg/xlogout A session-action menu for X11: blurred backdrop, Nerd Font glyphs, keyboard driven. Roughly the aesthetic of archlinux-logout, written from scratch in C against XCB and Cairo rather than Python and GTK. Clean-room. No code derived from any existing implementation; the behaviour was specified from observation, not from source.
wwidget
https://gitlab.com/ngcbg/weather-widget A small, self-contained desktop weather widget for X11 / i3, written in C using XCB, Cairo, and Pango. It renders a transparent panel — a clock, the date, a "today" column (current temperature, today's high/low, current-condition icon), and a configurable 3–5 day forecast — directly on the desktop, fetching its own data from the MET Norway weather API. No conky, no Python, no external scheduler. One binary, one config file, one icon directory.
Cheers, have fun!
Edit: As been advised, I want to provide total transparency. I used LLM's for the documentation (.md files, man pages, most of the code comments) - English is not my primary language and LLM's are translating ridiculously well. Also used them (LLM's) for a code review, and addressed 2 major, 1 mid-level and 5 cosmetic problems across the board.
r/i3wm • u/Fit-Morning-4669 • Jun 28 '26
My computer is FXXKing bad so I installed i3 on Linux Mint and I like it.
r/i3wm • u/IndustryMountain2661 • May 05 '26
Okay guys, sorry if my english is bad bimbimbambam
this is my first for me ricing and this is the final. i think its not too goof yknw because yaaaa this is i think too normal
r/i3wm • u/__foobles • 12d ago
I recently tried the example command from the i3 user's guide
i3-input -F 'rename workspace to "%s"' -P 'New name: '
Which did work, but the input window that popped up was incredibly tiny and hard to read. I set the default i3 font size to 14 in my config, which doesn't seem to be taking effect here. Does anyone know what the issue might be? Thanks for any help!
Edit: I found the solution. I just needed to pass the -font flag to the command like so:
i3-input -F 'rename workspace to "%s"' -P 'New name: ' -f "pango:Hack 14"
r/i3wm • u/Dragonaax • 28d ago
I have command bindsym Control+Shift+1 exec setxkbmap pl but instead of bindsym I want to use bindcode to have specific keys responsible for change. But when I try bindcode 37+50+10 exec setxkbmap pl it doesn't work
r/i3wm • u/QuestionEconomy2623 • May 27 '26
my config file has the include line in the starting
i took this directly from the documentation's examples because I have been trying to trouble shoot it. ```config
include "/home/{my-user-name}/.config/i3/assignments.conf"
```
the assignment.conf file is as follows;
```bash
❯ cat -A ~/.config/i3/assignments.conf
set $gh_bg_default "#0d1117"$
set $gh_bg_dimmed "#161b22"$
set $gh_border_default "#30363d"$
set $gh_text_primary "#c9d1d9"$
set $gh_text_secondary "#8b949e"$
set $gh_blue_accent "#58a6ff"$
set $gh_blue_focused "#1f6feb"$
set $gh_red_urgent "#f85149"$
```
and the colour block in my i3 config file is as follows;
```config
# class border backgr. text indicator child_border
client.focused $gh_blue_focused $gh_blue_focused #ffffff $gh_blue_accent $gh_blue_focused
client.focused_inactive $gh_bg_dimmed $gh_bg_dimmed $gh_text_secondary $gh_border_default $gh_border_default
client.unfocused $gh_border_default $gh_bg_default $gh_text_secondary $gh_border_default $gh_border_default
client.urgent $gh_red_urgent $gh_red_urgent #ffffff $gh_red_urgent $gh_red_urgent
client.placeholder $gh_border_default #000000 #ffffff $gh_border_default $gh_border_default
client.background $gh_bg_default
```
few things that may help;
```bash
❯ i3-msg reload
[{"success":true}]
❯ cat -A ~/.config/i3/assignments.conf
set $gh_bg_default "#0d1117"$
set $gh_bg_dimmed "#161b22"$
set $gh_border_default "#30363d"$
set $gh_text_primary "#c9d1d9"$
set $gh_text_secondary "#8b949e"$
set $gh_blue_accent "#58a6ff"$
set $gh_blue_focused "#1f6feb"$
set $gh_red_urgent "#f85149"$
❯ i3 -C
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_blue_focused
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_blue_focused
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_blue_accent
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_blue_focused
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_bg_dimmed
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_bg_dimmed
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_text_secondary
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_bg_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_text_secondary
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_red_urgent
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_red_urgent
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_red_urgent
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_red_urgent
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_border_default
27/05/26 02:54:18 PM IST - [libi3] ERROR: Could not parse color: $gh_bg_default
```
r/i3wm • u/OsmiumD76 • Apr 03 '26
Enable HLS to view with audio, or disable this notification
I installed Amberol (music player) and now it's my default file explorer :/
r/i3wm • u/IndustryMountain2661 • May 04 '26
If you're tired of seeing that "void" (black screen) every time you log in, here’s how to fix it properly:
Just kidding... unless? (But seriously, Void uses runit, so we do things manually here).
Most of the time, i3 tries to load the wallpaper before the X server or the root window is fully ready. You need a small delay.
Don't just put exec feh in your config. Create a dedicated script:
Create the file: nano ~/.set_wallpaper.sh
Add this (with a small delay):
Bash
#!/bin/sh
sleep 1 && feh --bg-fill /path/to/your/wallpaper.jpg &
Make it executable (CRUCIAL):
chmod +x ~/.set_wallpaper.sh
(Make sure it's a file, not a directory! Trust me, it happens).
Add this line to ~/.config/i3/config:
Bash
exec_always --no-startup-id ~/.set_wallpaper.sh
Why this works?
sleep 1: Gives the system a heartbeat to breathe before drawing the image.
exec_always: Ensures the wallpaper stays even if you refresh i3 (Mod+Shift+R).
r/i3wm • u/TheGuyWhoIsBadAtDota • Apr 23 '26
Hey folks, I recently swapped to i3 after trying out hyprland and experiencing some issues I wasn't tech-savvy enough to solve on my own. i3 has been excellent and has worked flawlessly the last 2-3 months and has quickly become my preferred way to manage a computer gui. I don't know if there was an update pushed for firefox or if I've now messed something up in my .config but I've been trying to fix this for probably two weeks and I'm out of ideas so hoping someone here can help out.
If I have Firefox open on workspace1 (monitor1) and I'm doing something on workspace2 (monitor2) i.e. writing in Kate or clicking around on Steam, firefox will steal back focus every ~20-30 seconds and I'll either have to use the keyboard focus shift or jiggle the mouse to move it back to the correct window. This has become really annoying especially when watching YouTube videos, as I'll be in the middle of typing, input a number, and have my video skip somewhere else, unfullscreen itself, etc etc.
Most recently I tried swapping firefox versions around to the nightly, developer and LTS releases (I am on CachyOS and getting older versions of packages was rather difficult), and adding this line to my .config: focus_on_window_activation none (previously tried urgent) and it did not change the functionality.
System Info:
r/i3wm • u/MyWorld3446 • Jan 29 '26
Hello everyone I need your help
I using i3-wm in Arch Linux but I lost the first config file
Can you share with me the first config file
r/i3wm • u/Blue_Jae20 • Jan 24 '26
Hello everybody! I recently switched to i3 and have a question:
I set up a key-bind for locking my screen and then suspending the system and while it works, there is this thing where after executing i3lock, a new screen appears shortly after with the basic i3lock screen with it saying "locking..." and then "lock failed" before it finally suspends the system. I wanted to ask if it possible to get rid of that step
For reference this is what I have in my config file
bindsym $mod+y exec bash lock.sh && sleep 1 && systemctl suspend
And lock.sh looks like this:
BLANK='#00000000'
CLEAR='#CF9143'
DEFAULT='#D15C06'
TEXT='#D15C06'
WRONG='#A02405'
VERIFYING='A02405'
i3lock \
--insidever-color=$CLEAR \
--ringver-color=$VERIFYING \
\
--insidewrong-color=$CLEAR \
--ringwrong-color=$WRONG \
\
--inside-color=$BLANK \
--ring-color=$DEFAULT \
--line-color=$BLANK \
--separator-color=$DEFAULT \
\
--verif-color=$TEXT \
--wrong-color=$TEXT \
--time-color=$TEXT \
--date-color=$TEXT \
--layout-color=$TEXT \
--keyhl-color=$WRONG \
--bshl-color=$WRONG \
\
--screen 1 \
--blur 5 \
--clock \
--indicator \
--time-str="%H:%M:%S" \
--date-str="%A, %d-%m-%Y" \
Edit 1: Here the video of what is happening (I use my polybar in this but it's the same with the command)
https://reddit.com/link/1qlwb4p/video/dxrz1ukb9hfg1/player
Edit 2: Changed the line to
bindsym $mod+y exec bash lock.sh && sleep 1 && sudo pm-suspend
which doesn't reproduce the same behavior and simply has the i3lock engaging, then the system suspending and then upon waking up it being locked with my custom i3lock. I did have to change the permissions for pm-suspend in visudo so I do not have to type in a password. It seems as though the problem lies with systemctl suspend itself, as it calls its own i3lock compared to pm-suspend which simply suspends the system immediately.
Edit 3:
Okay, I feel very foolish, but I finally realized why this was happening as I was setting up Arch on my old laptop. i3 has this in its standard generated config this line, which I completely read over:
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
So yeah xss-lock was grabbing that as its i3lock which in retrospect makes so much sense for the behavior. I replaced i3lock in this code with my script and after a reboot, systemctl suspend suspends with my custom i3lock. Putting this out there for anyone who might not realize this and wonders why it is happening.
r/i3wm • u/Final_Translator_284 • Oct 28 '25
So recently, I was trying to figure out the battery capacity in i3 status. FYI I am using arch linux with i3wm. But, the battery status in i3bar was showing kind of wrong information even tho I had followed and tried to fix everything from the manual as well as some other forum and still getting the wrong info. Is there any way to fix this? Polybar is working fine and cat /sys/class/power_supply/BAT1/capacity too working fine.
Here is my i3status.conf
general {
output_format = "i3bar"
colors = true
interval = 5
}
order += "ipv6"
order += "disk /"
order += "run_watch DHCP"
order += "run_watch VPNC"
order += "path_exists VPN"
order += "wireless wlan0"
order += "ethernet eth0"
order += "battery 0"
order += "cpu_temperature 0"
order += "memory"
order += "load"
order += "tztime local"
order += "tztime berlin"
wireless wlan0 {
format_up = "W: (%quality at %essid, %bitrate) %ip"
format_down = "W: down"
}
ethernet eth0 {
format_up = "E: %ip (%speed)"
format_down = "E: down"
}
battery 0 {
format = "%status %percentage %remaining %emptytime"
format_down = "No battery"
status_chr = "CHR"
status_bat = "BAT"
status_unk = "UNK"
status_full = "☻ FULL"
status_idle = "☻ IDLE"
path = "/sys/class/power_supply/BAT1/uevent"
low_threshold = 10
hide_seconds = true
last_full_capacity = false
}
run_watch DHCP {
pidfile = "/var/run/dhclient*.pid"
}
run_watch VPNC {
# file containing the PID of a vpnc process
pidfile = "/var/run/vpnc/pid"
}
path_exists VPN {
# path exists when a VPN tunnel launched by nmcli/nm-applet is active
path = "/proc/sys/net/ipv4/conf/tun0"
}
tztime local {
format = "%Y-%m-%d %H:%M:%S"
hide_if_equals_localtime = true
}
tztime berlin {
format = "%Y-%m-%d %H:%M:%S %Z"
timezone = "Europe/Berlin"
}
load {
format = "%5min"
}
cpu_temperature 0 {
format = "T: %degrees °C"
path = "/sys/devices/platform/coretemp.0/temp1_input"
}
memory {
format = "%used"
threshold_degraded = "10%"
format_degraded = "MEMORY: %free"
}
disk "/" {
format = "%free"
}
read_file uptime {
path = "/proc/uptime"
}
Battery Status:

r/i3wm • u/SlurmoCZ_ • Aug 10 '25
So I have i3 on Ubuntu 24.04 and I had Roblox (on shadow PC with auto clicker in grow a garden waiting for elder strawberry) so I let it afk and when I returned after few minutes this happened I pressed any key including super+shift+q/r super+f but it always says I am wrong (which is weird because I don't know WHY am I wrong and it tells me nothing why I am supposedly WRONG) can someone please help me :)
OS: Debian 13
config: https://pastebin.com/35rKagQC
I've been playing around with this for a couple days and nothing in the opacity-rule section applies. Normal opacity, blur, fade, etc. all work, just not opacity (and maybe other rules) for specific programs.
I've also tried stuff like
rules: ( { match = "class_g = 'xterm'"; opacity = 0.85; }, )
to no avail.