1284 Commits

Author SHA1 Message Date
David Herrmann
30dac8b736 docs: remove getty@.service
This is no longer used and was replaced by kmsconvt@.service some time
ago.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2013-01-02 17:34:47 +01:00
David Herrmann
dfde5b4478 build: include kmsconvt@.service in EXTRA_DIST
We need the new kmsconvt@.service file instead of the old kmscon@.service.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2013-01-02 17:34:07 +01:00
David Herrmann
1f38e6beed build: fix man-page compilation
The man_fixup_aliases thingy was a horrible hack. Replace it with a
temporary .man_fixup file that saves compilation timestamps so we have
post-recipies for man-fixups.

Also fix some minor out-of-tree build problems.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2013-01-02 17:32:49 +01:00
David Herrmann
ca446c691f build: provide git-head revision via githead.h
We need the git-revision for module-version checks so provide the
infrastructure now and print it in log_init().

Note that the git-describe string is distributed with the tarballs so
end-users will not have to generate it themself. But when building from
git, the revision will be automatically updated whenever something
changes.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2013-01-02 15:51:54 +01:00
David Herrmann
7a9b85c306 build: fix libuterm dependency typo
We didn't set the dependencies correctly for uterm libraries as a
backslash was missing. Fix this typo.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-31 15:41:00 +01:00
David Herrmann
6d51049874 build: mark man_fixup_aliases as PHONY target
We need to mark it as PHONY target as it has no corresponding source file.
It's unlikely that it causes problems, but lets be safe.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-31 15:40:06 +01:00
David Herrmann
d96934c4a5 shl: misc: add shl_ends_with() helper
This helper checks whether a string has the given suffix.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-30 19:41:08 +01:00
David Herrmann
0ec995601b shl: misc: add shl_dirent() helper
"struct dirent" has always been a mess. As its size may differ between
systems, we need to dynamically allocate it. This helper does that for us.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-30 19:40:04 +01:00
David Herrmann
7304985892 text: use new shl-registry objects
Instead of implementing our own thread-safe backend-storage, we now use
the generic shl-registry object.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-30 16:21:27 +01:00
David Herrmann
6b39218ceb text: font: use new shl-registry objects
Instead of implementing a thread-safe backend-system we can now use the
new shl-registry storage module.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-30 16:20:51 +01:00
David Herrmann
3c9363035e shl: add new register helper
The shl-register module is used to create registries of named-objects. The
main purpose for it will be for module-systems were we have different
backends implementing an interface. The registry can then be used to find
a specific module (or the default module).

No sophisticated filter/search mechanism is used as this cannot be done
efficiently in a generic way.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-30 16:18:25 +01:00
David Herrmann
39fb61a84e COPYING: add missing contributor's names
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-30 12:50:47 +01:00
Hoàng Đức Hiếu
e0f2330239 docs: fix systemd-unit name typo
We forgot to rename the templates from kmscon to kmsconvt in the comments.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-30 12:49:25 +01:00
David Herrmann
60c2851d64 text: gltex: fix y-inversion with new gbm-surfaces
The standard OpenGL surfaces are y-inverted (which we didn't implement
correctly previously when using our own gbm-surfaces). Therefore, we need
to flip the y-coordinates now as we use correct GL surfaces with the new
drm-uterm backend.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-21 15:30:19 +01:00
David Herrmann
382e238b2f uterm: video: drm: use gbm surfaces
Until now we always created our buffers via gbm_bo_create() and used
surfaceless EGL contexts so we can schedule buffer-flips manually.
However, recent gbm and EGL mesa releases include gbm-surfaces that allow
us to ignore all this an let EGL manage the buffers.

This introduces some problems as we are no longer under control of the
buffers so we cannot know which buffer is active. That means, applications
that use the uterm-drm devices must redraw the screen on each frame.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-21 15:15:16 +01:00
David Herrmann
724b030894 docs: fix default font-size=12 documentation
We used font-size=15 in the past but changed it long ago. However, the
documentation still used 15 so fix this now.

Reported-by: James Buren <ryu0@ymail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-21 14:13:00 +01:00
David Herrmann
b469a1f4eb docs: add kmsconvt@.service systemd template
This new template can be used as replacement for getty@.service. It has
the same semantics and can be used as drop-in replacement. It even uses
getty@.service as fallback if kmscon fails.
See the comments in the files for more information.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-17 13:25:52 +01:00
David Herrmann
6be24df169 terminal: use COLORTERM=kmscon as default
We now set COLORTERM to "kmscon" so applications can identify their
controlling terminal. Note that COLORTERM is not used for terminfo/termcap
detection (unlike TERM).

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-12 21:29:23 +01:00
David Herrmann
5a33f412d9 kmscon: use /bin/login -p as default login program
We must pass "-p" to make "login" preserve the environment. We make sure
the environment is correctly reset before calling it so it is safe.
Furthermore, this allows us to pass additional environment variables to
the child without having /bin/login reset it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-12 21:24:51 +01:00
David Herrmann
24fe3f1911 kmscon: add --reset-env option
This option controls whether we reset the environment before spawning the
PTY child.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-12 21:24:15 +01:00
David Herrmann
dd481c2fa6 pty: add env_reset property
This property controls whether the environment should be reset before
spawning the child process. Defaults to "no" and affects whether "-p" is
passed as default argument to /bin/login.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-12 21:20:45 +01:00
David Herrmann
d50f80a72f pty: add "colorterm" property
The colorterm property is used (if set) as COLORTERM environment variable.
Note that this variable (despite the name) is not used with
terminfo/termcap. Instead, it's solely used to identify the running
terminal.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-12 20:12:21 +01:00
David Herrmann
eba5178643 build: check for udev >=172
We need udev_device_has_tag() which was introduced in version 172.
Document that in README file.

Reported-by: Manuel Rüger <mrueg@rueg.eu>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-10 16:21:32 +01:00
David Herrmann
03aab2b54b tsm: screen: add support for multi-cell characters
The wcwidth() POSIX helper returns the number of cells that a character
occupies. This is normally 1, however, if it is 0 we simply discard this
input (this should never happen as all characters that wcwidth() returns 0
for should already be handled by the VTE layer).
But if it is >1, we write the character in the first cell, set the width
correctly and mark all following characters as width=0.

Everything else is left unchanged, that means, the running application has
to be aware of wcwidth() and correctly send two backspaces to clear a
width=2 character and so on.

This behavior almost exactly matches the xterm behavior. There are some
corner cases like erasing only one part of a multi-cell character etc.
that might differ. However, these are non-standard cases that no
application should never rely on.
Anyway, if we spot any of these differences between xterm and kmscon, we
should fix kmscon to behave like xterm does.

Thanks to Shixin for looking this up in other emulators.

Reported-by: Shixin Zeng
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-10 16:09:28 +01:00
David Herrmann
1657bb9a3a text: add render-support for multi-cell glyphs
Multi-cell glyphs are glyphs that span across multiple horizontal cells.
The font renderers already support this. This patch fixes the console
renderers to take advantage of this.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-10 16:00:08 +01:00
David Herrmann
0de1de25fd text: font: draw multi-cell characters correctly
Instead of clipping every character to a one-cell boundary, we now render
multi-cell characters correctly into multiple cells.

This does not adjust the console-renderers but only the font renderers to
provide the correct glyphs.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-10 15:55:12 +01:00
David Herrmann
f52baf9896 docs: fix typos in unicode-test.txt
Two simple obvious typos.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-10 15:36:28 +01:00
David Herrmann
bc40e1ae53 tsm: unicode: add wcwidth() implementation
wcwidth() is a POSIX function that returns the number of cells that a
wide-character occupies. The glibc function cannot be used as it depends
on the locale and we need _always_ UTF8 no matter what the locale is.

This implementation is provided by Markus Kuhn and is equivalent to
xterm's behavior.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-10 15:36:04 +01:00
David Herrmann
e3c9bcfb15 tsm: unicode: fix header-protection namespace
TSM is no longer part of main-kmscon libraries so move macro-names to
TSM_* prefix.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-10 15:23:10 +01:00
David Herrmann
98970835d9 uxkb: print warning if LED update fails
If we cannot write LED states to an input device, we should print proper
warnings instead of ignoring it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 22:06:51 +01:00
David Herrmann
f951f6b705 Release kmscon-6
This release contains a lot of fixes all over the place and introduces
many new features. See ./NEWS for a list of new features.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
kmscon-6
2012-12-09 21:55:32 +01:00
David Herrmann
0a743ec670 README: update readme-file
We updated configure.ac several times and need to update the README with
the newest command-line options.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 20:49:28 +01:00
David Herrmann
afb15bfee0 NEWS: add further kmscon-6 news entries
We added some more features in the recent weeks so add them. Most of it
were bugfixes, though.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 20:11:14 +01:00
David Herrmann
559823b50a COPYING: add all contributors
Add name of all contributors to COPYING.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 19:53:27 +01:00
David Herrmann
4e06dc3543 build: add systemd service files to EXTRA_DIST
These service files aren't installed, yet but they work so distribute
them.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 19:52:35 +01:00
David Herrmann
146431c834 build: add manpage-XML files to EXTRA_DIST
We need these XML files to build the man-pages so add them to EXTRA_DIST.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 19:51:51 +01:00
David Herrmann
c74658f368 build: add kmscon_cdev.h to source files
This is needed to get "make distcheck" working again.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 19:51:22 +01:00
David Herrmann
929ba2b091 Add getty@.service replacement
This unit file is a new replacement for standard systemd-getty files.
Installed into /etc/systemd/system it replaces the standard systemd unit
and spawns kmscon instead of agetty on virtual terminals.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 18:40:26 +01:00
David Herrmann
6e8fb5aa0d kmscon: add --seats=current option
This option uses XDG_SEAT to determine the current seat. If this is NULL,
we fall back to "seat0".

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 18:34:26 +01:00
David Herrmann
b78244e1ab pty: use /bin/login by default
kmscon does always pass a proper argv array so the default is never used.
However, for security reasons we shouldn't hardcode /bin/login. If some
other program uses the pty layer and forgets to pass in a suitable argv
all the time, they mind end up with opening a root shell.

Hence, use /bin/login as default.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 18:33:03 +01:00
David Herrmann
978b869e8b build: add more verbose recursive error-messages to configure.ac
Our dependency checker should recursively report missing dependencies.
Otherwise, the user doesn't really know what is missing.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 17:45:50 +01:00
David Herrmann
7c503b203e build: add AC_PROG_SED to configure.ac
We need SED for man-page generation so explicitly look for it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 17:45:20 +01:00
David Herrmann
3d28387fb2 kmscon: remove compositor support
The wayland compositor support was some research project that turned out
to not work that well. The main problem is that the DRM planes support
cannot be easily forwarded to a child. Sub-surface support might change
that but until then we remove compositor support.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 15:55:26 +01:00
David Herrmann
89b6ff63fc seat: always activate fake-VTs during startup
Instead of relying on --switchvt, we should always activate fake-VTs
during startup. Otherwise, we might end up with dead seats as there is no
way to wake up kmscon later.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 14:19:17 +01:00
David Herrmann
5e8ce520c2 kmscon: remove broken vt_eloop concept
We tried to avoid running unused code during shutdown by moving VT
handling into a separate eloop and run it exclusively. However, with
delayed VT switching, we need to run other event-handlers to make the VT
switch work. Therefore, run all of this during shutdown and remove the
vt_eloop event-loop.

This means that we might create new seats, displays, etc. during shutdown.
This is valid and doesn't harm kmscon, but we want to avoid doing stuff
that is undone few miliseconds later. Therefore, we set a "exiting" flag
and check that before initiating most of the big handlers.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 14:14:41 +01:00
David Herrmann
29625b186d seat: start hotplugged seats if --switchvt is given
We currently only start seats (switch to their VT) during startup but we
should also do that for hotplugged seats. Therefore, move that logic into
kmscon_seat and perform the startup after the seat is fully set up.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 13:50:38 +01:00
David Herrmann
06a50ce58c kmscon: remove unused 'out' arguments
We don't use the newly created objects so no need to return them.
Furthermore, we want the functions to already perform actions on the
objects so there is no guarantee the objects are still alive after
function return. Thus, simply return nothing.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 13:44:52 +01:00
David Herrmann
cec87f029c kmscon: move video-device uterm-monitor handling
Same as previous commit: Move uterm-monitor device-data handling into the
real device create/destroy functions to allow dynamic device removal.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 13:41:28 +01:00
David Herrmann
c4a1a33597 kmscon: set uterm-seat data in seat-creation
If we want to be able to destroy seats from anywhere, not just
uterm-monitor callbacks, we need to be able to reset the monitor-event
seat-data so we no longer access the seat memory.
Hence, move the seat-data set/reset logic into the actual seat
creation/destroy functions.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 13:37:39 +01:00
David Herrmann
add239ee2c seat: pass allowed VTs from caller
We should handle everything --listen related in kmscon_main so pass in the
allowed-VTs mask from the caller.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-12-09 13:26:45 +01:00