Contents of /mcore-src/trunk/mcore-tools/src/modules/basic-video/graphic.client.class.in
Parent Directory | Revision Log
Revision 2813 -
(show annotations)
(download)
Fri Apr 7 08:00:51 2017 UTC (7 years, 1 month ago) by niro
File size: 5514 byte(s)
Fri Apr 7 08:00:51 2017 UTC (7 years, 1 month ago) by niro
File size: 5514 byte(s)
-support graphic resolution and color depths auto detection at runtime
1 | # $Id$ |
2 | |
3 | provide basic-video |
4 | |
5 | # todo monitor gfxcard |
6 | helper_graphic_add_configs() |
7 | { |
8 | local path="$1" |
9 | local conf |
10 | |
11 | # exit ERR if path does not exist |
12 | [[ ! -d ${path} ]] && return 1 |
13 | |
14 | for conf in $(find "${path}" -mindepth 1 -maxdepth 1 -type f -name \*.conf | sort) |
15 | do |
16 | cat "${conf}" >> "${CONFIG}" |
17 | done |
18 | } |
19 | |
20 | # everything from xorg conf but inputdevices. they are handled properly trough udev! |
21 | helper_graphic_rebuild_xorg_conf_d() |
22 | { |
23 | local CONFIG |
24 | local conf |
25 | |
26 | # rebuild 25-gfxcard.conf |
27 | # always clear the config |
28 | CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/25-device.conf" |
29 | clearconfig |
30 | addconfig "# Autogenerated by mcored" |
31 | # but only add lines if some values are found in config.d dir |
32 | if path_not_empty ${MROOT}/${MCORE_CONFIG_PATH}/xorg/device |
33 | then |
34 | addconfig 'Section "Device"' |
35 | helper_graphic_add_configs ${MROOT}/${MCORE_CONFIG_PATH}/xorg/device |
36 | addconfig 'EndSection' |
37 | fi |
38 | |
39 | # rebuild 25-module.conf |
40 | # always clear the config |
41 | CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/25-module.conf" |
42 | clearconfig |
43 | addconfig "# Autogenerated by mcored" |
44 | # but only add lines if some values are found in config.d dir |
45 | if path_not_empty ${MROOT}/${MCORE_CONFIG_PATH}/xorg/module |
46 | then |
47 | addconfig 'Section "Module"' |
48 | helper_graphic_add_configs ${MROOT}/${MCORE_CONFIG_PATH}/xorg/module |
49 | addconfig 'EndSection' |
50 | fi |
51 | |
52 | # rebuild 25-screen.conf |
53 | # always clear the config |
54 | CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/25-screen.conf" |
55 | clearconfig |
56 | addconfig "# Autogenerated by mcored" |
57 | # but only add lines if some values are found in config.d dir |
58 | if path_not_empty ${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen |
59 | then |
60 | addconfig 'Section "Screen"' |
61 | addconfig ' Identifier "Screen0"' |
62 | addconfig ' Monitor "Monitor0"' |
63 | helper_graphic_add_configs ${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen |
64 | addconfig 'EndSection' |
65 | fi |
66 | } |
67 | |
68 | help_graphic_resolution() |
69 | { |
70 | mecho "set graphic.resolution [resolution]" |
71 | mecho " auto, 800x600, 1024x768, 1280x1024 etc" |
72 | } |
73 | |
74 | help_graphic_refresh() |
75 | { |
76 | mecho "set graphic.refresh [refresh rate]" |
77 | mecho " auto, 60, 100 - all values are Hz" |
78 | } |
79 | |
80 | help_graphic_depth() |
81 | { |
82 | mecho "set graphic.depth [color-depth]" |
83 | mecho " auto, 1, 4, 8, 15, 16, 24 - all values are bits" |
84 | } |
85 | |
86 | help_graphic_driver() |
87 | { |
88 | mecho "get graphic.driver [action]" |
89 | mecho " Shows current selected or system available graphic drivers." |
90 | mecho " Available actions:" |
91 | mecho " system - show available drivers on the system" |
92 | mecho " current - shows the current selected driver used by Xorg" |
93 | mecho |
94 | mecho "set graphic.driver [driver]" |
95 | mecho " Selects the graphic card driver used by Xorg." |
96 | } |
97 | |
98 | # set_graphic_resolution ${value} |
99 | set_graphic_resolution() |
100 | { |
101 | local resolution="${CLASS_ARGV[0]}" |
102 | local CONFIG |
103 | local depth |
104 | [[ -z ${resolution} ]] && help_graphic_resolution && return 1 |
105 | |
106 | CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen/20-resolution.conf" |
107 | |
108 | case ${depth} in |
109 | *x*) |
110 | clearconfig |
111 | # do it for all supported color depth |
112 | for depth in 1 4 8 15 16 24 |
113 | do |
114 | addconfig ' SubSection "Display"' |
115 | addconfig " Depth ${depth}" |
116 | addconfig " Modes \"${resolution}\"" |
117 | addconfig ' ViewPort 0 0' |
118 | addconfig ' EndSubSection' |
119 | done |
120 | |
121 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] |
122 | then |
123 | x11runas "xrandr --size ${resolution}" |
124 | fi |
125 | ;; |
126 | auto) clearconfig ;; |
127 | esac |
128 | |
129 | helper_graphic_rebuild_xorg_conf_d |
130 | } |
131 | |
132 | # set_graphic_depth ${value} |
133 | set_graphic_depth() |
134 | { |
135 | local depth="${CLASS_ARGV[0]}" |
136 | local CONFIG |
137 | [[ -z ${depth} ]] && help_graphic_depth && return 1 |
138 | |
139 | CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen/10-depth.conf" |
140 | |
141 | # do it only for supported color depths |
142 | case "${depth}" in |
143 | 1|4|8|15|16|24) |
144 | clearconfig |
145 | addconfig " DefaultDepth ${depth}" |
146 | ;; |
147 | auto) clearconfig ;; |
148 | *) help_graphic_depth && return 1 ;; |
149 | esac |
150 | |
151 | helper_graphic_rebuild_xorg_conf_d |
152 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] |
153 | then |
154 | mecho "X11 restart required!" |
155 | fi |
156 | } |
157 | |
158 | # set_graphic_refresh ${value} |
159 | set_graphic_refresh() |
160 | { |
161 | local value="${CLASS_ARGV[0]}" |
162 | [[ -z ${value} ]] && help_graphic_refresh && return 1 |
163 | |
164 | #echo "${value}" > ${MROOT}/${MCORE_CONFIG_PATH}/xorg/refresh |
165 | |
166 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] |
167 | then |
168 | x11runas "xrandr --refresh ${value}" |
169 | fi |
170 | |
171 | helper_graphic_rebuild_xorg_conf_d |
172 | } |
173 | |
174 | set_graphic_driver() |
175 | { |
176 | local driver="${CLASS_ARGV[0]}" |
177 | local driverdir="@@LIBDIR@@/xorg/modules/drivers" |
178 | local CONFIG |
179 | [[ -z ${driver} ]] && help_graphic_driver && return 1 |
180 | |
181 | if [[ ${driver} = auto ]] |
182 | then |
183 | decho "Using driver autodetection, doing nothing" |
184 | elif [[ -f ${MROOT}/${driverdir}/${driver}_drv.so ]] |
185 | then |
186 | CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/device/25-device.conf" |
187 | clearconfig |
188 | addconfig " Identifier \"Card0\"" |
189 | addconfig " Driver \"${driver}\"" |
190 | |
191 | helper_graphic_rebuild_xorg_conf_d |
192 | if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]] |
193 | then |
194 | mecho "X11 restart required!" |
195 | fi |
196 | else |
197 | eecho "Driver '${driver}' does not exist on this system. Aborted!" |
198 | fi |
199 | } |
200 | |
201 | get_graphic_driver() |
202 | { |
203 | local action="${CLASS_ARGV[0]}" |
204 | local driverdir="@@LIBDIR@@/xorg/modules/drivers" |
205 | local driver |
206 | local config="${MCORE_CONFIG_PATH}/xorg/device/25-device.conf" |
207 | local i |
208 | |
209 | case "${action}" in |
210 | current) |
211 | if [[ -f ${MROOT}/${config} ]] |
212 | then |
213 | driver=$(grep Driver "${MROOT}/${config}" | sed 's:.*Driver.*\"\(.*\)\":\1:') |
214 | rvecho "${driver}" |
215 | else |
216 | rvecho "none" |
217 | fi |
218 | ;; |
219 | system) |
220 | driver=$(list_files_in_directory ${MROOT}/${driverdir} -mindepth 1 -maxdepth 1 | sed s':_drv.so::g') |
221 | rvecho "${driver}" |
222 | ;; |
223 | *) |
224 | help_graphic_driver |
225 | return 1 |
226 | ;; |
227 | esac |
228 | } |