• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

distr/H03-May-2022-11680

durden/H20-Dec-2020-45,59836,079

CHANGELOG.mdH A D20-Dec-202016.5 KiB470326

HACKING.mdH A D20-Dec-202027.6 KiB709558

LICENSEH A D20-Dec-20201.4 KiB2922

README.mdH A D20-Dec-20206.7 KiB184132

README.md

1About
2=====
3Durden is a free (3-clause BSD) desktop environment for Arcan, thus it requires
4a working arcan installation, optionally set-up with compatible launch targets
5etc. See the [Arcan](http://github.com/letoram/arcan) repository and wiki for
6those details.
7
8For detailed feature and use descriptions, please see the
9[Durden-Web](http://durden.arcan-fe.com). The individual markdown pages are
10also accessible in the gh-pages branch of the durden repository.
11
12Authors and Contact
13=====
14Development is discussed on the IRC channel #arcan on the Freenode network
15(chat.freenode.org)
16
172015-2019, Björn Ståhl
18
19Licensing
20=====
21Durden is Licensed in the 3-clause BSD format that can be found in the
22licensing file.
23
24The included terminal font, Hack-Bold is (c) Chris Simpkins
25and licensed under the Apache-2.0 license.
26
27The included UI font, designosaur, is provided free (cc-by 3.0 attribution)
28by Archy Studio, http://www.archystudio.com
29
30The included fallback font, Emoji-One, is provided free (cc-by 4.0 attribution)
31by http://emojione.com
32
33Hacking
34=====
35See the HACKING.md file for information on where/how to extend and modify.
36
37Installation
38============
39Durden requires a working installation of [arcan](https://github.com/letoram/arcan)
40so please refer to that project for low level details, which also may cover
41system keymap (the facilities provided in durden are higher level overrides).
42
43The arcan documentation also covers specifics on how to get X, wayland and
44other clients to work.
45
46Other than that, you need to link or copy the durden subdirectory of this
47repository to were arcan looks for applications, or use an absolute path,
48like:
49
50    arcan $HOME/durden/durden
51
52See also the starting section below, as well as the configuration sections
53further below.
54
55Starting
56=====
57distr/durden is a support script that can be run to try and automatically
58set everything up and start. It also takes care of relaunch/recover if the
59program terminated abnormally.
60
61If you have a system that uses the "XDG" set of directories, the script will
62build the directory tree in XDG\_DATA\_HOME/arcan, otherwise it will use
63$HOME/.arcan. To help debug issues, you can create a 'logs' folder in that
64directory and both engine output, Lua crash dumps and frameserver execution
65will be stored there.
66
67Configuration (runtime)
68=======================
69Most changes, from visuals to window management behavior and input device
70actions, can be done from within durden and the UI itself using the menu HUD.
71By default, this is accessed from META1+G for (global) and META1+T for
72current window (target).
73
74All actions in durden are mapped into a huge virtual filesystem tree.
75Keybindings, UI buttons etc. are all simply paths within this filesystem.
76
77These are covered in much more detail on the webpage, but the ones you might
78want to take extra note of is:
79
80    /global/input/bind/custom
81		/global/system/shutdown/yes
82		/global/open/terminal
83		/global/input/keyboard/maps/bind_sym
84		/global/input/keyboard/maps/bind_utf8
85
86Another thing to note is that at startup, after a crash or keyboard plug event,
87a fallback helper is activated. This triggers after a number of keypresses
88that does not activate a valid keybinding. It will then query for re-binding
89key functions, (meta keys, global menu, menu navigation) as a means for
90recovering from a broken or unknown keyboard.
91
92You can also reach most paths with a mouse by right- clicking on the active
93workspace indicator on the statusbar.
94
95Configuration (manual)
96=======================
97There are four ways of configuring durden without using the UI:
98
991. The arcan\_db tool
100
101(See the manpage for more uses of this tool.)
102
103This works offline (without durden running) and only after first successful run.
104All current settings are stored in a database. This can be viewed, and changed,
105like this:
106
107     arcan_db show_appl durden
108		 arcan_db add_appl_kv durden my_key
109
110Or clear all settings and revert to defaults on the next run:
111
112     arcan_db drop_appl durden
113
114This is also used to control which programs (targets) and sets of arguments
115(configuration) durden is allowed to run. This restriction is a safety/security
116measure. Something like:
117
118    arcan_db add_target test BINARY /usr/bin/test arg1
119		arcan_db add_config test default arg2 arg3
120
121Would be added to /global/open/target/test
122
1232. Files
124
125The default settings used on an empty database is found in:
126
127    durden/config.lua
128
129You can also control what is being run at startup in:
130
131    durden/autorun.lua
132
133The first time durden is run, the following script will be run:
134
135    durden/firstrun.lua
136
137Advanced input device configuration is in durden/devmaps for the various
138categories of devices.
139
1403. Controls
141
142Everything can be accessed and controlled (while running) using a domain socket.
143This is enabled through the (global/settings/system/control=name) path.
144
145If enabled, it will appear in durden/ipc/name. You can use the socat tool to
146interact with it and control everything as if using input in the UI directly.
147
148The commands accepted by this socket is any of (ls, readdir, eval, read, write, exec)
149to navigate the menu tree, as well as a 'monitor' command which lets you monitor
150subsystem activity.
151
152There is also a 'MONITOR' command that lets you monitor one or several subsystems.
153
154There is also a tool in arcan that can be built and run, arcan\_cfgfs, which
155allows the control socket to be mounted and treated like a filesystem.
156
157Troubleshooting
158====
159There are many moving parts that can go wrong, the display server aspects when
160it comes to managing GPUs, displays, clients and input devices - as well as
161client behaviors, the window management policies and the features themselves.
162
163On top of this, there are a number of special cases, like VT switching, crash-
164recovery, display hot-plug, soft-reset and 'suspend-exec until program return'
165scenarios that all massage these different subsystems in ways that are hard to
166test automatically and for every configuration.
167
168If durden itself crashes, the recovery can be so fast that you won't notice,
169but the notification widget (if enabled) on the HUD will likely provide you
170with a crash log.
171
172If you suspect a client of behaving badly, you can start it with the environment
173ARCAN\_SHMIF\_DEBUG=1 to get a trace of what goes on, and there are multiple
174tools in the arcan source repository for live-inspecting the state of clients.
175
176You can also ask a client to provide a debug view for you, if it supports that
177feature, by going to /target/video/advanced/debug\_window - calling it multiple
178times may provide multiple levels of debug output.
179
180Then there are logging facilities for all the frameservers, durden itself (if
181run through the launcher script) and .lua snapshots on soft-crashes. These are
182all enabled by creating a 'logs' directory inside your .arcan folder (on non-xdg
183systems, that would be $HOME/.arcan) and restart durden.
184