airblader / i3 Goto Github PK
View Code? Open in Web Editor NEWA fork of the i3 window manager with gaps and some other features. :warning: i3-gaps has been merged into i3.
License: BSD 3-Clause "New" or "Revised" License
A fork of the i3 window manager with gaps and some other features. :warning: i3-gaps has been merged into i3.
License: BSD 3-Clause "New" or "Revised" License
Hello,
i3-gaps
has often overloads my CPU up to 100%.
My CPU is Intel(R) Core(TM)2 Quad CPU Q8300
.
I don't understand why.
http://logs.i3wm.org/logs/5740874747084800.bz2
/var/run/user/1000/i3/errorlog.19732 contents:
ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ExposeEvent for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ExposeEvent for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000006
ERROR: Received ExposeEvent for unknown window 0x01000006
ERROR: Received ConfigureNotify for unknown window 0x01000006
ERROR: Received ConfigureNotify for unknown window 0x01000009
ERROR: Received ConfigureNotify for unknown window 0x01000009
ERROR: Received ConfigureNotify for unknown window 0x0100000c
ERROR: Received ConfigureNotify for unknown window 0x0100000c
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ExposeEvent for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000003
ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ExposeEvent for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000000
ERROR: Received ConfigureNotify for unknown window 0x01000006
ERROR: Received ExposeEvent for unknown window 0x01000006
ERROR: Received ConfigureNotify for unknown window 0x01000006
My i3-gaps
version is:
Binary i3 version: 4.10.3-347-g586854b (2015-07-30, branch "makepkg") © 2009-2014 Michael Stapelberg and contributors
Running i3 version: 4.10.3-347-g586854b (2015-07-30, branch "makepkg") (pid 19732)
The i3 binary you just called: /usr/bin/i3
The i3 binary you are running: i3-with-/i3
I know this is probably pretty far fetched, but it's a pretty cool feature and the only thing I miss in i3 after using this fork.
In bspwm it's possible, when using $mod+ Right Click, to manipulate both the x axis and the y axis at once, whereas i3 only allows the manipulation of one axis.
Example:
http://youtu.be/U17CLayt_aA?t=14s (14 seconds in)
Would this be possible to implement?
Thank you for this repo, it's been great, one thing though, is it possible to assign smart_gaps
only for certain workspaces?
As in
smart_gaps off
workspace 1 smart_gaps on
I try using $mod+shift+e
then I attempt to click "yes, exit i3"
nothing happens
however I can hit the close button
I don't know if this is a bug or an intended feature, but it would be nice to be able to do something about it.
If I have, say, gap_size = 10, then the gap_size between container A and B will total 20, whereas the gap_size between a container and the edge of the screen will be 10. Would be nice to have consistency, so gap_size = 10 would be 10 everywhere.
Here's a crappy picture for reference:
http://imgur.com/XiHoLXH
Thanks
Given a "H" layout where the right container is a "V" layout with two containers
When selecting the "V" container
And going fullscreen
Then the gaps from the left window in the "H" container are still considered.
Not really essential or anything since it's probably an unusual workflow; shouldn't be hard too fix, though.
This will remove the necessity to combine multiple blocks which is awkward and verbose.
Syntax could be
full_text: "${#ffffff}Text"
Hi, first time adding a feature request on github... accidantely pushed enter too early.
Just wanted to mention that it would be cool if there was a way to specify the vertical outer gap seperatly to the horizontal. It's possible in xmonad, and I find it quite usefull for having my two conky windows visible in one layout.
See https://github.com/ashinkarov/i3-extras/blob/master/0x2493-patches/smart-border.patch, but make it an opt-in.
This would be pretty nifty, if it's possible.
This is an i3 "bug", so if fixed, this should be submitted to i3 as well, though it may not be accepted there.
If workspaces are named, i3 on startup opens one workspace per output, but they are labelled "1", "2" and so on. Can this be fixed by actually giving workspaces names in the i3 config?
The indicator of a faded terminal is not faded. This is an i3 bug, IMHO, and if I fix it, I'll submit it there. This ticket is just a reminder for me.
Hi again
I saw you made an issue on the i3 github repo completely by chance as I was installing i3blocks (and i3-gaps of course) to my laptop, but I don't know whether the issue lies within i3blocks or i3-gaps. I've been an avid user of i3blocks and actually talked to Vivien about using it with your fork a little while abck. I was very kindly given instructions to add a few lines to the i3blocks file block.h and then compile:
http://pastebin.com/wbgZFZar (this is line 39-59 in block.h)
and now i3blocks works with your fork, however, when I use the border options you added, it causes -very- annoying flickering multiple times a second independently of my interval settings it my i3blocks.conf, and the issue didn't seem to be with i3blocks.
Is this something on my end or is it a bug in i3-gaps?
Regardless, I at least hope the block.h file modification is useful to you anyway.
Thanks!
There are split horizontal
and split vertical
that change the orientation of the current workspace. There seems to be missing split toggle
, though. My use case is as follows:
The desktop is blank.
I open a new window, 1
, so it has one container.
I open another window, 2
. The container changes like this:
### ###
#1# #2#
### ###
...and the focus is given to 2
.
Now I'd like to press a hotkey that figures the current orientation for 2
's container, and changes it, so that when I open a new window, 3
,
I get this:
### #2#
#1#
### #3#
instead of this:
## ## ##
#1 #2 #3
## ## ##
I don't have to figure which key to press now to change the current orientation (which would be required if I used split h|v
).
I'm aware that there is layout toggle split
, but it acts on already opened windows, rearraging the whole layout. What I want is to change the orientation property "behind the scenes", so that it will only become visible after I actually open a new window.
I apologize if this feature is already implemented; I searched the manual and experimented with config but I just couldn't figure out a way to do what I described.
This would allow to add a mode-indicator to 3rd-party bars (for example a powerline segment would just use i3-py
and call to something like get_mode
).
See PR #27 and the attached comments.
gaps inner|outer workspace number <name> set|plus|minus <px>
It'd be wonderful to also allow for_workspace [number = <number>] gaps …
, but that probably needs to be its own issue.
Is there a way to allow floating windows to have a titlebar? I find it useful for moving around dialog windows that pop up at a strange location, or are at the large side. Alternately, can I let all floating windows appear in a corner? Or perhaps, how do you manage this?
I have not found that you can set a for_window to target floating windows and my apologies if here is not the right place to ask this. And of course, thanks for your kind time. ^_^
Because I can.
What it says on the tin. Some commands(such as Alt+D) cause the error status_command not found or is missing a library dependency
, and the configuration file does not write to ~/.i3 after you are asked to generate a config file.
How i installed:
git clone https://www.github.com/Airblader/i3 i3-gaps
cd i3-gaps
git checkout gaps && git pull
make
make install
Dependencies installed:
libxcb1-dev libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev libxcb-icccm4-dev libyajl-dev libstartup-notification0-dev libxcb-randr0-dev libev-dev libxcb-cursor-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
(all the dependencies from here https://github.com/Airblader/i3/wiki/Compiling-&-Installing )
OS: Ubuntu 15.04
Installation log:
[libi3] CC libi3/get_process_filename.c
[libi3] CC libi3/safewrappers.c
[libi3] CC libi3/root_atom_contents.c
[libi3] CC libi3/is_debug_build.c
[libi3] CC libi3/get_mod_mask.c
[libi3] CC libi3/string.c
[libi3] CC libi3/ipc_connect.c
[libi3] CC libi3/get_config_path.c
[libi3] CC libi3/ucs2_conversion.c
[libi3] CC libi3/dpi.c
[libi3] CC libi3/font.c
[libi3] CC libi3/get_exe_path.c
[libi3] CC libi3/resolve_tilde.c
[libi3] CC libi3/get_colorpixel.c
[libi3] CC libi3/strndup.c
[libi3] CC libi3/fake_configure_notify.c
[libi3] CC libi3/ipc_send_message.c
[libi3] CC libi3/mkdirp.c
[libi3] CC libi3/get_visualtype.c
[libi3] CC libi3/ipc_recv_message.c
[libi3] AR libi3.a
[i3] CC src/resize.c
[i3] CC src/log.c
[i3] CC src/debug.c
[i3] Generating command parser
[i3] CC src/commands_parser.c
[i3] CC src/regex.c
[i3] CC src/config.c
[i3] CC src/restore_layout.c
[i3] CC src/fake_outputs.c
[i3] CC src/bindings.c
[i3] CC src/manage.c
[i3] CC src/con.c
[i3] CC src/xinerama.c
[i3] CC src/scratchpad.c
[i3] CC src/match.c
[i3] CC src/main.c
[i3] CC src/window.c
[i3] CC src/move.c
[i3] CC src/key_press.c
[i3] CC src/x.c
[i3] CC src/config_directives.c
[i3] CC src/load_layout.c
[i3] CC src/output.c
[i3] CC src/floating.c
[i3] CC src/xcb.c
[i3] CC src/ipc.c
[i3] CC src/sd-daemon.c
[i3] CC src/version.c
[i3] CC src/commands.c
[i3] CC src/randr.c
[i3] CC src/xcursor.c
[i3] CC src/util.c
[i3] CC src/workspace.c
[i3] CC src/click.c
[i3] Generating config parser
[i3] CC src/config_parser.c
[i3] CC src/sighandler.c
[i3] CC src/ewmh.c
[i3] CC src/assignments.c
[i3] CC src/handlers.c
[i3] CC src/display_version.c
[i3] CC src/render.c
[i3] CC src/startup.c
[i3] CC src/tree.c
[i3] Link i3
[i3] Link test.commands_parser
[i3] Link test.config_parser
[i3-config-wizard] CC i3-config-wizard/main.c
[i3-config-wizard] Link i3-config-wizard
[i3-msg] CC i3-msg/main.c
[i3-msg] Link i3-msg
[i3-input] CC i3-input/keysym2ucs.c
[i3-input] CC i3-input/main.c
[i3-input] Link i3-input
[i3-nagbar] CC i3-nagbar/main.c
[i3-nagbar] Link i3-nagbar
[i3bar] CC i3bar/src/outputs.c
[i3bar] CC i3bar/src/parse_json_header.c
[i3bar] CC i3bar/src/config.c
[i3bar] CC i3bar/src/workspaces.c
[i3bar] CC i3bar/src/mode.c
[i3bar] CC i3bar/src/ipc.c
[i3bar] CC i3bar/src/main.c
[i3bar] CC i3bar/src/xcb.c
[i3bar] CC i3bar/src/child.c
[i3bar] Link i3bar
[i3-dump-log] CC i3-dump-log/main.c
[i3-dump-log] Link i3-dump-log
[i3] Install
[i3-config-wizard] Install
[i3-msg] Install
[i3-input] Install
[i3-nagbar] Install
[i3bar] Install
[i3-dump-log] Install
Version:
Binary i3 version: 4.10.3-347-g586854b (2015-07-30, branch "gaps") © 2009-2014 Michael Stapelberg and contributors
Running i3 version: 4.10.3-347-g586854b (2015-07-30, branch "gaps") (pid 1774)
The i3 binary you just called: /usr/bin/i3
RUNNING BINARY DIFFERENT FROM BINARY ON DISK!
The i3 binary you are running: i3
Log:
i3-gaps
isn't supposed to work with stacked and tabbed mode, right? I'm saying that because using the following configuration and still gets some graphical glitches sometimes (seems random).
new_window pixel 3
new_float pixel 3
Let me ask you a dumb question why stacked and tabbed mode does not work well with gaps? We can't get rid of the title bars entirely?
Free colors added for background / border.
Would be cool and shouldn't be all that hard
I recently acquired a second, larger monitor and it would be nice to set the inner/outer gaps seperately for each output, not for a workspace (so I can have larger gaps and some outer gaps on the larger monitor).
I don't really know whether and how that would fit into the current protocol, if you don't think it's fitting then I will have to consistently assign my workspaces to my outputs.
This has been rejected upstream a few times.
Is it possible to set a gap size between containers in a tabbed container?
The current branch "feature-configurable-gaps" contains a fix to change the gap size without having to open a container to cause the rerender.
It would be nice to also have some command like gap_size plus 5
.
when i try compiling with make && sudo make install, i get following output:
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
[i3] CC src/ipc.c
In file included from ../i3-gaps/src/ipc.c:13:0:
../i3-gaps/src/ipc.c: In function ‘handle_get_version’:
include/yajl_utils.h:17:50: error: expected expression before ‘)’ token
#define y(x, ...) yajl_gen_##x(gen, ##VA_ARGS)
^
../i3-gaps/src/ipc.c:822:5: note: in expansion of macro ‘y’
y(integer, MAJOR_VERSION);
^
include/yajl_utils.h:17:50: error: expected expression before ‘)’ token
#define y(x, ...) yajl_gen_##x(gen, ##VA_ARGS)
^
../i3-gaps/src/ipc.c:825:5: note: in expansion of macro ‘y’
y(integer, MINOR_VERSION);
^
why does this happen, or how could I fix it?
Imagine two containers with the mouse being over container 1 and that container being focused. Now switch the workspace, move the mouse so that it would, in theory, be over container 2, and switch back to the first workspace.
Container 1 is still focused and focus will only change on a click or when leaving the container and entering it again. Not updating the focus when switching the workspace is fine, but once the mouse starts moving, it'd be nice to set the focus.
Hi again
It would be wonderful to have smart border to only activate if there are no gaps. A single window with gaps looks silly without borders.
I don't know the scope of this project, though; whether if would be feasible to implement.
Effect seems to be stronger the bigger the outer gaps are. Doesn't seem to happen when outer gaps aren't used.
When building i3-gaps-git from the AUR, the build process fails at ipc.c with the following error(s):
[i3] CC src/ipc.c
In file included from ../i3/src/ipc.c:13:0:
../i3/src/ipc.c: In function ‘handle_get_version’:
include/yajl_utils.h:17:53: error: expected expression before ‘)’ token
#define y(x, ...) yajl_gen_ ## x (gen, ##__VA_ARGS__)
^
../i3/src/ipc.c:741:5: note: in expansion of macro ‘y’
y(integer, MAJOR_VERSION);
^
include/yajl_utils.h:17:53: error: expected expression before ‘)’ token
#define y(x, ...) yajl_gen_ ## x (gen, ##__VA_ARGS__)
^
../i3/src/ipc.c:744:5: note: in expansion of macro ‘y’
y(integer, MINOR_VERSION);
^
src/i3.mk:36: recipe for target 'src/ipc.o' failed
The same occurs when building from a cloned repository.
This is against i3's philosophy, so it definitely won't be accepted as a patch there. But (optionally!) keeping empty workspaces may be an idea.
This is a placeholder issue for this topic. Some thought will have to go into how this should work exactly. Also, ideally, this is integrated into the restore layout feature.
This seems to be the spot that would normally be occupied either by a titlebar or i3bar. I am running without i3bar and gaps inner 30
. The bar in the image is BAR; looks the same (except the weird area starts at the top of the screen) with BAR at the bottom.
It's just not adapted to the new bar height. Should be submitted to i3 as well.
Hi again
I don't know if the issue is on my end, but I just reinstalled Arch and set up my wm. The usual routine etc.
Now, after a reboot, the text in my i3bar (but not the icons) are not centered horizontally and it's driving me nuts. I usually use i3blocks but I also tested with i3status to make sure:
i3status:
http://imgur.com/uNJTV2q
i3blocks:
http://i.imgur.com/uKP8yJ5.png
Have I done something wrong or is this a bug?
Thanks a lot!
Presently, inner gaps are still applied if there is only one container on the screen even if smart_borders is enabled. This seems counter to the definition of inner gaps as a sort of transparent window border (gaps between containers) while outer gaps are a padding around the edge of the screen.
smart_borders on should hide inner gaps (i3 looks ugly with modest gaps if only one window is open).
I submitted it to i3, so why not apply it here, too.
border
, background
, border_top
and so on need to be documented in the i3bar protocol.
After replacing i3-gaps with i3-gaps-git, i3bar is not showing systray icons anymore. Before I installed i3-gaps it also worked with the normal i3 4.8.3.
Here is the config
Thanks for any help
Hey,
I just tried this fork for the fist time via AUR.
When I activate gaps, the window titles (most times) dissappear and leave some garbage on top where the gap should be. (Pictures above).
Sometimes it appears but with a gap between title and window.
It just appears if either inner or outer is set to a value != 0, so it isn't a general bug as I think.
It also appears in both gaps and gaps-next branches.
For floating windows it is always working as it should.
With inner 10
and outer 5
:
With inner 0
and outer 5
:
With inner 10
and outer 5
:
And finally with inner 0
and outer 0
I made the backgound red, to see what is bg and what is garbage.
new_window
and new_float
is always set to normal
For none
or pixel
it is also working as it should.
This is comparably a huge feature to implement, but something I would find really useful:
fixed size containers that stay open even without children and that allow clients to be assigned
to (in a similar fashion to workspaces).
This would allow side-by-side development with graphical applications that need to be restarted when iterating a lot.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.