forked from evertiro/cdm
-
Notifications
You must be signed in to change notification settings - Fork 4
/
ChangeLog-0.7
151 lines (102 loc) · 5.55 KB
/
ChangeLog-0.7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
Version 0.7 (2014-17-01)
* Alternative startx as (altstartx):
Another way then usual, or alternative way was remove as this is not needed
anymore. If situation tells otherwise I'll return behavior.
* Removed consolekit, xtty, cktimeout:
Specified var's and all coresponded functions are removed as they are not
needed.
Explenation comes:
consolekit - is removed as it's obsolte and replaced by systemd logind
thus not needed.
cktimeout - there is no consolekit so cktimeout is sufficient
xtty - as of xorg 1.16 rootless login is introduced. There is no way to
specify X starting terminal, except editing Xwrapper in /etc/X11, for more
info read (man xorg.wrap)
* Removed cdm-xlaunch:
Executing X is now inside cdm itslef. Distributing cdm package with two
files cdm and cdm-xclaunh is now stupid because cdm-xlaunch is now empty as
consolekit is completly removed.
* cdmrc:
removed nonexistant variables
Version 0.6 (2012-04-08)
* Add support for user-defined cdmrc:
Since cdm(1) is run with user priviledge, users can still circumvent
administrator's settings by simply running a modified version of cdm(1)
and use his own config. Therefore it's technically meaningless to specify
everything in a config file located in /etc/.
Multilevel config can be more flexible (see the implementation of submenus
after Casper's modifications), just like with bash(1), zsh(1), etc.
* Classify menu items into console programs and X programs:
Console programs are directly `exec'ed. X programs are run in a way
similar to that in cdm 0.5.3. Programs are specified in the bash array
`$binlist', and their names are in the array `$namelist'. Their types (
aka "flags"), as denoted by `C' (console programs) or `X' (X programs),
are specified in the array `$flaglist'.
So with the current architecture, cdm(1) submenus can be implemented by
letting one cdm(1) `exec' another cdm(1) with a different config file (see
the "user-defined cdmrc" section).
Also, one can log in his account and autostart cdm(1) (using `exec cdm' in
.profile or so), and let cdm(1) launch his desktop, or just drop to his
$SHELL by `exec $SHELL'. So the architecture is more flexible than cdm
0.5.3.
Right way to *auto*start cdm(1) -- use `exec cdm':
login(1) -/spawn/-> $SHELL -/exec/-> cdm(1) -/exec/-> console program
login(1) -/spawn/-> $SHELL -/exec/-> cdm(1) -> /exit/
| ^
/spawn/ /return/
v |
cdm-xlaunch(1)
|
/Launch and put to background/
v
X program
Wrong way to *auto*start cdm(1) -- just run (spawn) `cdm':
login(1) -/spawn/-> $SHELL /So the shell does not exit (note 1)/
| ^
/spawn/ /return/
v |
cdm(1) -/run console program or X program/
Note 1: Cannot configure $SHELL to exit conditionally on the exit of
cdm(1), because cdm might `exec' to arbitrary program as
specified by the user, of which the return values' meanings
could not be predicted.
It is also not advisable to let cdm(1) to wait for the running
program to exit (instead of `exec' the program or use the
method in cdm-xlaunch(1) to put the program to background),
since that just adds a (mostly) useless sleeping cdm(1) on the
process table when the program is running.
* Change `$menu' to a bash array:
This makes escaping and quoting in the menu possible and elegant for both
cdm(1) and cdmrc, which adds possibility for providing arguments to
programs in `$binlist' (formerly known as `$wmbinlist').
`$usexinit' and related code is removed accordingly.
* Use a better way to safely launch a program in the background:
See <http://linuxshellaccount.blogspot.com/2007/12/
what-to-do-when-nohup-hangs-up-anyway.html>.
`$loginshell' is removed accordingly.
* Remove `$allowconsole', `shutdownmenu()', etc.:
Since the related things can be set in config files as "console programs",
`$binlist' supports commands with whitespaces, and submenus can be
elegantly implemented with cdm `exec'ing another cdm with a different
config file.
* Code separation:
Code messing with X would only be run if an X program is to be run.
`xstart()' code is moved to `cdm-xlaunch(1)', since it's relatively
independent code and thus would be sometimes useful for running as a
standalone program.
* Replace self-made info formatting code with `functions.sh':
checkyesno() is removed too since gentoo's `functions.sh' already provides
it.
`functions.sh' can be substituted with custom ones of course.
* Use signal names (not numbers) in `trap'.
* Changes to variable names:
The changed are generally intended to make it easier to reason about the
actually effects of the variables.
`$theme' -> `$dialogrc': bacause the "theme" file is essentially a
dialogrc file. This is mainly affected by the Arch philosophy: "simplicity
as without unnecessary additions, modifications, or complications".
BTW, `$dialogrc' should now be set to an absolute path, making it possible
to make use of dialogrc's in the whole file system.
`$cosolekittime' -> `$cktimeout': indicate "timeout" here.
* Reformat comments:
Expanded tabs to avoid problem with editors.