README.md
1# conlecterm - a simple tabbed terminal
2
3A simple frame for embedding applications that support the XEmbed
4protocol. The program uses the GTK Socket class to generate a window
5for the embedded application to use.
6
7The display uses a GTK Notebook to collect multiple applications into
8a single top level window.
9
10Each group of applications is termed a _session_ and multiple sessions
11can be defined each having the option of a different tab orientation.
12
13Tabs can be moved by draggng them to the desired position.
14
15The order of the tabs is saved in the session file when close button is clicked.
16
17# Configuration
18
19the configuration file has three kinds of configuration elements
20
21- Commands
22
23 A list of strings, the first being the program. Any string may
24 optionally contain the Window ID or tab text.
25
26
27- Panes
28
29 Define the text that appears on the tab, the command to run, the
30 initial directory.
31
32
33# Programs using XEmbed
34
35## Working
36
37- urxvt works
38- emacs works
39
40## Partially working
41
42- gvim (Ubuntu: vim-gtk) very slow (30 sec) to start shows menu proxy timeout. Seems to be an Ubuntu bug.
43
44
45## Not working
46
47- xterm not accepting focus, but X cut and paste works.
48
49
50# Compiling
51
52The program is written in Haskell and requires GTK and X11
53
54Haskell packages:
55
56Operating System Packages
57---------------- --------
58Ubuntu libghc-gtk-dev libghc-x11-dev libghc-parsec3-dev libghc-hashtables-dev libghc-aeson-dev
59FreeBSD hs-gtk2hs hs-X11 hs-parsec hs-hashtables hs-aeson
60
61
62Installing the above packages should bring in the right dependencies.
63
64A simple Makefile is provided.
65
66# Building with cabal
67
68~~~
69cabal sandbox init
70cabal update
71cabal install alex
72cabal install happy
73cabal install gtk2hs-buildtools
74cabal install --dependencies-only
75cabal build
76~~~
77
78# Configuration
79
80Configuration directory is searched from:
81
82- `${XDG_HOME}/conlecterm`
83- `${HOME}/.config/conlecterm`
84- `${HOME}/.conlecterm`
85
86Then first directory found is used and this is checked for a
87configuration file.
88
89The configuration is loaded from a file in the above directory called
90`config.rc`.
91
92The program will not start if a valid directory is not found or the
93directory does not contain a `config.rc`.
94
95Saved session files are called `SESSION.session` where *SESSION* is
96replaced by the session name. The format of this file JSON.
97
98# Bugs
99
100
101# TODO
102
103- add the _send_ function
104