140 Commits

Author SHA1 Message Date
David Herrmann
22e73357ff uterm: monitor: put systemd-layer into separate file
This moves all systemd code into uterm_systemd.[ch]. This removes all the
ugly #ifdef's.

Furthermore, this fixes some hidden bugs in the previous implementation
and makes use of sd_booted() to see whether runtime systemd is really
available.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-29 18:09:35 +01:00
David Herrmann
9d2018f521 build: fix "make check" build failures
I forgot again to keep these up to date. The conf-layer updates broke them
horribly. However, we now build them correctly without kmscon-core by
including all required layers directly.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-27 18:32:43 +02:00
David Herrmann
89e84aa78c uterm: add PCI primary GPU detection
We used to simply probe every GPU that is reported by the kernel. However,
if a system has multiple GPUs that share display controllers, we cannot
use both simultaneously. Unfortunately, the kernel currently does not
notify us about this. Hence, we use some heuristics to determine which GPU
is the boot-gpu/primary-gpu.

This only adds the detection logic, it does not modify any code to use
this detection at all.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-27 13:25:44 +02:00
David Herrmann
2c5e9bff2b kmscon: add character-device session dummy
If libfuse is available then kmscon is built with a new session type: cdev
This session creates a fake TTY char-dev via CUSE (which itself uses FUSE)
which then can be used by user-space as if it were a real VT.

This is still incomplete and does only support basic I/O, yet. But it
shows in what direction this is going.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-26 18:08:35 +02:00
David Herrmann
696adf965a build: add proper dependency checking to configure.ac
We build several tools inside of this repository and we need to make sure
all dependencies are met. Furthermore, we must make sure that default
values are recognized even on dependencies.
Hence, this reworks the whole configure.ac handling and does some renaming
of the constants that are used all over the source.

We need to test this some more weeks, but it should finally be a proper
autotools handling that we can release with kmscon-6.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-23 11:35:49 +02:00
David Herrmann
d3b718f187 kmscon: add dummy session type
The dummy session is a very simply session implementation that simply
draws a black background. It will be used by each seat as fallback if no
other session is available. If we didn't do that, we wouldn't be able to
guarantee that the screen is cleared after a session is unregistered.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-18 13:14:16 +02:00
Ran Benita
d2600527a7 external: remove unused imKStoUCS files
We needed these files before libxkbcommon had a function to convert
keysyms to unicode, and then for the 'plain' keyboard backend, which
didn't use libxkbcommon. Since this backend was removed, these files are
no longer needed.

Signed-off-by: Ran Benita <ran234@gmail.com>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-15 21:18:14 +02:00
David Herrmann
3ad2996e27 kmscon: add wayland-session support
This adds a wayland compositor which registers sessions for each top-level
window within kmscon. This means, you can run any arbitrary
wayland-application on kmscon. Each top-level window that is registered by
the applications is put into a separate session and you can switch between
the sessions with the previously introduced session-shortcuts.

The compositor is still very basic. It doesn't support input devices at
all (not even talking about DnD). The only thing it does is surface
management (and even that is not fully implemented).

However, this shows the direction that kmscon will go. You can run the
Wayland "simple-shm" and "simple-egl" demos on kmscon to see how it works.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-15 18:10:27 +02:00
David Herrmann
11eaec0e68 Introduce session management
On seats other than seat0 we do not have any session-management, because
VTs are not available. Furthermore, if we want to get rid of CONFIG_VT
entirely, we also need to provide session-management for seat0.

This commit introduces sessions. Every seat (seats are now managed in
kmscon_seat.c) can have registered sessions. One of the sessions is active
and gets control over all displays. Session switching is entirely handled
inside of kmscon so there is always an active session (except if no
session is registered at all).

This also reworks the seat-management. kmscon_main.c now only manages the
seat allocation/deallocation and video-objects. The seat itself is handled
inside of kmscon_seat.c and does not know of uterm_video objects. Instead,
it is assigned a list of displays that it can use. Everything is still
hotplugging capable so user-experience should be the same as before.

The kmscon_terminal layer is reworked to be session based. So every
terminal is now a single session. By default, a single terminal-session is
created for each seat. This may be changed, though.

There is currently no input-control to change between session with
keyboard hotkeys. However, this will be added when we have more than one
session.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-11 10:54:01 +02:00
David Herrmann
26949d961a kmscon: move config-handling to kmscon_conf.c
Configuration handling is totally independent from kmscon_main.c so we
move it into a separate file to avoid cluttering up kmscon_main.c.

This also does some basic initialization in kmscon_conf.c which is solely
related to configuration handling and logging.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-10 21:32:12 +02:00
David Herrmann
e2266c9986 kmscon: move kmscon_main.h to kmscon_conf.h
Everything in this header is solely related to configuration parsing so we
should name it properly. We will also move the configuration-handling from
kmscon_main.c to kmscon_conf.c in some of the next commits to clean up
kmscon-main.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-10 21:23:38 +02:00
David Herrmann
1709c64ee6 Prefix kmscon sources with kmscon_*
We will be adding more applications to this repository, so to keep better
overview, we prefix kmscon sources with kmscon_*.

The only sources that have no prefix are either shared between
applications (i.e., statically linked) or they were not cleaned up, yet.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-09 13:53:55 +02:00
David Herrmann
fa566972e5 uterm: input: remove plain backend
We made xkbcommon mandatory some time ago and there is no reason to keep
this plain backend around anymore. It isn't tested at all and provides no
real advantage over xkb.
Even for debugging it is easier to use XKB.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-08 18:11:17 +02:00
David Herrmann
158b5fcbac shl: hook: link elements in reverse order
When adding new elements, we should add them at the tail, not at the
front. And when removing elements, we should remove them from the tail,
too.

We also convert the whole stuff to the shl_dlist API so we do not have to
manage the linked-list ourself.

Note that this silently breaks the idea of having multiple listeners with
the same function+data in the hook. This is because removing the listener
may now change order of two identical entries, as we don't know which of
them to remove. That means, when adding two identical entries, you cannot
rely on them to retain their position in regard to each other.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-08 17:26:48 +02:00
David Herrmann
742acfa093 wlt: toolkit: add input_offer support
Input offers are used to implement pasting data from other applications.
This adds the infrastructure to operate on data-managers and allows
applications to retrieve the currently active selection-data via a
file-descriptor.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-07 13:13:03 +02:00
David Herrmann
5f1af984d7 build: print (GEN) during genshader/unifont creation
Use the automake silent-rules feature to suppress unused messages.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-05 13:20:24 +02:00
Zbigniew Jędrzejewski-Szmek
bf3415c5b4 build: fix linking for kmscon_font_*
We need to link text-font to kmscon-core as we use it heavily in the
terminal layers.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-02 12:55:18 +02:00
Zbigniew Jędrzejewski-Szmek
df52ae27f5 build: actually make use of pkg-config info about xbkcommon
We now use xkbcommon in lots of places so add the build-flags to all
libraries and applications that use it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-02 12:54:21 +02:00
David Herrmann
de2c0e1d85 build: add shl_misc to all its users
Even though it's just a header, we want to be safe so add it to all users.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-01 12:23:15 +02:00
David Herrmann
a3abdfc5bc Make xkbcommon mandatory
We really need xkbcommon. There is so much stuff (including parsing of
keyboard shortcuts in conf.c) that depends on it. Therefore, we make it
mandatory now which allows us to use xkbcommon functions all over the
place.

Note that xkbcommon itself has no runtime dependencies so it is a small
self-contained library. The only reason I didn't do this ealier is that
xkbcommon has not seen a public release, yet. However, that should be done
in the near future.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-10-01 10:10:50 +02:00
David Herrmann
c43d1ca722 kmscon: allow paths with --vt=<xy>
The getty variants out there (including agetty) require an relative path
to the /dev directory as argument. This is really odd but we want to be
backwards-compatible to them so we allow this, too.

--vt now accepts:
  * A positive number which is internally converted into /dev/ttyXY
  * A string that does not start with '/' or '.' which is interpreted
    relative to /dev as /dev/%s
  * Everything else is interpreted as path

This option still selects only the TTY on seat0. On all other seats we do
not use controlling TTYs.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-30 19:13:02 +02:00
David Herrmann
c95bcdf22b shl: add shl_strtou() helper
The standard C/POSIX helpers are really ugly to use. This small helper
returns 0 on success, otherwise an error.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-30 18:57:40 +02:00
David Herrmann
d16f429335 wlterm: add hard-dependency to xkbcommon
wlterm needs xkbcommon as the wayland protocol depends on XKB states.
Hence, we add a hard-dependency for wlterm.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-26 23:45:02 +02:00
David Herrmann
f40c6eaf32 build: build text_font subsystem as separate static library
We want to use the font-rendering layer in wlterm so we need to split this
out. Gladly, the layer has only a build-time dependency on uterm and not
other hard-coded stuff. That is, we have no cleanup to do.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-26 21:54:37 +02:00
David Herrmann
6e5eb4f92f wlt: terminal: add TSM and PTY objects
Create TSM screens and VTE objects plus a PTY and connect everything so we
have a working terminal. Keyboard input still needs to be hooked up and
the drawing functions aren't implemented, yet.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-26 21:39:15 +02:00
David Herrmann
f9de068a09 build: update autotools logic and add "wlterm" application
Sorry for the big commit, but I was working on the wlterm application and
then thought I can rework the whole configure-logic again. This mainly
renames all build-defines to BUILD_DEFINE_* and BUILD_HAVE_* and allows
specifying which applications to build via --enable-kmscon/--enable-wlterm
and similar.

wlterm is a new application which is a native wayland client with no
external dependencies. It serves several purposes:
  * It uses TSM (not yet implemented, but will come soon) to create a
    console independent from kmscon. This shows how TSM can easily be used
    to create independent terminal emulators.
  * It is a native wayland application (probably the first independent
    wayland app so far?) and is used to test how well the wayland API
    works. As wayland is still under heavy development, we need more
    application-writers who report back whether the wayland-API makes
    sense to them and whether it works correctly.
  * A proper terminal-emulator for wayland! There is currently no proper
    emulator so we really need something that we can work with.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-26 18:56:41 +02:00
David Herrmann
be4cd8edd0 test_key: add small helper for client-side key-input
We sometimes need to test what keys a client receives when specific keys
are pressed. This small helper simply runs in a terminal and receives raw
keyboard input and prints it to stdout with debugging information.

This can definitely be improved with the help of the TSM state-machine to
print more useful information and directly parse the input. However, this
is better than nothing.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-20 13:16:32 +02:00
David Herrmann
8d44f672c8 build: make libtsm build separately
This builds libtsm as separate library so we can use it in other projects,
too.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 17:58:35 +02:00
David Herrmann
67cd0ef3a7 tsm: rename files
Rename all TSM files to have a tsm_* prefix.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 16:54:25 +02:00
David Herrmann
64635943d2 build: fix build without uterm-keysyms.h
uterm-keysyms.h is no longer available but the makefile still references
it. Remove all occurrences of it to fix build again.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 15:53:07 +02:00
David Herrmann
613e7e7000 tsm: screen: move filenames to tsm_screen.[ch]
All TSM files use the "tsm_*" prefix and the object is now named "screen"
so rename the files to resemble this.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 14:53:46 +02:00
David Herrmann
cca90781c0 tsm: move unicode.[ch] to tsm_unicode.[ch]
All TSM related files will get the tsm_* prefix so move unicode headers
and sources.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 10:54:06 +02:00
David Herrmann
7f52a2d73e build: move all remaining static_* files to kmscon-core/uterm
There is absolutely no need to use kmscon-static anymore so move it into
kmscon-core/uterm as it is used by kmscon-core and libuterm exclusively.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 10:49:06 +02:00
David Herrmann
de306cee23 shl: move kmscon_hook_* to shl
This is the last static helper that is moved so as a next step we should
get rid of the "static" library entirely.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 10:36:37 +02:00
David Herrmann
d62b367210 shl: move llog to shl
We might argue whether llog should be kept separate, however, shl is a
loose pile of headers and sources so pushing llog into it seems
reasonable.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-18 09:18:50 +02:00
David Herrmann
93c553c1bc shl: move timer to shl_timer_*
This moves the timers to SHL and removes the old static_misc header and
source. They are no longer needed.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-16 17:08:21 +02:00
David Herrmann
04e3bcc652 shl: move kmscon_ring_* to shl
The ring implementation is only used in one place so move it into SHL to
avoid linking it into all other libraries and applications.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-16 09:23:35 +02:00
David Herrmann
f3e3973d56 shl: move kmscon_hashtable to shl
This moves the whole hashtable implementation into the SHL library. Now we
can link it only to the applications that really use it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-16 09:13:30 +02:00
David Herrmann
2b5b7d3736 shl: move kmscon_array_* to shl_array_*
This moves all array code into the SHL library and fixes all users.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-16 09:10:36 +02:00
David Herrmann
aed1373bc6 shl: move dlist to shl_dlist.h
Instead of including dlist in the static library, we now move it to SHL.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-15 20:11:00 +02:00
David Herrmann
c1fcb47654 build: fix missing header includes
"make distcheck" fails as we aren't declaring the headers correctly.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-11 19:37:35 +02:00
David Herrmann
55e37dde77 uterm: add uterm_keysyms.h
We need a copy of xkbcommon-keysyms.h as long as xkbcommon is not included
in all major distributions. We _need_ this build-time dependency,
otherwise, we cannot build the other keyboard backends.

However, requiring xkbcommon as build-time dependency is not a solution as
no major distribution includes it.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-11 19:30:26 +02:00
David Herrmann
6967f0acda fakevt: remove unused tool
The fakevt tool is no longer used. The same functionality was integrated
into kmscon with the fake-VT uterm_vt backend.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-11 19:03:29 +02:00
David Herrmann
a5b4f7df9b build: add uterm pkg-config file
We intend to make libuterm independent of kmscon so it can be used by
other projects. Therefore, add a pkg-config file for easier integration
into other build systems.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-11 18:08:00 +02:00
David Herrmann
12db259e6f build: reorder makefile
This moves the independent libraries to the top as they can be built
without kmscon, too.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-11 17:59:45 +02:00
David Herrmann
cea022d36e eloop: add pkg-config file
The pkg-config file allows other users of libeloop to more easily
configure build-time options for eloop.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-11 16:54:49 +02:00
David Herrmann
6fb1e5d7b4 build: fix distcheck errors
Correctly include everything in the distribution so distcheck and dist
really work.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-08 16:21:09 +02:00
David Herrmann
16e292830d docs: remove gtkdoc
This never really worked and was horrible to maintain. We need to find
something else for documentation, but we will probably have to do it with
a separate XML file without any generator.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-08 16:19:49 +02:00
David Herrmann
d84ed347bf build: fix dbus-loop build
We need to include everything in the distribution and fix the
include-path, otherwise, we might get "distcheck" errors.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-08 16:18:19 +02:00
David Herrmann
174722b400 build: make eloop independent of libkmscon-static
This removes the nasty dependency to libkmscon-static for libeloop.
Otherwise, we might end up with GLESv2 dependencies here which is really
not what we want.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2012-09-04 19:10:28 +02:00