r/i3wm • u/allanrps • 2d ago
OC I ❤️ i3wm
romhacking with mGBA in Termux on Z Fold 6
r/i3wm • u/airblader • Sep 10 '21
Hello everyone,
TL;DR The official i3 support channel is moving from Reddit to GitHub Discussions. This subreddit will continue to exist, but no longer be an official channel.
A long time ago, we hosted an AskBot instance as the official web channel for i3 support, next to, of course, the mailing list and IRC. However, after some deliberation we decided to shut down AskBot and move to this subreddit instead whose owners graciously allowed us to "take it over". But, alas, Reddit comes with many challenges as well (like the fact that it's heavily gating unregistered users on mobile, but also from a functional perspective). It just never turned out to be what we were hoping to find. Nowadays, however, there is GitHub Discussions; back when we moved away from AskBot, this didn't exist, but is now more or less exactly what we had been looking for back then. Obviously it's also a big plus that GitHub is already the home of i3 itself with bug reports and feature requests.
That is why we have decided to move the official support channel from this Subreddit to GitHub Discussions. Of course we will not shut down this Subreddit, but it will be a completely independent community from now on.
On a slight personal note, the timing for this change suits me quite well and after having resigned from active moderation some three years ago, I will now be stepping away from Reddit entirely.
See you all over at Discussions!
r/i3wm • u/orestisf • Jun 19 '23
Hello folks,
As you probably know, reddit is going through some very unpopular changes: https://www.reddit.com/r/ModCoord/comments/148ks6u/indefinite_blackout_next_steps_polling_your/
Even though, we have moved the official i3 support channel to GitHub discussions, i3's biggest community is still on reddit and if things continue like that there is going to be a lot of helpful content on an increasingly closed platform.
Since /r/i3wm is a community platform, we would like for the community to decide this subreddit's future. I am creating two polls for this: 1. The short-term future of the community, should we make this subreddit read-only or private until June 30th: https://www.reddit.com/r/i3wm/comments/14d5yvh/the_shortterm_future_of_the_community_should_we/ (shorter duration as more imminent) 2. (This post) The long-term future of this community, if the API changes are not reversed, should we leave this subreddit indefinitely in read-only mode?
We are not considering going private for the long-term because this subreddit holds significant knowledge that is valuable to the community.
If we go read-only in the long term, I expect that most of new questions & content will move to Github discussions.
r/i3wm • u/allanrps • 2d ago
romhacking with mGBA in Termux on Z Fold 6
r/i3wm • u/Ok-Rice-7522 • 2d ago
r/i3wm • u/masterpiece_911 • 2d ago
So I posted here recently about Layouter, my tool for recreating an i3/sway workspace from a declarative TOML or React layout. One of the main criticisms of the original post was how browser windows and tabs fit into this. Fair point, since getting those where they belong is a pretty big part of recreating a development setup. I've since been working on that.
Launching Firefox with a few URLs is easy enough. The tricky part is running the same layout again later. Which window belongs to which project? Is that documentation tab still there, even though you've followed a few links? What happens after restarting the browser?
i3 can tell me about the window, but it can't tell me which tabs belong to my workflow. Kitty has a remote control interface for this kind of thing, which is why Layouter can manage its tabs and panes. For Firefox, I added a companion extension.
You can now declare browser windows and their tabs alongside your terminals and other apps. In a React workflow, that part looks like this:
```jsx
<Workspace number={3}>
<FirefoxWindow name="docs" executable="firefox">
<FirefoxTab
name="mdn"
url="https://developer.mozilla.org/"
pinned
/>
<FirefoxTab
name="project"
url="http://localhost:3000/"
active
/>
</FirefoxWindow>
</Workspace>
```
The same thing is available in TOML.
As with the rest of Layouter, running your workflow again only creates what is missing. If you've navigated away from MDN, that is still your documentation tab. It won't send you back to the homepage just because you ran the command again. Tabs you opened yourself stay there, and removing a tab from your layout doesn't close it.
If you explicitly use --sync, Layouter also restores the declared tab order, pinning and active tab. If a managed tab has navigated elsewhere, it leaves that tab open and creates a new one at the declared URL. I don't want restoring my setup to destroy whatever I was doing in it.
Roughly, the implementation has three pieces. The extension attaches identities to windows and tabs using Firefox's session APIs, so they can survive normal browser session restoration. Firefox starts a small Python native messaging host, which exposes a local Unix socket. The Layouter CLI talks to that socket when you invoke a workflow.
There is a little extra plumbing to connect those browser identities to i3/sway windows. When needed, the extension temporarily adds a random prefix to a window's title. Layouter finds that exact window in the compositor tree, marks it, and clears the prefix again. For initially finding the right browser instance/profile, it launches a unique localhost URL through your configured browser command and checks which companion received it.
The browser-sensitive work stays inside the extension. Layouter sends in the URLs from your workflow, but current tab URLs, page titles and browsing history don't come back out. URL comparisons for --sync happen inside Firefox.
The companion also doesn't continuously enforce your layout. Close a tab and it stays closed until you invoke Layouter again. There's a small toolbar badge to show whether the current tab is managed, so you can tell what belongs to the workflow.
This gets me closer to describing the whole development setup in one place, including the browser part I would otherwise still arrange by hand.
Code and documentation are on GitHub. I'm interested in how other people handle this, especially if you regularly have several browser windows belonging to different projects.
Have a good day!
r/i3wm • u/ConversationAware695 • 3d ago
I’m a complete linux beginner on mint. Hated Cinnamon so I tried i3 and it is the best computing experience I have ever experienced. It is as beginner friendly as the amount of youtube tutorials you watch and as long as you know the very basics of computing and file paths, it is super simple to set up. Couldn’t recommend it more!
r/i3wm • u/Consistent-War2577 • 4d ago
https://github.com/sathanas65/deb13-i3/
Shell scripts and dot files for custom Debian 13 with the i3 tiling window manager. Efficient and highly scripted workflow. Extremely organized key chords. Dark theme with just the right amount of color. Modular install script. Pre-configured apps. Perfect for development. production, virtualization. Keep your hands on the keyboard.
r/i3wm • u/Miserable_Example_99 • 6d ago
r/i3wm • u/masterpiece_911 • 8d ago
So I use i3 / sway daily on my work machines, and find myself spending every morning just recreating my setup. This includes launching all my apps, launching my terminals, and arranging them just right. Of course, all of this dependent on what display hardware I have in front of me.
Since one of my habits is to reduce tasks that take 5 minutes to 5 seconds, I now wrote "layouter".
It takes a declarative TOML file and recreates the described workflow in your i3/sway session. If you already have windows running that layouter created before, it will only create what is missing. It supports display selection, floating windows, and nested containers. You can also create a kitty terminal layout to exactly your liking, including the layout of your choice. As with other i3 windows, running the same layout again will only create kitty panes that are missing currently.
You can pass arguments to your layout file, and the TOML will receive them. In a frontend project, you could as an example specify what microfrontend to set up your development environment for.
If you want to do more fancy stuff, like adapt your layout to whatever hardware you're currently running on, layouter also supports React JSX syntax. Use `useScreen` to adapt your layout to screen dimensions or more. Do more with your layout arguments. Do it all declaratively.
I'm interested in your opinions. I'm new to this community, but have been using i3 basically since I started using Linux. I'm curious if this will be of interest to anybody else. I tried i3 itself to save layouts, but having to start the apps myself afterwards kind of bummed me out. This is my answer to that limitation.
Have a good day!
I built i3title as a lightweight tool that makes it easy to pipe arbitrary data into i3bar, and i3toast as the CLI that sends messages to it. I just added native support for scrolling text tickers inspired by pre-Lollipop Android status bar notifications.
The ticker in the first GIF can be reproduced with:
i3toast --ticker 2 <<EOF
i3title gives you dynamic control
over every aspect of its module.
And now it natively supports
Android-style tickers.
Like the one you're reading right now.
Feed it a pipe,
and have each line appear as a ticker.
EOF
The second shows a simpler use case which is binding the weather to a key:
bindsym $super+w exec curl -s https://wttr.in/?format=2 | i3toast \
-f "<span bgcolor='green' fgcolor='black' font='bold'> W:☂️ </span> %s"
Repo: https://github.com/a-pav/i3title
Old reddit removes all of the new lines inside the code blocks!
Edit: Made another gif showing i3title cycling through different data sources: window title, mode, volume, brightness, weather, time, script outputs. All piped in the same way; the quick succession is just for the demo. Posted it on my own profile since this post's media can no longer be changed:
The GIF: /img/i69zxgdpjbrh1.gif
The post itself: https://redd.it/1wofag6
r/i3wm • u/UpperJump5259 • 12d ago
Kinda a sleeper, hardware is a little bit old but its optimised a lot. I have around ~400mb of ram usage on idle and cpu around 1-2%. Also i3-wm is a great protection to my pc because my friends play on my computer a lot and they cant figure out how to exit the window or open an terminal to mess something up . I think of changing the wallpaper but im never going to install an compositor. The trinitron crt has very good resolution options but i prefer lower resolution and higher refresh rate. it could do 1920x1440 easily but its gapped by the adapter i have. The capacitors are kinda dead so the monitor shows too much green and screen positioning is a little off but it goes away when it warms up. I havent used a lcd on this computer for 4 months i think. i should buy a new table bc this one barely survives the heavy monitor and the racing wheel FFB.
r/i3wm • u/Kitchen-College-787 • 14d ago
Hey everyone,
I recently installed Parrot OS alongside Windows. I’d like to move away from the default desktop environment and learn i3wm.
I’ve used Linux before (including Arch/Hyprland), but I’m still not very familiar with i3 and how it fits into Parrot OS.
I’m looking for some guidance on:
\- Installing i3 properly on Parrot OS
\- Setting it up without breaking anything
\- Setting up a good terminal, application launcher, status bar, wallpaper, notifications, etc.
\- Customizing the appearance (fonts, gaps, colors, borders, transparency, etc.)
\- Setting up useful tools/workflows for Cybersecurity
\- Any recommended i3-specific utilities or scripts
\- Things I should avoid changing or removing on Parrot OS
\- Good resources or dotfiles/configs to learn from
I’d actually like to understand what I’m configuring and build my setup gradually.
If you use i3 + Parrot OS, I’d really appreciate any advice on how you approached your setup, useful resources, or things you wish you knew when starting out.
Thanks!
r/i3wm • u/grblvian • 16d ago
I know it might be some known problem and someone found solution about steam (as far as i understand) producing some empty windows. Is there some window rule or other way to avoid this.
Thank you!
r/i3wm • u/maarcellop • 18d ago
I ported Omarchy (DHH's Hyprland setup) to i3 and X11/XLibre on Debian/Devuan. You get the Quickshell bar with workspaces/clock/media/network/weather/tray, popups for audio/bluetooth/Wi-Fi/power, a live theme switcher and the full omarchy-* command set, all driven by i3 binds. Super+K prints a cheat-sheet of the session's binds.
Super+Alt+arrows to throw windows across outputsi3lock-omaxian + xss-lock, not a Wayland session-lockKnown rough edges: click-outside doesn't always dismiss bar popups (Esc works), the bar can't be dragged between screens.
MIT license, docs include a file-by-file port diff.
Website: https://omaxian.org
r/i3wm • u/wattench • 19d ago
so I've noticed with a recent brave update that if you have two containers open on one workspace the right one, if it contains brave, doesn't resize the window properly, the url bar disappears, and the contents become buggy. anyone know if there's any workaround for this?
I want to make a windows 7-like border decoration, and for that i need to have multiple borders, like 3 or 4, with varying colors and 2 of them being rounded while the other 2 are straight corners. Is something like this possible or do i have to cut corners
r/i3wm • u/eisbaer8 • 26d ago
Hey everyone,
I think the example image explains it best. You can use my WorkspaceIconDaemon to show icons of the currently active programs in your workspaces.
I have come to really like tiling window managers, since I like the simplicity, minimalism and clearness of thought when using them. However, I am used to and like the intuitiveness of finding where my programs are visually based on the icons. Therefore inspired by the windows taskbar I wanted to have a way to quickly identify all the running programs and the workspaces on which they are on. This proved rather difficult, since most bars do not support image rendering (especially in the workspace names). To mitigate this I found a hacky solution, where I create an Icon font (like an emoji font) from all the application icons on the system on the fly, which can then be used to show icons in contexts where normally only text rendering is allowed. A python deamon is then used to watch window events (open, close, move) and then dynamically update the workspace names.
A fair warning: I have originally developed this for i3, however in the meantime I have switched to using sway as my daily driver and adapted it to support both, i3 and sway. Therefore I have only briefly tested it in i3, while running it daily on sway. So if you encounter any bugs please let me know. I still wanted to share it here, since I thought this could be useful to some of you :)
Github with install instructions: https://github.com/David0tt/workspace-icon-daemon
r/i3wm • u/mild_discomfort2000 • 26d ago
Finally got my system dialed in. Running Arch with i3 window manager
and loving the minimalism. Specs are modest but gets the job done:
- OS: Arch Linux x86_64
- WM: i3 (tiling ftw)
- CPU: Intel Celeron 3215U @ 1.70 GHz
- RAM: 2.94 GiB / 3.69 GiB
- Storage: 20.45 GiB / 118.24 GiB (btrfs)
- Shell: bash 5.3.15
Battery holding up decently, temps are solid. Been learning a lot
diving into Linux and cybersecurity – this setup is perfect for that.
Anyone else running i3? Tips welcome!
r/i3wm • u/imyatharth • 26d ago
So whenever I'm using i3 and I use $mod+Return , nothing happens but it should open a terminal. I also tried working out with names like KP_Enter and all but nothing worked also keystrokes are working I've checked with xev but still nothing works. Another problem is that when I use ctrl+backspace it usually deletes the whole word but now nothing happens but keystrokes are working. Idk if this is an issue with i3 or arch I've no idea. You guys had any issues like this lemme know the solutions.
r/i3wm • u/Significant-Tone-121 • 27d ago
Is there any way I can set the background (on all monitors) as a Terminal App? (Like Cmatrix or Btop)
r/i3wm • u/Metehanse • 27d ago
I fork i3lock for executing a program whenever an incorrect password is entered.
This can be used for custom actions such as powering off after a certain number of failed attempts or wiping out the system when a specific password is entered.
I tried to keep changes at minimum, but I had to introduce a new dependency (OpenSSL for SHA256). I recommend building it using Docker with this Dockerfile and this command. On your host system, have i3lock installed (for other dependencies), and then install libssl.
Here is the section I added to the manpage for the feature:
--on-wrong-password=program
Execute program after an incorrect password is entered. The SHA-256 digest of the concatenated salt and entered password is written to the program's standard input as hexadecimal, followed by a newline. The total number of failed password attempts is passed as the program's first argument. Note: The program is executed directly without invoking a shell.
The following handler powers off the computer if the received password digest matches the specified value or if the number of failed password attempts exceeds 10, assuming the handler have sufficient privileges to invoke poweroff(8):
#!/bin/sh
FAILED_ATTEMPTS=$1
PASSWORD_HASH=$(cat)
if [ "$PASSWORD_HASH" = '2597a7ca...' ] || [ "$FAILED_ATTEMPTS" -gt '10' ]; then
poweroff
fi
--password-salt=salt
Prepend salt to the entered password before computing SHA-256 digest, optional. Use a high-entropy random salt to prevent precomputed lookup attacks.
Feedback and code review are welcome!