Guile Really-Improved 3 Window Manager Fork of i3-wm with guile configuration
Go to file
Orestis Floros 37d0105c83
Kill misbehaving subscribed clients instead of hanging
This change only affects clients that are subscribed to events, which
should be the main cause of our problems.

In the common case (no buffered data) the behaviour doesn't change at
all: the message is sent directly, no ev_io / ev_timeout callback is
enabled. Once a write to a client's socket is not completed fully
(returns with EAGAIN error), we put the message in the tail of a queue
and init an ev_io callback and a corresponding timer. If the timer is
triggered first, the socket is closed and the client connection is
removed. If the socket becomes writeable before the timeout we either
reset the timer if we couldn't push all the buffered data or completely
remove it if everything was pushed.

We could also replace ipc_send_message() for all client connections in
i3, not just those subscribed to events.

Furthermore, we could limit the amount of messages stored and increase
the timeout (or use multiple timeouts): eg it's ok if a client is not
reading for 10 seconds and we are only holding 5KB of messages for them
but it is not ok if they are inactive for 5 seconds and we have 30MB of
messages held.

Closes #2999
Closes #2539
2018-08-08 19:14:56 +03:00
.github Fix ISSUE_TEMPLATE typo 2018-07-12 03:49:07 +03:00
AnyEvent-I3 introduce the sync IPC command 2018-03-30 21:09:52 +02:00
contrib Merge pull request #3176 from orestisf1993/dump-asy-marks 2018-03-14 14:24:00 +01:00
debian debian: update changelog 2018-03-10 18:35:11 +01:00
docs Kill misbehaving subscribed clients instead of hanging 2018-08-08 19:14:56 +03:00
etc config: add comment $mod+r in back to normal when resize window 2018-01-05 07:14:57 +07:00
i3-config-wizard Fix redundant return statements 2018-04-27 00:09:42 +03:00
i3-dump-log i3-dump-log: enable shmlog on demand 2017-11-26 18:07:02 +01:00
i3-input Merge pull request #3058 from d-e-s-o/fix-FREE 2017-11-29 08:33:27 +01:00
i3-msg i3-msg: only print input + errorposition if they exist 2018-03-18 03:38:06 +02:00
i3-nagbar Fix redundant casts to the same type 2018-04-27 00:09:42 +03:00
i3bar Replace strncpy call with memcpy when result is not NUL-terminated 2018-05-08 17:05:46 +03:00
include Kill misbehaving subscribed clients instead of hanging 2018-08-08 19:14:56 +03:00
libi3 Kill misbehaving subscribed clients instead of hanging 2018-08-08 19:14:56 +03:00
m4 Accept calling absolute path when building outsource 2016-11-09 22:37:21 +01:00
man Correct XDG paths precedence for config files 2018-07-10 05:04:34 +03:00
parser-specs Kill misbehaving subscribed clients instead of hanging 2018-08-08 19:14:56 +03:00
share Move/rename config files/.desktop files into subdirs 2016-10-23 21:09:24 +02:00
src Kill misbehaving subscribed clients instead of hanging 2018-08-08 19:14:56 +03:00
testcases Kill misbehaving subscribed clients instead of hanging 2018-08-08 19:14:56 +03:00
travis tests: run under Xvfb by default (if available) (#2951) 2017-10-13 00:18:49 -07:00
.clang-format switch to clang-format-3.8 (#2547) 2016-11-08 13:46:43 -08:00
.editorconfig Add .editorconfig (see editorconfig.org) (#2943) 2017-09-13 18:38:27 +02:00
.gitignore Add files generated by make check in AnyEvent-I3/ to .gitignore (#2915) 2017-09-09 14:47:32 +02:00
.travis.yml travis: remove clang-analyze (#2917) 2017-09-09 18:30:17 +02:00
DEPENDS Fix DEPENDS table 2018-05-01 13:49:55 +03:00
I3_VERSION Set non-git version to 4.15-non-git. 2018-03-10 18:29:21 +01:00
LICENSE Remove copyright year range from License 2016-01-17 16:25:54 +05:30
Makefile.am Makefile.am: add forgotten include/sync.h 2018-04-19 20:10:54 +02:00
PACKAGE-MAINTAINER Update PACKAGE-MAINTAINER’s compilation instructions 2016-10-23 21:09:24 +02:00
README.md Add README.md (#2910) 2017-09-10 07:43:53 +02:00
RELEASE-NOTES-4.15 release i3 4.15 2018-03-10 18:29:14 +01:00
configure.ac release i3 4.15 2018-03-10 18:29:14 +01:00
generate-command-parser.pl Remove trailing whitespace from Perl scripts 2018-03-15 21:33:45 +02:00
i3-dmenu-desktop Replace http:// with https:// where applicable 2017-09-24 10:19:07 +02:00
i3-migrate-config-to-v4 Remove dead documentation for non-existing feature "stack-limit". 2015-06-09 23:13:15 +02:00
i3-save-tree Update "mark" to "marks" in i3-save-tree. (#2308) 2016-04-23 12:43:23 +01:00
i3-sensible-editor Added gVim to i3-sensible-editor 2018-02-19 15:39:46 +01:00
i3-sensible-pager Quote the variables in i3-sensible-* correctly 2015-11-30 21:36:23 +00:00
i3-sensible-terminal Add alacritty to i3-sensible-terminal 2018-03-16 22:53:39 +01:00
logo.svg s/i3.zekjur.net/i3wm.org/g 2011-08-28 17:44:42 +02:00
pseudo-doc.doxygen Replace http:// with https:// where applicable 2017-09-24 10:19:07 +02:00
release.sh update release.sh after release 2018-03-10 18:53:20 +01:00

README.md

Logo i3: A tiling window manager

Build Status Issue Stats Pull Request Stats

i3 is a tiling window manager for X11.

For more information about i3, please see the project's website and online documentation.

For information about contributing to i3, please see CONTRIBUTING.md.