I love i3 mainly because I'm not an expert in it. I don't have to be. I only had to learn some basics about split/stacked/tabbed containers, and figure out how to lock workspaces to specific screens, and I was ready to be productive. The online user guide is great, providing just the right amount of detail, and very well written.
Yes you can use i3wm on its own w/o a DE.
A DE is just a desktop gui + a bundle of programs that the DE maintainers and/or distro maintainers think would be pleasent for you to have. Your computer can boot perfectly fine and access your files/programs w/o these.
You can (usually) take your current distro, install i3wm, choose i3wm when you login and you will be using i3 instead of your regular DE. I will warn you this may be shocking at first; all the things you are used to automatically running at boot won't. You will boot to a blank screen and have to figure out how to open the terminal, configure your screen resolution, setup a status bar, program launcher, background image, and other basic things that are taken for granted, followed by updating (or creating/downloading if one's not there) your i3 config file so you dont have to repeat this everytime you boot into i3.
You could also do what you suggested and run i3wm on top of xcfe, though it would just look like xcfe and you may run into some compatibility issues and keybinding conflicts. Some ppl like slapping i3 on top of unrelated DEs, ymmv.
You could also install a distro that comes w/ i3wm pre-configured. You will get a handful of sane defaults + bundle of programs the distro maintainers think would be pleasent. I went this route.
There is also a DE called Regolith which bundles i3 w/ other DE elements from gnome DE and Ubuntu + bundle of programs + custom config file and sane defaults. It can be installed as a standalone distro or alongside Ubuntu, though there's an Arch package too. Its supposed to be user-friendly.
This is not a jab at the usual "Hur dur Kali". This is a friendly list of the best way to run Kali (in my opinion), and some reasons why.
1) Uninstall Kali as your daily driver. It was not intended to be used this way. It could be used this way in theory, but the defaults are really not great for a desktop distro. Like how everything defaults to root. This is a good way to, ironically, get yourself hacked, and in a real bad way.
2) Install Arch if you want to DIY your hacking setup or pick from the myriad of great pre-builts (I'd recommend Fedora, I've always felt their default packages were more dev centric or if you're feeling really adventurous, I run i3 Manjaro. It's like Arch but a lot of people with patience built most of it for you).
3) Burn Kali to some medium and use it the way that I feel it works best as: A Live OS.
Side note: i3 Manjaro has been my favorite linux experience to date. Shout out to those guys <3
Check out bug.n. You can bind, tile and move windows windows just like i3, and it even has its own status bar + workspace support. It's pretty great to be able to launch the same programs using the same keybinds, manipulate open and close all the same way across Linux and windows computers.
Clickable <code>RELEASE-NOTES</code> link for the lazy
> • “resize” with pixel values now works for tiling containers
This is the big one for me, thank you!
EDIT: the --release
bugfixes broke my workflow, lol. I have:
bindsym $mod+Tab workspace back_and_forth bindsym $mod+Tab --release workspace back_and_forth
Which used to mean when I let go of $mod
first, it would stay on the other workspace, and when I let go of Tab
first, it would return where I started. Now it returns in both cases. I'm not mad, just amused. I can still cancel the --release
binding by hitting some other key, though.
Does it even have to be a distro, wouldn't some setup script do it? I am not opposing it in principle, but Ubuntu is not a distribution I would go for on Desktop (I use Debian on servers, Manjaro on desktop).
However, I absolutely love the idea of a polished i3 experience. Browsing /r/unixporn I jumped on the WM bandwagon with Majaro i3 community version... let me tell you, it was not a pleasant experience. What you get is almost bare bones i3. As a complete novice to tiling WM I had to sink a good chunk of time to get comfortable. That is why the tailored i3 experience has its place and I cheer for you /u/kgilmer!.
At the same time, the stack or Regolith is also pretty bare bones. I would not mind some flare, like seamless pywall for example.
I know Acrolinux ships ISOs with preconfigured i3 + BSPWM but I feel they are all over the place and lack bit of focus and better documentation. I hope this Distro will stick around and help newcomers to tiling!
My intention wasn't to start a comparison with other file managers in this thread but it's a bitter fact I face this question frequently. I would point out at inception nnn and ranger differed in their target audience and that stays through their course of development till date.
I wrote nnn because I wanted something that responds fast on the Pi I was setting up for my kid (as his media center). I picked noice which is very rudimentary and started adding features. In the course of development (most of which I was doing on my laptop and was compiling with native gcc and testing) I noticed it gives a solid performance on the laptop, on Termux env on my Android device and so on... and it because a desktop software too. nnn will remain lean, expose features you really need for quick workflows and work on all kinds of devices.
ranger, on the other hand, is written in python so it knows it has enough memory and processing power to pull any feature it wants on the desktop.
To give this freedom (to run anything) to users who are on the desktop, I did choose a middle ground here from a design perspective - I started supporting user-scripts. And as of today there are many of those including user contributed ones. So it wouldn't be technically correct to say nnn
can't be extended. If you need something nnn
doesn't provide natively, just drop your script and you are good to go (at the speed of ranger which is also a python script)!
It's explained in the user guide:
> The --no-startup-id parameter disables startup-notification support for this particular exec command. With startup-notification, i3 can make sure that a window appears on the workspace on which you used the exec command. Also, it will change the X11 cursor to watch (a clock) while the application is launching. So, if an application is not startup-notification aware (most GTK and Qt using applications seem to be, though), you will end up with a watch cursor for 60 seconds.
You can use workspace prev
and workspace next
commands. For example add this to your config:
bindsym $mod+o workspace next bindsym $mod+i workspace prev
More information here. Also you can move your cursor over the bar and use scroll wheel.
Have you seen the following link?
https://i3wm.org/docs/userguide.html#_arbitrary_commands_for_specific_windows_for_window
I use this in my i3 config:
# this works for Firefox and probably other programs too for_window [instance="^Download"] floating enable for_window [instance="^Update"] floating enable for_window [instance="^file_progress"] floating enable for_window [window_role="About"] floating enable for_window [window_role="Preferences"] floating enable for_window [window_role="^Manager"] floating enable for_window [window_role="pop-up"] floating enable
You can use xprop to get window classes, as mentioned in the guide linked above.
Well, it helped me solve the same issue, so I'm glad it's here.
For the lazy:
The "for_window" command. Take a look at the official documentation, point 4.11 (click me!)
(Remember: you can use the "xprop" command to view infos about any window, including its class)
Perhaps too basic, but i just use a one liner with the "at" batch command and "notify-send"
echo 'notify-send "Fetch the kids!"' | at 16:00 echo 'notify-send "Take the kettle off!"' | at now + 13 minutes
When I encounter this, it is always related to startup-notification, see here.
>The --no-startup-id
parameter disables startup-notification support for this particular exec command. With startup-notification, i3 can make sure that a window appears on the workspace on which you used the exec command. Also, it will change the X11 cursor to watch (a clock) while the application is launching. So, if an application is not startup-notification aware (most GTK and Qt using applications seem to be, though), you will end up with a watch cursor for 60 seconds.
Are you frequently using exec
to spawn applications in this manner?
From the compton wiki in the section about the --benchmark option:
> Usually we measure performance of compton’s GLX backend with --benchmark, which forces compton to repeatedly repaint for specified times then exit
Emphasis mine. So, that parameter explains why compton is exiting for you. The benchmark you told it to run is done, so it exists. I don't think it's crashing, but to confirm you can run it from console after starting i3 and observe the output (use your command you have in i3/config but remove the & at the end)
Read that perf page I linked to in my previous comment.. seriously. It discusses the various backends, and discusses tweaks you can try to improve performance. Keep in mind that some of the most aggressive performance tweaks can/will impact stability, and some of them may not even work with the GPU/drivers you are using.
Speaking of which, what GPU and drivers are you using?
You could add the following to your ~/.i3/config
(order is important):
for_window [class=".*"] floating enable for_window [class="^chromium$"] floating disable
This enables floating for every window class, but disables it again for the class "chromium".
But this is not what i3 was designed for. The only reason floating window are even supported is because sometime there is no way around them: dialog windows would be quite annoying and some applications just cannot (do not want to) be resized arbitrarily. This is reflected in a rather poor support for floating windows: new floating windows may open below existing ones, only one floating layer (no "always on top" or similar), no sticky borders, and so on.
If you intend to make extensive use of floating windows, almost to the total exclusion of tiled windows, then i3 is in all likelihood not the WM you are looking for. It may work for specific use cases, perhaps some kiosk application. But in general, especially for use as an environment for working, I would suggest using some stacking window manager that allows you to put chromium below any other window and maximize it - maybe openbox? - instead of (ab)using i3 in a way, for which it clearly is not designed.
TL;DR: Don't!
Your tray_output primary
should be on the next line.
Take a look at the documentation for status_command and for tray_output.
This would work for the latest unstable version. i3-gaps is in the community repo, and therefore doesn't need to be built from source. It will also update less frequently as it's what's considered to be stable. If OP is new to i3/i3-gaps, or Linux in general, this is much more recommended.
Take a look at the release notes: with this version, i3 switches its build system from autotools to meson.
In case you’re unfamiliar, check out https://i3wm.org/docs/hacking-howto.html#_building_i3
You can add something like this to ~/.config/i3/config
for_window [class=".*"] resize set width 33 ppt
You can find more resizing options here.
Refering to https://i3wm.org/docs/userguide.html#keybindings you could use something like bindsym $mod+caret
. You can use xev to see the actual name of the key. (I cannot be more precise as I'm currently running wayland-only setup).
"To change the configuration of i3, copy /etc/i3/config to ~/.i3/config (or ~/.config/i3/config if you like the XDG directory scheme) and edit it with a text editor." - https://i3wm.org/docs/userguide.html#configuringhttps://i3wm.org/docs/userguide.html#configuring
compton will get you a fade in/out when you switch desktops - try:
compton -f
I've not used it in depth, so I don't know what else it can do - but it does have a lot of options to play with...
> connect to wifi
wifi-menu, networkmanager, netctl-auto, ...
> set the resolution of my monitor
> set the positions of my multi monitors
xrandr, arandr
> floating window
> volume
alsa-mixer, pavucontrol, ...
> battery status
acpi
You'll have to write an IPC script: https://i3wm.org/docs/ipc.html
Using something like i3ipc-python:
#!/usr/bin/env python
import i3ipc
def on(i3, e): if e.container.window_class in ['YourMailClient', 'YourChatApp']: e.container.command('resize set 66 ppt')
i3 = i3ipc.Connection() i3.on('window::focus', on) try: i3.main() finally: i3.main_quit()
i3wm docs. For terminal font it depends on which terminal you use.
Also after doing some changes you have to restart i3. I think it's $mod+shift+r
.
One more thing. Go to /r/unixporn and look through other people config files to see how they do it. It might help you a bit.
Edit: added few things.
Not exactly what you want but you could use marks.
From the manpage of i3-input:
Mark a container with a single character: i3-input -F 'mark %s' -l 1 -P 'Mark: ' Go to the container marked with above example: i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Go to: '
if you bind those commands to keys, for the first one a small input window will appear. There you can set a single character/digit as a mark for the focused window. With the second one you can enter the same character/digit to focus on the marked window. To make the marks visible in the title bar you can set show_marks yes
in your config.
I suppose you could also write a script to automatically set a mark for each new window.
I think OP means the title bar of the windows. Although I don't know if there is a way to move it to the side, you can always remove it if you need the space. I personally don't need them or like them. Check out the default_border
option in the i3 User's Guide.
Obligatory link to the docs: https://i3wm.org/docs/userguide.html#multi_monitor
While I would really, really love to be wrong about this, I'm pretty sure the way most people do this is to set up a udev script that detects a new monitor and runs a script with the appropriate xrandr commands. Personally I got tired of futzing with udev and just have a script for each monitor configuration I use and just run them manually when I plug something in (warning: be sure to also have a script that resets everything back to just using laptop screen and always run it before disconnecting externals or i3 can get very sad).
I do think xrandr can do mirroring, but you might have to search around for the exact invocation.
In this instance you are in "Stacking" layout. You have pressed Mod+s.
Other available layouts are the splits(v and h) and tabbed. You can read about them in the i3 guide
It happens that when pressing multiple times Mod+v or Mod+h in a container's parent it creates more and more nested containers. To delete them you have to move out of such container.
You can find something relevant here in the post's answer.
Sorry if it's not too clear, but it comes from my search for i3 stuff during my first week. I am a newbie, too.
Here's one way I think you can do it with tmux:
tmux new -s <session_name>
tmux a -t <session_name>
At this point, both of the terminals are "viewing" the same tmux session. This means whatever you do in one terminal will be seen on the other, and vice-versa. You can be on one workspace, start something running in the tmux session, do other stuff, and re-attach when you want to see how things are going. All the while, the other terminal will still be showing what's going on in the first session.
Not sure if this is exactly what you're looking for but I'd say dive in and learn tmux. You'll be glad you did. It is essentially like a window manager within your terminal that you can detach from and return to at any time so long as your system is running. There are some links to tutorials from here: https://github.com/tmux/tmux/wiki If you already are comfortable in i3, tmux should be relatively easy to learn.
Dude, First thing you should always see is official documentation.Usually it will have everything you need.
https://i3wm.org/docs/userguide.html#_changing_colors
Send it to the scratchpad.
Automating this so you can do it from the config will require a script, but shouldn't be too hard. If you want inspiration, this program does that (and more); you could even use i3quake to do it. It automates starting a program, finding the ID, tagging it, then sending the tagged window to a scratchpad. It'll also find a tagged window and restore it, which is really what I wrote it for. But it might work for you, or you could hack it up in bash yourself.
The basic solution is "sticky", but "sticky" windows will appear on each workspaces.
https://i3wm.org/docs/userguide.html#_sticky_floating_windows
skippy-xd kinda sorta works. By that I mean, for me, it shows a small version of each window that I have open, but it only shows previews of the windows on the current workspace. All others just get an app icon. I think that happens because i3 isn't a compositing window manager.
Yes, see the ipc docs and specifically the get_tree command (i3-msg -t get_tree
).
You can prototype this using i3ipc-python (or a library in the language of your choice).
Example:
import i3ipc
i3 = i3ipc.Connection()
for con in i3.get_tree(): if con.window and con.parent.type != 'dockarea': print("id = {} class = {} name = {} workspace = {}".format( con.window, con.window_class, con.name, con.workspace().name))
By the way rofi can do what you are asking: rofi -show window
It seems, as if Shift
is counted as a modifier and therefor cannot be distinguished from left or right (and also not added as its pure code via bindcode). Additionally, there seems to be handling of different layouts by now: https://i3wm.org/docs/userguide.html#keybindings (see the explanation of Group1,...
)
I believe so - i3 supports modes (see the default config resizing mode and hotkeys) and I expect you can use that to do what you want. You'd set whatever hotkey you want to use to enter into the mode, and then just bind the hotkeys while in that mode without requiring a modifier.
Perhaps something like
mode "windows" { bindsym h focus left; mode "default" bindsym l focus right; mode "default" bindsym Escape mode "default" } bindsym $mod mode "windows"
I'm not sure if there's a simpler/different way, I haven't tried/looked.
> This kind of hostility toward new users is part of why Linux will never catch on. Good job i3.
I3 is wholly unsuitable for new users who don't want to do some reading on the front end. If you don't read anything and start up i3 you might not be able to do anything including log out without power cycling your machine.
Its perfectly OK to make tools like this that only appeal to a subset of users. It's also OK for say manjaro to pre package a pretty looking i3
https://manjaro.org/2017/03/07/manjaro-i3-community-edition-17-0-released/
However some of the users apt to pick up such a thing that wouldn't have picked up i3 aren't going to be happy with an environment that requires them to have to do their own reading.
With mode you basically get multiple keyboards and avoid using chords (e.g. shift+alt+ctrl+meta).
Possible modes:
The resize example:
mode "resize" {
bindsym $left resize shrink width 10 px or 10 ppt
bindsym $down resize grow height 10 px or 10 ppt
bindsym $up resize shrink height 10 px or 10 ppt
bindsym $right resize grow width 10 px or 10 ppt
bindsym Return mode "default"
bindsym Escape mode "default"
}
A good example: https://notabug.org/demure/dotfiles/src/master/i3/config
for_window [class="gnome-terminal" title="Terminal"] move workspace 4
smthg like this, https://i3wm.org/docs/userguide.html#command_criteria this command criteria part,
also are all gnome-terminal named Terminal
by default, if yes then this will also apply to them which you don't want, so change the default title or try something else form what i mentioned above.
Check out this part of the documentation if you haven't already: https://i3wm.org/docs/userguide.html#_configuring_i3bar
That said, I don't think there's really anything to help you there. I think it's pretty hard-coded into the i3bar how those workspaces are drawn. (I was sort of trying to see if I could get each individual workspace to be its own color, but couldn't find an easy way to do my thing either)
Well if by always, you really mean always, you could use layout saving and auto launch that layout, sublime, and your terminal at startup.
Other than that I think IPC is the way to go.
Yes. Reading the userguide (https://i3wm.org/docs/userguide.html) will teach you why and how it works. Assuming you have all five apps open, horizontally next to each other, no nested containers and focus on the last one:
split v
layout tabbed
focus left
move right
focus left
split v
layout tabbed
focus left
move right
focus left
move right
I found a way to achieve what you want:
Run xev
(xev -event keyboard
if you only care for key presses) from a terminal and press your desired key. xev
should output information about the events it got from X11
. For example, pressing +
displays this in the terminal:
KeyPress event, serial 28, synthetic NO, window 0x1c00001, root 0x9d, subw 0x0, time 18990274, (193,510), root:(1002,1563), state 0x1, keycode 21 (keysym 0x2b, plus), same_screen YES, XLookupString gives 1 bytes: (2b) "+" XmbLookupString gives 1 bytes: (2b) "+" XFilterEvent returns: False
The way to bind your key in your config is to look for the string after keysym
, i.e. plus
. Now you can put the following line into your config file:
bindsym $mod + plus exec "<command to raise volume>"
Similarly:
bindsym $mod + minus exec "<command to lower volume>"
PS: xev
is from xorg-xev
Edit: changed bindings from "x" to "$mod + x". Binding +
is possible, allthough not practical.
There is an issue: https://github.com/chjj/compton/issues/477, there seems to be a workaround.
> I didn't really investigate any further yet, just disabled compton for the moment.
I think killing compton is/should be the de facto first response on any visual glitch.
You wont really find luck with true transparency in i3. See here: https://github.com/chjj/compton/wiki/faq#3-why-does-transparency-not-work-correctly-in-i3
What works great for me is native transparency. When using native transparency not the composition manager but the terminal makes itself look semi transparent by using your background image as it's own background. This looks a bit strange when you have such a window floating but it actually has the benefit that in stacking or tabbed mode you don't see the text of all the terminals under the active terminal.
You can configure native transparency for urxvt in your ~/.Xresources like this:
URxvt.transparent: true URxvt.shading:20
! Included this so you know how to make your foreground not match the color of your background URxvt.foreground: #eeeeee
Shading is a value between 0 and 200 where 0 is completely black, 100 completely transparent and 200 completely white.
Of cause you then have to apply that settings at start in your ~/.xinitrc by using
xrdb ~/.Xresources
There may be ways to do this in other terminal emulators as well, but unfortunately I don't know those. If you don't use urxvt yet, you might want to give it a try. Start here: https://wiki.archlinux.org/index.php/Rxvt-unicode
edit: language
If that doesn't work, go back to the tty, install dmenu, and then use sup/alt+d to use it to launch gnome terminal then use the i3 documentation to get app shortcuts working.
Take a look here. It says
>Commands can be chained by using ; (a semicolon). So, to move a window to a specific workspace and immediately switch to that workspace, you can configure the following keybinding:
>
>bindsym $mod+x move container to workspace 3; workspace 3
So in your case
bindsym 1 exec ~/.screenlayout/normal.sh; mode "default"
You can create an empty placeholder window with
i3-msg open
This is an undocumented command just for the i3 testsuite though.
What you really want is to assign a workspace to a certain output:
Should be achievable through the IPC interface:
Notify me if you are having trouble doing it.
Look here. All you have to do is get the layout the way you want and then run the command to save it for each workspace. Then add the call to append the layouts in your config file.
>handiest use was being able to type in folder names and have it launch the folder in a file manager like Thunar or Nemo
for that purpose I use angrysearch that I got hotkeyed to the alt + space
Display of status should be easy enough with a basic script that gets current status and grabs relevant information. Here is a script I use for VPN status in status bars, conky etc. As I use both NordVPN and OpenVPN it handles a bit more than you need but you should get the idea for NordVPN.
I handle connect \ disconnect from the CLI but it should be fairly straightforward to add a click handler to polybar to connect \ disconnect using the script module.
Edit: typo
You remove the titlebars by setting the border to "pixel"
https://i3wm.org/docs/userguide.html#_changing_border_style
the ^.*
just targets all windows.
for_window [class="^.*"] border pixel 2
What I did was open https://i3wm.org/docs/userguide.html on my phone the first time around, using default shortcuts (i3 will suggest to create a default config file for you the first time you run it - do that).
Once you get the basics (the app menu, opening a terminal, and basic tiling), you can customize your env to your heart's content :)
You were faster than me. I'll just add:
So for instance I've got:
font pango:GoMono Nerd Font 18 # class border backgr. text indicator child_border client.focused #000000 #000000 #008800 #000000 #000000 client.focused_inactive #000000 #000000 #303030 #000000 #000000 client.unfocused #000000 #000000 #303030 #000000 #000000
Well, you have a minimal version that works but doesn't do everything you want and a maximal version that doesn't work but has the things you want. You could try adding in one line at a time to the minimal version until you identify the problem. When you identify the problem lines, you can Ctrl+f for the relevant terms in the i3 user guide.
You may want to define bindings to reload your config and restart i3, just to make that process easier.
# reload the configuration file bindsym $mod+Shift+c reload # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym $mod+Shift+r restart
If the mode hide
line isn't the issue, my next guess would be that the display you're trying to output to doesn't exist.
SEE : https://i3wm.org/docs/userguide.html
-> 4.20. Changing colors
Syntax :
<colorclass> <border> <background> <text> <indicator> <child_border>
# Colors
#EXAMPLE:
# <clientclass> <border> <bg> <text> <indicator>
client.focused #da2263 #d70a53 #ffffff #eb709b
client.focused_inactive #565656 #444444 #ffffff #666666
client.unfocused #373737 #222222 #888888 #444444
client.urgent #ec7ea4 #eb709b #ffffff #eb709b
When you say “the building FAQ page”, which URL specifically are you referring to?
If you’re referring to https://i3wm.org/docs/hacking-howto.html#_building_i3, please note that said document is explaining local development, so installing i3 is neither required nor desired.
Note that in general, the i3 project’s take on this matter is that users should not need to build from source and should use i3 from their Linux distribution instead.
You can assign the windows to run in a single workspace based on window class or other criteria. Check out assign in i3 docs and read the section on command criteria
I think you need to tell the bar to use a specific font so it knows to use the icons from the right set.
For instance, I used to use helvetica, and have any missing symbols fall back to fontawesome for icons.
In my bar I specify:
font pango:Helvetica-Normal,Hack,FontAwesome 20
More info here https://i3wm.org/docs/userguide.html#_font
You could try the Manjaro i3 community release. It apparently comes with all of the extra stuff you want either preconfigured or they include an install script to configure them/turn them on.
https://sourceforge.net/projects/manjarolinux/files/community/i3/
Is it this?
https://github.com/chjj/compton/issues/152
I don't use compton myself as I don't need transparency. The system is a lot smoother for that decision and Intel SNA tearfree solves my video tearing issues :)
Timing window managers for with vim usage really well, but I found the config intimidating. I copied a friend config and followed what they told me and loved it.
Later i discovered i3-gaps, which makes the tiling beautiful. Most recently I'm in love with regolith Linux - a distro or installable Debian package which is an amazing i3 setup with great defaults, accessible docs, and easy config patterns (including themes). Love it so much
I'm a n00b recently looking for help customizing Regolith and was give the following tips, sharing in case it's helpful:
You can find a description of all Xresource keys here: https://regolith-linux.org/docs/reference/xresources/...
It is not recommended to directly edit the i3 config file is that often will cause things to break after upgrades. Rather we recommend to set Xresource values using Xresource overrides. See here for details: https://regolith-linux.org/docs/howtos/override-xres/
My favorite terminal of all time that I stumbled into finding is “kitty terminal”. I’ll name off my favorite personal favorite parts about the terminal but you should definitely check out their web page as it is extremely well documented and gives you a run down of every feature and how to customize each of those features in your config file.
Anyways, this is a link to their page: https://sw.kovidgoyal.net/kitty/#font-control
Incredible terminal. I know people choose terminals like Uxvt and Termite because of how “super lightweight” they are but cmon. I’ve never been able to tell the difference in speed between kitty and either one of those. The only thing they have that is different than kitty is less features. If you don’t want those features? Fine, I get it. No reason to have the features if you’re not gonna use them.
Enjoy!
For i3, you need pango, see its docs.
Urxvt uses xft, see its docs.
If you're trying to configure a different program, I recommend you consult its docs.
From the official website:
> i3 is primarily targeted at advanced users and developers.
Furthermore, i3wm is a tiling window manager, not a desktop environment. Minimalism comes with the territory. You have to do a lot by yourself. If you're not willing to do that, you should use something like XFCE, KDE or Gnome.
Anyway, these are my media key configurations. They may or may not work on your computer. Just paste them on your config file and run i3-msg reload
on the terminal.
bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioMute exec amixer -q set Master toggle bindsym XF86AudioRaiseVolume exec amixer set Master 10%+ bindsym XF86AudioLowerVolume exec amixer set Master 10%-
If you need more information, don't be afraid to ask. But search the user's guide first. It's excellent.
This is how you'd do what /u/zerocc pointed out.
## [---Workspaces---] set $ws1 "1: work" set $ws2 "2: web" set $ws3 "3: soc" set $ws4 "4: music"
## [Assign apps to workspaces] assign [class="Termite"] $ws1 assign [class="Google-chrome"] $ws2 assign [class="TelegramDesktop"] $ws3 for_window [class="spotify"] move to workspace $ws4
Refer to the user's guide 4.17 for further info on how to get window class names, and why there's a special case for spotify.
Do note however, that these assignments would then apply to all newly created instances of that class.
From the 4.14 release notes:
> • respect minimum size hints for floating windows
i3 is simply following the ICCCM specs here, which defines these hints as the minimum size the client thinks it can still be useful. If you disagree with that assessment, you'll have to convince the developers of that app that their app is also useful if it's smaller.
Meanwhile alternatives would be locally patching i3 to not respect these hints or to downgrade i3.
If you're finding floating windows launching too large, you can constrain them.
Otherwise, if you have certain applications set to always launch as floating, add a resize command onto it:
for_window [title="Pavucontrol"] floating enable, resize set 800px 500px
This is exactly what mode hide
does:
> In order to control whether i3bar is hidden or shown in hide mode, there exists the hidden_state option, which has no effect in dock mode or invisible mode. It indicates the current hidden_state of the bar: (1) The bar acts like in normal hide mode, it is hidden and is only unhidden in case of urgency hints or by pressing the modifier key (hide state), or (2) it is drawn on top of the currently visible workspace (show state).
> The default mode is dock mode; in hide mode, the default modifier is Mod4 (usually the windows key). The default value for the hidden_state is hide.
The example here has everything you need. The #123456
entries are the colors (They have to be in this format).
Also, before posting any questions here you should read and follow the subreddit rules.
Relevant section of the User's Guide:
> You can use multiple tray_output
directives in your config to specify a list of outputs on which you want the tray to appear. The first available output in that list as defined by the order of the directives will be used for the tray output.
It seems there can only be one tray output at a time.
Quick idea: write a script using IPC which does:
new
- see https://i3wm.org/docs/ipc.html#_window_eventAnother idea: you can maybe achieve the same by using for_window
.
What status bar do you use? If it's the default i3status or i3blocks (or any other status line which respects the i3bar protocol), look here at the example. binding_mode
is what you're looking for.
Yes, you can run vbox in a fullscreen window in any workspace. No, you cannot specify a specific workspace to open all windows in fullscreeen mode. Windows have a fullscreen mode; workspaces have no such thing.
Please use the i3 user's guide.
What you are trying to do sounds like <code>workspace_auto_back_and_forth</code>
To answer your question, you can redirect the command output to a file:
bindsym $mod+1 exec "your_command &> /tmp/out"
Hi. I'm just a user, but my work often requires me to do research. This is typical of how I'd start:
Professors hate Wikipedia. It is a good starting point, as long as you never ever admit that ;) One trick is to follow the references on Wikipedia, and their references, several levels deep.
i3 itself has a website, many design decisions are explained here https://i3wm.org/docs/ and here https://i3wm.org/
I'm trying to write an informal article about i3 and how someone with Parkinson's Disease might use i3, but I doubt your professor will accept it.
I'm not quite sure what you mean. Usually mod-enter will bring up a terminal from which you can launch any program (jncluding a web browser). Additionally, you can choose to create keyboard shortcuts for bringing up a browser, i.e.
set $mod Mod4 bindsym $mod+Return exec <your terminal> bindsym $mod+c exec --no-startup-id <your browser>
In general, the user guide is a great read that I would highly recommend checking out.
For binding keys in general, you should have a look at the userguide:
https://i3wm.org/docs/userguide.html#keybindings
For setting the display brightness, I use xbacklight in a custom script to also send a signal to i3blocks to update the corresponding block. But basically it is:
bindsym XF86MonBrightnessDown exec xbacklight -dec 10 bindsym XF86MonBrightnessUp exec xbacklight -inc 10
For setting volume, I use amixer in a custom script to also send a signal to i3blocks to update the corresponding block. But basically it is:
bindsym XF86AudioLowerVolume exec amixer set Master 5%- bindsym XF86AudioRaiseVolume exec amixer set Master 5%+ bindsym XF86AudioMute exec amixer set Master toggle
Look at section 7 in the guide
You can make rules for applications based on window class, title, and other criteria
You can use xprop to get window class and whatnot
I use
for_window [class="Firefox"] floating disable
for_window [class="Firefox" title="Firefox Preferences"] floating enable
So that it's maximised to the size of the screen. Or refer to
https://i3wm.org/docs/userguide.html#_constraining_floating_window_size
(apologies for formatting, on mobile)
I suspect that there is no need to search for the PID, which by the way you can sometimes extract from the window properties, but it's more complicated. I'm going to show an example how to close a focused window that is not an instance of xterm.
First, figure out a matching criterion for your window. If you don't know what I'm talking about, read the i3 docs. For xterm, it is class="XTerm"
. You can find it out for a given window using xprop
.
Second, the trick is to use regular expressions and con_id="__focused__"
. Use regular expressions to negate the match. You only want to run a command if a window is not an xterm. You also want your command to apply only to the focused window. This kind of match is provided by con_id="__focused__"
.
The final config line is:
bindsym $mod+Shift+q [con_id="focused" class="^(?!XTerm$)"] kill
If you are already in a horizontal split with 2 windows, and send one 'down', it will automatically vertical split it. With that in mind you could spawn the window, move it down like 5 time (seems like a reasonable amount to me. if you ever have more than 5 vertical windows... wtf). So it would be at the bottom of the screen in a v-split.
In tiling mode you can set a window to a percentage of the screen. (syntax)
To get the right percentage you could set the window how you'd like, and then use i3-msg to find what percentage it is.
i3-msg -t get_tree
Window size is under the geometry property.
So move 'er down, then set the height. Bam. If you don't like the whole move down 5 times thing, you could use i3-msg, and parse the json and all that to see how many times to move it... but... seems like a lot of work when the lazy way does the same thing : )
Not at my computer with multi-monitor support, but a few things I can recommend.
1) Install arandr, and use it's GUI config to set up the monitors how you like. Then save the config.
2) This creates ~/.screenlayout/default.sh
- running this will load the saved config. Put this in your i3 config so it always gets run:
exec_always --no-startup-id /home/username/.screenlayout/default.sh
3) Add an entry fortray_output
in your i3 config bar
section to display the notifications etc on a named monitor (add multiple times to display on multiple monitors).
bar { status_command i3status tray_output HDMI1 }
(You can also use the output
option in your bar config to only have the bar on one monitor too, if that's useful - full docs here: https://i3wm.org/docs/userguide.html#_configuring_i3bar).
(Scanning your config it looks like you have exec tray_ouput primary
in your config, and xrandr config as well - obviously take all of that out before adding the above, or it will conflict).
You can change the thickness and/or color of the border to make it more noticeable.
https://i3wm.org/docs/userguide.html#_border_style_for_new_windows
first thing that comes to mind is just adding the layout switching to the workspace keybind:
> bindsym $mod+1 workspace first; layout tabbed
second would be a workspace template, you can read more about it here: https://i3wm.org/docs/layout-saving.html
This isn't an answer to your initial question, but it does address the second one of remembering what workspace you are on.
You can now just hit mod+3, mod+3 and you'll bring that workspace up and then jump back to the original workspace you were on.
I don't think there is a ready solution for that, though you could always write a patch to the window manager.
Instead, you could make specific types of clicks on the titlebar do the job. See the section on Mouse bindings in the User's Guide. Example from there:
# The middle button over a titlebar kills the window bindsym --release button2 kill
The conky color commands don't work for i3bar, you have to output JSON to i3bar and set the colors using the i3bar JSON format. These instructions show how to do it - User-contributed article: Using conky with i3bar
I've created a keyboard mode to change layouts.
Switching between Estonian and English.
#change keyboard layout set $keyboardMode "keyboard e=ee, u=us" bindsym $mod+Shift+i mode $keyboardMode mode $keyboardMode { bindsym e exec "setxkbmap ee", mode "default" bindsym u exec "setxkbmap us", mode "default" # back to normal: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" }
So i'd press $mod+shift+i, that would enter the keyboard mode and then I'd click either E(estonian) or U(us) to set the actual keymap.
I also use a long mode name saved into the $keyboardMode variable, that way i can show myself hints on what keys I can press.
For statusBar info you can check out custom i3status scripts, but i'm not the right person to talk about those.
You can check out the man page here: https://i3wm.org/i3status/manpage.html
As far as i understand you can display something written in a file, so on every change you could also write the keymap you're currently using to a file and then display it on the bar. (or just use the command written by /u/helpiamarock)
Seems like the simple answer is to use java 9: http://openjdk.java.net/jeps/263
Otherwise, from the arch wiki
Java applications using the AWT/Swing framework can be scaled by defining the sun.java2d.uiScale variable when invoking java. For example,
java -Dsun.java2d.uiScale=2 -jar some_application.jar
You would have to know the scaling factor to use. It could be a user setting, or you could do some calculations based on xrandr info, or ...
Here's
Not sure about the issue, though. Everything should be working.
This is great thank you for the suggestion and I am going to try this because I want to know how to solve my actual 'problem' I spent days on.
It does have a daemon, but from what I gather it ONLY runs if the client is running, I couldnt for the life of me find any documentaion or way to get it to run quietly on its own.
It is Private Internet Access for inquiring minds, maybe someone knows.
I took the previous method suggested by u/btwiusearchlol and set it up through openvpn which seems fine bit I am still annoyed I couldnt achieve a silent startup of the client or at least have it slip into the background after loading.
Bloat or not I do kind of like having the client running I am familiar with the settings and find it a little easier to navigate feel a bit more in control with the actual desktop client than the openvpn settings in Network Manager but I may adjust.
Thank you both for your suggestions
I use xss-lock for this.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
It's still another program, so I'm not sure how much better it really is. All it does is detect DPMS events (e.g. the screen turning off because you're AFK) and calls the command specified.
It's still ultimately another forked daemon at i3 start. But hopefully it's helpful.