File: plg_interfaces.tex

package info (click to toggle)
stellarium 24.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 911,396 kB
  • sloc: ansic: 317,377; cpp: 204,602; xml: 48,590; javascript: 26,348; python: 1,254; perl: 1,108; sh: 207; makefile: 190; pascal: 169
file content (880 lines) | stat: -rw-r--r-- 46,657 bytes parent folder | download
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
%% Part of Stellarium User Guide
%% Status: 2015-12-30 Some parts collected from wiki.
%%         2016-04-05 GZ changed to have 1 chapter per plugin for a better structure. This file may be split up later. 
%%         2016-04-16 split plugin part to topical chapters.

\chapter{Interface Extensions}
\label{ch:plugins:Interfaces}

Most users will soon be familiar with the usual user interface. A few
plugins are available which extend the regular user interface with a
few small additions which are presented first.  However, some
applications and installations of Stellarium require completely
different user interfaces. Mostly, these serve to avoid showing the
user interface panels to an audience, be that in your astronomy club
presentations, a domed planetarium or in a museum installation.


\section{Angle Measure Plugin}
\label{sec:plugins:AngleMeasure}

\begin{quotation}\small
\noindent\emph{goes misty eyed}\\ 
I recall measuring the size of the Cassini Division when I was a student.
It was not the high academic glamor one might expect\ldots It was cloudy\ldots
It was rainy\ldots The observatory lab had some old scopes set up at one
end, pointing at a \emph{photograph} of Saturn at the other end of the
lab. We measured. We calculated. We wished we were in Hawaii. A picture
is worth a thousand words.
\end{quotation}

\begin{figure}[th]\centering
	\includegraphics[width=.55\textwidth]{AngleMeasure-plugin.jpg}
	\caption{Interface of Angle Measure plugin}
	\label{fig:AngleMeasure}
\end{figure}

\noindent The Angle Measure plugin is a small tool which is used to measure the
angular distance between two points on the sky. 


%\subsection{Using the plugin}
%\label{sec:plugins:AngleMeasure:using}

\begin{enumerate}
\item Enable the tool by clicking the tool-bar button
  \guibutton{0.6}{bt_anglemeasure_Off.png}, or by pressing
  \key{\ctrl+A}. A message will appear at the bottom of the screen to
  tell you that the tool is active.
\item Drag a line from the first point to the second point using the
  left mouse button.
\item To measure to a different endpoint, click the right mouse button.
\item To deactivate the angle measure tool, press the tool-bar button
  again, or press \key{\ctrl+A} on the keyboard.
\end{enumerate}

\noindent In the configuration dialog, you can configure if you want to have
distances given on the rotating sphere, or in horizontal
(alt-azimuthal) coordinates. You can also link one point to the
resting horizon, the other to the sky and observe how angles change.
You can choose where to display the measurement.

When option % \newFeature{1.0}
``Allow snap to selected object'' is activated the process of measurement is changed:
\begin{itemize}
 \item The left mouse button is not used for angle measurement, so you
   can pan the screen and left-click to select an object as usual.
 \item To draw the angle dimension line, you can drag with the right
   mouse button.
 \item A right click moves the end of the angle line that is closest
   to the mouse pointer.
 \item If an object is selected, right-clicking will snap the end of
   the protractor line (closest to the mouse pointer) to the selected
   object.
 \item Double-click the right mouse button to capture the end of the
   line. Another double click with the right mouse button removes the
   angle measuring line.
 \item Which end of the protractor line is chosen depends on the
   position of the mouse pointer in relation to the two ends of the
   line. The end of the line that is closer to the mouse pointer is
   moved and defined as the new end point. The end of the line farther
   from the mouse pointer is not moved and is defined as the new
   starting point.
\end{itemize}

\newpage
\section{Equation of Time Plugin}
\label{sec:plugins:EquationOfTime}

%% The figure just reproduces most of the text. I (GZ) regard it not so necessary. 
%\begin{figure}[h]
%\includegraphics[width=\textwidth]{EquationOfTime-plugin.jpg}
%\caption{Interface of Equation of Time plugin}
%\label{fig:EqOfTime}
%\end{figure}

\begin{figure}[h]\centering
\ifpdf
\includegraphics[width=.42\textwidth]{GZ_analemma_p1000}
\includegraphics[width=.42\textwidth]{GZ_analemma_p2000}
\else
\includegraphics[width=.42\textwidth]{GZ_analemma_p1000.png}
\includegraphics[width=.42\textwidth]{GZ_analemma_p2000.png}
\fi
\caption{Figure-8 plots for Equation of Time, for years 1000 (left)
  and 2000 (right). These plots, often found on sundials, link solar
  declination (vertical axis) and its deviation at mean noon from the
  meridian, in minutes. Labeled dots indicate when the sun entered the
  respective Zodiacal sign (30\degree section of the
  ecliptic). Figures by Georg Zotti.}
\label{fig:EqOfTime}
\end{figure}


\noindent The Equation of Time plugin shows the solution of the equation of time. % (Fig.~\ref{fig:EqOfTime}).
This describes the discrepancy between two kinds of
solar time:
\begin{description}
\item[Apparent solar time] directly tracks the motion of the sun. Most sundials show this time.
\item[Mean solar time] tracks a fictitious ``mean'' sun with noons 24 hours apart. 
\end{description}

There is no universally accepted definition of the sign of the
equation of time. Some publications show it as positive when a sundial
is ahead of a clock; others when the clock is ahead of the sundial. In
the English-speaking world, the former usage is the more common, but
is not always followed. Anyone who makes use of a published table or
graph should first check its sign usage.

If enabled (see section~\ref{sec:Plugins:EnablingPlugins}), click on
the Equation of Time button \guibutton{0.6}{bt_EquationOfTime_72dpi.png}
on the bottom toolbar to display the value for the equation of time on
top of the screen.


\subsection{Section \big[EquationOfTime\big] in config.ini file}
%\label{sec:plugins:EquationOfTime:configuration}

You can edit \file{config.ini} file by yourself for changes of the
settings for the Equation of Time plugin -- just make it carefully!

\noindent%
\begin{tabularx}{\textwidth}{l|l|X}\toprule
\emph{ID}            & \emph{Type} & \emph{Description}\\\midrule
enable\_at\_startup        & bool  & Display solution of the equation of time at startup of Stellarium\\%\midrule
flag\_use\_ms\_format      & bool  & Set format for the displayed solution -- minutes and seconds or decimal minutes\\%\midrule
flag\_use\_inverted\_value & bool  & Change sign of the equation of time \\%\midrule
flag\_show\_button         & bool  & Show the tool's button on the bottom toolbar\\%\midrule
text\_color                & R,G,B & Font color for the displayed solution of the equation of time\\%\midrule
font\_size                 & int   & Font size for the displayed solution of the equation of time \\\bottomrule
\end{tabularx}

\newpage

\section{Pointer Coordinates Plugin}
\label{sec:plugins:PointerCoordinates}


\begin{figure}[th]\centering
\includegraphics[width=.55\textwidth]{PointerCoordinates-plugin.jpg}
\caption{Interface of Pointer Coordinates plugin}
\label{fig:PointerCoordinates}
\end{figure}

\noindent The Pointer Coordinates plugin shows the coordinates of the mouse pointer.
If enabled, click on the plugin button \guibutton{0.6}{bt_PointerCoordinates_Off.png} on the bottom toolbar to display the coordinates of the mouse pointer.

\subsection{Section \big[PointerCoordinates\big] in config.ini file}
%\label{sec:plugins:PointerCoordinates:configuration}

You can edit \file{config.ini} file by yourself for changes of the
settings for the Pointer Coordinates plugin -- just make it carefully!

\begin{longtable}{l|l|p{83mm}}\toprule
\emph{ID}              & \emph{Type} & \emph{Description}\\\midrule
enable\_at\_startup         & bool   & Enable displaying mouse pointer coordinates at program startup\\%\midrule
flag\_show\_button          & bool   & Show the plugin's tool button on the bottom toolbar\\%\midrule
text\_color                 & R,G,B  & Color for coordinates text of the mouse pointer \\%\midrule
font\_size                  & int    & Font size for the displayed mouse pointer coordinates  \\%\midrule
current\_displaying\_place  & string & Specifies the place of displaying coordinates of the mouse pointer. 
                                       \textit{Possible values}: \keymap{TopRight}, \keymap{TopCenter}, 
									   \keymap{RightBottomCorner}, \keymap{Custom}. 
									   \textit{Default value}: \keymap{TopRight}. \\%\midrule
custom\_coordinates        & int,int & Specifies the screen coordinates of the custom place for displaying coordinates of the mouse pointer \\%\midrule
current\_coordinate\_system & string & Specifies the coordinate system. \textit{Possible values}: 
                                       \keymap{RaDecJ2000}, \keymap{RaDec}, \keymap{HourAngle}, \keymap{Ecliptic}, 
									   \keymap{AltAzi}, \keymap{Galactic}. 
									   \textit{Default value}: \keymap{RaDecJ2000}. \\%\midrule
flag\_show\_constellation  & bool    & Add the 3-letter IAU\index{IAU} abbreviation for the constellation of the 
                                       mouse pointer location \citep{1987PASP...99..695R}.\\%\midrule
flag\_show\_crossed\_lines & bool    & Show crossed lines under mouse cursor.\\\bottomrule
\end{longtable}




\newpage

\section{Text User Interface Plugin}
\label{sec:plugins:TextUserInterface}

%\url{http://porpoisehead.net/images/plugin-tui.jpg}

This plugin re-implements the ``TUI'' of the pre-0.10 versions of
Stellarium, an unobtrusive menu used primarily by planetarium system
operators to change settings, run scripts and so on.

A full list of the commands for the TUI plugin is
given in section~\ref{sec:plugins:TUI:commands}. 

\subsection{Using the Text User Interface}
\label{sec:plugins:TUI:using}

\begin{enumerate}
\item Activate the text menu using the \key{\Alt+T} key.\footnote{This
    used to be hard-coded to \key{M} before version 0.15, but
    \key{\Alt+T} is better to remember as it runs parallel with
    \key{\ctrl+T} for switching the GUI panels, and frees up \key{M}
    for the Milky Way. The \key{\Alt+T} keybinding is hard-coded, i.e.,
    cannot be reconfigured by the user, and should not be used for
    another function.}
\item
  Navigate the menu using the cursors keys.
\item
  To edit a value, press the right cursor until the value you wish to
  change it highlighted with \textgreater{} and \textless{} marks, e.g.\
  \textgreater{}3.142\textless{}. Then press the cursor keys \keys{\arrowkeyup} and \keys{\arrowkeydown} to
  change the value. You may also type in a new value with the other keys
  on the keyboard.
\end{enumerate}

%% List complete as of 2016-04-26. 

\subsection{TUI Commands}
\label{sec:plugins:TUI:commands}
\begin{longtable}{l|p{45mm}|p{85mm}}
\toprule
1   & Location & (menu group)\\%\midrule
1.1 & Latitude & Set the latitude of the observer in degrees\\%\midrule
1.2 & Longitude & Set the longitude of the observer in degrees\\%\midrule
1.3 & Altitude & Set the altitude of the observer in meters\\%\midrule
1.4 & Solar System Body & Select the solar system body on which the observer is\\\midrule
2   & Set Time & (menu group)\\%\midrule
2.1 & Current date/time & Set the time and date for which Stellarium will generate the view\\%\midrule
%2.2 & Set Time Zone & Set the time zone. Zones are split into continent or region, and then by city or province\\\midrule
%2.3 & Days keys & The setting ``Calendar'' makes the \key{-}, \key{=}, \key{[}, \key{]} keys change the date value by calendar days (multiples of 24 hours). 
%                  The setting ``Sidereal day'' changes these keys to change the date by sidereal days\\\midrule
2.2 & Set Time Zone & (disabled in 0.15)\\
2.3 & Days keys & (disabled in 0.15)\\
2.4 & Startup date/time preset & Select the time which Stellarium starts with (if the ``Sky Time At Start-up'' setting is ``Preset Time''\\%\midrule
2.5 & Startup date and time & The setting ``system'' sets Stellarium's time to the computer clock when Stellarium runs. 
                                 The setting ``preset'' selects a time set in menu item ``2.4 - Startup date/time preset''\\%\midrule
2.6 & Date Display Format & Change how Stellarium formats date values. ``system\_default'' takes the format from the computer settings, 
                            or it is possible to select ``yyyymmdd'', ``ddmmyyyy'' or ``mmddyyyy'' modes\\%\midrule
2.7 & Time Display Format & Change how Stellarium formats time values. ``system\_default'' takes the format from the computer settings, 
                            or it is possible to select ``24h'' or ``12h'' clock modes\\\midrule
3    & General      & (menu group)\\%\midrule
3.1  & Starlore     & Select the sky culture to use (changes constellation lines, names, artwork)\\%\midrule
3.2  & Sky Language & Change the language used to describe objects in the sky\\%\midrule
3.3  & App Language & Change the application language (used in GUIs) \\\midrule
4    & Stars          & (menu group)\\%\midrule
4.1  & Show stars     & Turn on/off star rendering\\%\midrule
4.2  & Relative Scale & Change the relative brightness of the stars. Larger values make bright stars much larger.\\%\midrule
4.3  & Absolute Scale & Change the absolute brightness of the stars. Large values show more stars. Leave at 1 for realistic views. \\%\midrule
4.4  & Twinkle        & Sets how strong the star twinkling effect is - zero is off, the higher the value the more the stars will twinkle.\\%\midrule
4.5  & Mag limit      & Sets a custom magnitude cutoff for stars\\
4.6  & Use mag limit  & Activates this magnitude limit \\
4.7  & Spiky stars    & Use pointed star figures \\
4.8  & Labels and Markers & configures the amount of labels \\
4.9  & Show additional star names  & \\
4.10 & Use designations for screen labels & \\\midrule
5    & Colors                      & (menu group) change color/brightness of the\ldots\\%\midrule
5.1  & Constellation lines         & constellation lines\\%\midrule
5.2  & Constellation labels        & labels used to name stars\\%\midrule
5.3  & Art brightness              & constellation art\\%\midrule
5.4  & Constellation boundaries    & constellation boundary lines\\%\midrule
5.5  & Cardinal points             & cardinal points markers\\%\midrule
5.6  & Planet labels               & labels for planets\\%\midrule
5.7  & Planet orbits               & orbital guide lines for planets\\%\midrule
5.8  & Planet trails               & planet trails lines\\%\midrule
5.9  & Meridian Line               & meridian line\\%\midrule
5.10 & Azimuthal Grid              & lines and labels for the azimuthal grid\\%\midrule
5.11 & Equatorial Grid             & lines and labels for the equatorial grid\\%\midrule
5.12 & Equatorial J2000 Grid       & lines and labels for the equatorial J2000.0 grid\\%\midrule
5.13 & Equator Line                & equator line\\%\midrule
5.14 & Ecliptic Line               & ecliptic line\\%\midrule
5.15 & Ecliptic Line (J2000)       & J2000 ecliptic line\\%\midrule
5.16 & Nebula names                & labels for nebulae\\%\midrule
5.17 & Nebula hints                & circles  used to mark positions of unspecified nebulae\\%\midrule
5.18 & Galaxy hints                & ellipses used to mark positions of galaxies\\%\midrule
5.19 & Bright nebula hints         & squares  used to mark positions of bright nebulae\\%\midrule
5.20 & Dark nebula hints           & squares  used to mark positions of dark nebulae\\%\midrule
5.21 & Clusters hints              & symbols  used to mark positions of clusters\\%\midrule
5.22 & Horizon line                & horizon line\\%\midrule
5.23 & Galactic grid               & galactic grid\\%\midrule
5.24 & Galactic equator line       & galactic equator line\\%\midrule
5.25 & Opposition/conjunction longitude line  & opposition/conjunction line\\
5.26 & Sky background              & sky background. Note that anything but black is only useful for artistic works.\\\midrule
6    & Effects & (menu group)\\%\midrule
6.1  & Light Pollution & Changes the intensity of the light pollution (see Appendix~\ref{ch:BortleScale} Bortle Scale index)\\%\midrule
6.2  & Landscape       & Select the landscape which Stellarium draws when ground drawing is enabled. Press \key{\return} to activate.\\%\midrule
6.3  & Setting Landscape Sets Location & If ``Yes'' then changing the landscape will move the observer location to the location for that landscape (if one is known). 
                                         Setting this to ``No'' means the observer location is not modified when the landscape is changed.\\%\midrule
6.4  & Auto zoom out returns to initial \ldots view & Changes the behavior when zooming out from a selected object.
                                                      When set to ``Off'', selected object will stay in center.
                                                      When set to ``On'', view will return to startup view. \\%\midrule
6.5  & Zoom Duration              & Sets the time for zoom operations to take (in seconds)\\%\midrule
6.6  & Milky Way intensity        & Changes the brightness of the Milky Way\\%\midrule
6.6  & Milky Way saturation       & Changes the saturation of the Milky Way\\%\midrule
6.7  & Zodiacal light intensity   & Changes the brightness of the Zodiacal light\\\midrule
%6.6 & Nebula label frequency     & Changes the magnitude limit for labelling of nebulae\\\midrule
%6.6 & Nebula label frequency     & (not active) \\\midrule
%6.8 & Cursor Timeout             & Sets the number of seconds of mouse inactivity before the cursor vanishes\\\midrule
7    & Scripts                    & (menu group)\\%\midrule
7.1  & Run local script           & Run a script from the scripts sub-directory of the User Directory or Installation Directory 
                                   (see section~\ref{sec:FilesAndDirectories} (Files and Directories))\\%\midrule
7.1  & Stop running script        & Stop execution of a currently running script \\\midrule
%7.2 & CD/DVD Script              & Run a script from a CD or DVD (only used in planetarium set-ups)\\\midrule
8    & Administration             & (menu group)\\%\midrule
8.1  & Load default configuration & Reset all settings according to the main configuration file\\%\midrule
8.2  & Save current configuration & Save the current settings to the main configuration file\\%\midrule
8.3  & Shutdown                   & Emits a command configured in \\\midrule
\end{longtable}


\subsection{Section \big[tui\big] in config.ini file}
%\label{sec:plugins:TUI:configuration}

The section in \file{config.ini} for this plugin is named only \texttt{[tui]} for historical reasons. As always, be careful when editing!

\noindent%
\begin{tabularx}{\textwidth}{l|l|X}\toprule
\emph{ID}                   & \emph{Type} & \emph{Description}\\\midrule
tui\_font\_color                  & R,G,B & Font color for TUI text \\%\midrule
tui\_font\_size                   & int   & Font size for the TUI \\%\midrule
flag\_show\_gravity\_ui           & bool  & Bend menu text around the screen center. 
                                            May be useful in planetarium setups, and should then be used together with ``Disc viewport'' 
                                            in the configuration menu (see~\ref{sec:gui:configuration:tools}). \\%\midrule
flag\_show\_tui\_datetime         & bool  & Show date and time in lower center.\\%\midrule
flag\_show\_tui\_short\_obj\_info & bool  & Show some object info in lower right, or (in planetarium setups with 
                                            ``Disc viewport'' active,) wrapped along the outer circle border. \\%\midrule
admin\_shutdown\_cmd              & string & executable command to shutdown your system. 
                                            Best used on Linux or Mac systems. E.g.\ \command{shutdown -h now}\\\bottomrule
\end{tabularx}



\newpage
\section{Remote Control Plugin}
\label{sec:plugin:RemoteControl}

The Remote Control plugin enables the user to control Stellarium through an external web 
interface using a standard web browser like Firefox or Chrome, instead of using 
the main GUI. This works on the same computer Stellarium runs as well as over 
the network. Even more, multiple ``remote controls'' can access the same 
Stellarium instance at the same time, without getting in the way of each other. 
Apart from system configuration options, most of the functionality the main interface 
provides is available through it \citep{Zotti-etal:SEAC2016}. 

The plugin may be most useful for presentation scenarios, hiding the GUI from the 
audience and allowing the presenter to change settings on a separate monitor 
without showing distracting dialog windows. It also allows to start and stop 
scripts remotely. 

Because the web interface can be customized (or completely 
replaced) with some knowledge of HTML, CSS and JavaScript, another possibility 
is a kiosk mode, where untrusted users can execute a variety of predefined 
actions (like starting recorded tours) without having access to all Stellarium 
settings. The web API can also be accessed directly (without using a browser 
and the HTML interface), allowing control of Stellarium with external programs 
and scripts using HTTP calls like with the tools \file{wget} and \file{curl}.

This plugin allows also interfacing other programs with Stellarium. 

\subsection{Using the plugin}
\label{sec:plugins:RemoteControl:using}

\begin{figure}[h]
\centering\includegraphics[width=\columnwidth]{remote_web.png}
\caption{The default remote control web interface}
\label{fig:plugins:RemoteControl:using}
\end{figure}

After enabling the plugin, you can set it up through the configuration dialog. 
You can configure it to start the web server automatically whenever Stellarium starts 
or manually start/stop the server using the ``Server enabled'' checkbox or the 
button \guibutton{0.6}{remote.png} in the toolbar.

The plugin starts an HTTP server on the specified port. The default port is 
8090, so you should reach the remote control after enabling it by starting 
a web browser on the same computer and entering \url{http://localhost:8090} in the 
address bar. When trying to access the remote control from another computer, 
you need the IP address or the hostname of the server on which Stellarium runs. 
On a small tablet, you may want to use \url{http://myserver:8090/tablet7in.html} instead.

The plugin shows the locally detected address, but depending on your network or 
if you need external access you might need to use a different one 
--- contact your network administrator if you need help with that.

\subsubsection{Password}
The access to the remote control may optionally be restricted with a simple 
password.

\textbf{Warning:} \emph{currently no network encryption is used, meaning that 
an attacker having access to your network can easily find out the password by 
waiting for a user entering it. Access from the Internet to the 
plugin should generally be restricted, except if countermeasures such as VPN 
usage are taken! If you are in a home network using NAT (network access 
translation), this should be enough for basic security except if port 
forwarding or a DMZ is configured.}

\subsubsection{CORS}
The Web API also supports Cross-Origin Resource Sharing (CORS). By enabling CORS,
compatible websites and web apps can be used to control your Stellarium server.

Enable CORS by checking the ``Enable CORS for the following origin'' option in the
configuration dialog. Then, enter the URL of the website you'd like to use to control
Stellarium -- e.g.\ \url{https://telescopius.com}. Specify ``*'' to let any website
take control. Do this at your own risk.


\subsection{Remote Control Web Interface}
\label{sec:plugins:RemoteControl:webinterface}


If you are familiar with the main Stellarium interface, you should easily find 
your way around the web interface. 
The remote control automatically uses the same language as set in the main program. 
Tabs at the top allow access to different settings and controls. 

\begin{description}
\item[Main] Contains the time controls and most of the buttons of the 
main bottom toolbar. An additional control allows moving the view like when 
dragging the mouse or using the arrow keys in Stellarium, and a slider enables 
the changing of the field of view. There are also buttons to quickly execute 
time jumps using the commonly used astronomical time intervals.
\item[Selection] Allows searching and selecting objects like in \autoref{sec:gui:search}. 
SIMBAD search is also supported. Quick select buttons are available for the 
primary solar system objects. It also displays the information text for current 
selection.
\item[Sky] Settings related to the sky display as shown in the ``View'' dialog 
as shown in \autoref{sec:gui:view:sky}.
\item[DSO] The deep-sky object catalog, filter and display settings like in 
\autoref{sec:gui:view:markings}.
\item[Landscape] Changing and configuring the background landscape, see 
\autoref{sec:gui:view:landscape}
\item[Actions and scripts] Lists all registered actions, and allows starting 
and stopping of scripts (\autoref{ch:scripting}). If there is no button for the 
action you want in another tab, you can find all actions which can be 
configured as a keyboard shortcut (\autoref{sec:gui:configuration}) here.
\item[Location] Allows changing the location, like in 
\autoref{sec:gui:location}. Custom location saving is currently not 
supported.
\item[Projection] Switch the projection method used, like \autoref{sec:gui:view:markings}.
\end{description}

\subsection{Remote Control API}
\label{sec:plugins:RemoteControl:API}

Apart from retrieving quick object info in your browser with e.g.\ \url{http://localhost:8090/api/objects/info?format=json&name=Sun},
you can access a running instance of Stellarium with various programming languages. A few examples:

\subsubsection{Commandline}
\label{sec:plugins:RemoteControl:API:CLI}

It is possible to send commands via command line\footnote{%
  Depending on your operating system or command shell,
  you may have to use double quotes in the \texttt{-\/-data} argument to \command{curl}.}%
, e.g.,

\begin{commandsScr}
wget -q --post-data 'id=show.ssc' http://stella:8090/api/scripts/run >/dev/null 2>&1
curl --data 'id=myScript.ssc' http://localhost:8090/api/scripts/run >/dev/null 2>&1
curl -d     'id=myScript.ssc' http://localhost:8090/api/scripts/run >/dev/null 2>&1
curl -d 'id=LandscapeMgr.fogDisplayed&value=false' \ 
      http://localhost:8090/api/stelproperty/set 
\end{commandsScr}
This allows triggering automatic show setups for museums etc.\ via  some centralized schedulers like \command{cron}.

% TODO: List all available commands with examples here?
To get a complete pretty-printed list of properties and actions, use:
\begin{commandsScr}
curl -G -d 'propId=-2&actionId=-2' http://localhost:8090/api/main/status | \
     python -m json.tool 
\end{commandsScr} 

\subsubsection{Node.js}
\label{sec:plugins:RemoteControl:API:node.js}

If you want to use \program{node.js} to build your own interface app, you may find the following example helpful.%
\footnote{Thanks to user FogoVoar}
It sets the view direction in one of 3 coordinate systems, depending on the argument:

\begin{commandsScr}
    "j2000" : "[x,y,z]",
    "jNow"  : "[x,y,z]",
    "altAz" : "[x,y,z]"
\end{commandsScr}

\noindent The vector $[x, y, z]$ should be a normalized vector (unit length), derived from 
either J2000.0 or current equatorial coordinates $(\alpha, \delta)$, 
or from alt-azimuthal coordinates $(\mathit{Az}, \mathit{alt})$ which are however always counted from south ($[1,0,0]$) towards east ($[0,1,0]$), 
with the azimuth $\mathit{Az}'$ counted from South towards East, $\mathit{Az}'=180-\mathit{Az}$.

\begin{minipage}{0.3\textwidth}
\begin{align*}
x & = & \cos(\delta)*\cos(\alpha)\\
y & = & \cos(\delta)*\sin(\alpha)\\
z & = & \sin(\delta)
\end{align*}
\end{minipage}\hspace{1cm}
\begin{minipage}{0.3\textwidth}
\begin{align*}
x & = & \cos(\mathit{alt})*\cos(\mathit{Az}')\\
y & = & \cos(\mathit{alt})*\sin(\mathit{Az}')\\
z & = & \sin(\mathit{alt}) 
\end{align*}
\end{minipage}
	
\begin{commandsScr}
const url = 'http://192.168.xxx.xxx:8090/api/main/view?j2000=[0.5,0.3,0.2]';
fetch(url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    }
  })
  .then(response => {
    response.text().then(text => console.log('Raw response:', text));
    return response.json();
  })
\end{commandsScr}

\subsubsection{Python}
\label{sec:plugins:RemoteControl:API:Python}

An example for time control:
\begin{commandsScr}
import requests
STELLARIUM_URL='http://192.168.1.100:8090/api/main'
def set_time(julian_day,timerate):
    url = f"{STELLARIUM_URL}/time"
    data = "time="+str(julian_day)+"&timerate="+str(timerate)
    print(f"Request URL: {url}")
    print(f"Request Data: {data}")
    try:
        response = requests.post(url, data=data)
        print(f"Response Status Code: {response.status_code}")
        print(f"Response Content: {response.text}")
        response.raise_for_status()
        if response.text.strip() == "ok":
            return {"status": "success", "message": "Time set successfully"}
        else:
            return {"status": "error", "message": response.text}
    except requests.exceptions.RequestException as e:
        print(f"Error setting time: {e}")
        return {"status": "error", "message": str(e)}
\end{commandsScr}

  
\subsection{Developer information}
\label{sec:plugins:RemoteControl:developer}

If you are a developer and would like to add functionality to the Remote 
Control API, customize the web interface or access the API through another 
program, further information can be found in the plugin's 
developer documentation\footnote{\url{https://stellarium.org/doc/head/remoteControlDoc.html}}.

\subsection{Acknowledgements}

This plugin was created by Florian Schaukowitsch in the 2015 campaign of the 
\emph{ESA Summer of Code in Space}\footnote{\url{https://socis.esa.int/}} programme. 

If you are using this plugin in your scientific publications, please cite \citet{Zotti-etal:SEAC2016}.

\newpage
\section{Remote Sync Plugin}
\label{sec:plugin:RemoteSync}

The Remote Sync plugin\newFeature{0.16.0} enables setups which connect several instances of
Stellarium running on a network. This may be useful in installations where one
presenter wants to allow a larger audience to follow the actions on several
dim screens (e.g., when you need to avoid a projector's bright light in a 
public observatory). The actions 
performed on a ``master'' instance, which acts as a server, are automatically 
replicated on all connected clients. These clients may run on the same device 
the server runs, or may access the server over a network.

The plugin is still quite experimental, but is provided for testing and developing purposes.
You can configure it through the standard plugin settings dialog 
(\autoref{fig:plugins:RemoteSync:settings}). One Stellarium instance
can either run in the server mode or connect to an existing server as a client.
A custom TCP protocol is used for the connection. The port used by the server is
configurable, and the clients must know the IP address or host name and the port
of the server.

\begin{figure}[htb]
	\centering\includegraphics[width=\columnwidth]{remotesync_settings.png}
	\caption{RemoteSync settings window}
	\label{fig:plugins:RemoteSync:settings}
\end{figure}

Alternatively, you may start the plugin through command line arguments. This is
useful for automated setups or when multiple instances are running on the same
computer. To start the instance as a server, use the
\texttt{-{}-syncMode=server} argument with the optional \texttt{-{}-syncPort}
parameter to specify the port to listen on. To start a client instance, use
\texttt{-{}-syncMode=client} and use \texttt{-{}-syncHost} and
\texttt{-{}-syncPort} to specify the server to connect to.

In the settings window, you can also specify what should happen when the client 
loses the connection to its server, and what to do when the server quits 
normally. You can choose between 
\begin{description}
\item[Do nothing:] connection is lost and will not be re-established. Stellarium client keeps running 
     in whatever state it was, waiting for keyboard/mouse interaction. 
\item[Try reconnecting:] Assume Stellarium is switched off on the server
      but may come back online again, or assume some temporary network problem. 
	  Stellarium client just keeps running in whatever state it was, but tries to reconnect.
\item[Quit:] Assume the server always runs until switched off at the end of operating hours. 
      This is intended for pure client screens without keyboards. When the server  
	  is shut down, assume this is the end of the day, and exit Stellarium. An enclosing run script 
	  can then shutdown the client computer before power is switched off with some main switch. 
\end{description}
By default, the following things are synchronized:
\begin{itemize}
	\item simulation time
	\item viewer location
	\item the selected object
	\item view direction
	\item current field of view
	\item all StelProperty-based settings except for GUI-related properties. 
	This includes almost all settings visible in the configuration dialogs such 
	as projection type, sky and view options, landscape settings, line colors, etc.
\end{itemize}

\noindent Because there is currently no full time synchronization implemented, for the best
results all client computers should make sure their system clocks are set as
close as possible to the server computer's clock (preferably a few milliseconds
difference at most). This can be done for example by using an NTP server.\footnote{
Instructions on how to use the public NTP server pool for the most common
operating systems can be found at \url{https://www.pool.ntp.org/en/use.html}.} 
If all your Stellarium instances run on the same device, this is of course not 
necessary.

\begin{figure}[ht]
	\centering\includegraphics[width=0.8\columnwidth]{remotesync_client.png}
	\caption{RemoteSync client settings window}
	\label{fig:plugins:RemoteSync:client}
\end{figure}

It is also possible to exclude some state from being synchronized. On each
client, the client configuration GUI (\autoref{fig:plugins:RemoteSync:client}) allows to
disable specific settings from being synchronized on this client. 

The lower part of this dialog allows you to 
fine-tune which named StelProperties (which hold parts of the internal program state) 
should be excluded from synchronization. 
The configuration dialog lists all available properties which usually have easy to understand 
names on the left side. Highlight one or more properties which you don't want synchronized 
and press the arrow button to move them to the list of excluded properties.

For historic reasons there are two kinds of Properties: Actions 
(Boolean switches, for which also hotkeys can be assigned) and (genuine) StelProperties. 
The latter have names indicating which module they belong to and may have other data types (numbers, colors, \ldots). 
Note that the actions frequently are just alias names of Boolean StelProperties, 
so in order to inhibit a certain property from being synchronized, you must find both entries.

Properties of plugins will only be visible when the respective plugin has been enabled. 
When a plugin has been disabled, its properties may vanish from the stored list of non-synchronized properties.

Each client can have different settings. This could allow installations with several screens
where on one screen you show the constellation figures, another screen shows the
distribution of deep-sky objects in the same frame, and a third screen may show
a close-up view of the currently centered object. Or just show several sky cultures, 
or show the sky at different locations, \ldots. 

The names of all available StelProperties from which you might want to select a few to exclude  
from synchronisation can also be found with a little scripting (see chapter ~\ref{ch:scripting}). 
Open the script console \key{F12} and enter the following call:
\begin{script}
core.output(core.getPropertyList());
\end{script}
Run the script and inspect the output tab. It may take a little guesswork to select the right names, 
but the general structure of property names like 
\texttt{<Module>.<Property>} should help you to find your way around.

\subsection{Developer notes}

Usually the synchronisation fails if you attempt to use different
versions of Stellarium. You can override this behaviour
\newFeature{0.21.2} with an entry in the respective section of
\file{config.ini}:

\begin{configfile}[\scriptsize]
  [RemoteSync]
  allowVersionMismatch = true
\end{configfile}

\subsection{Finetuning}

This plugin makes use of the QLoggingCategory infrastructure. By default it is very verbose and prints each transmitted property to the logfile.
To reduce verbosity when it works, configure an environment variable with these entries (Note the closing semicolon!):
\begin{commands}[\scriptsize]
QT_LOGGING_RULES="stel.plugin.remoteSync.debug=true;
		  stel.plugin.remoteSync.client.debug=false;
		  stel.plugin.remoteSync.protocol.debug=false;"
\end{commands}

The final parts may be \texttt{debug|info|warning|critical = true|false}. Default: \texttt{true}.


\subsection*{Author and Acknowledgements}

This plugin was created mostly by Florian Schaukowitsch in the 2015-16 campaigns of the 
\emph{ESA Summer of Code in Space}\footnote{\url{https://socis.esa.int/}} programme. 

% \newpage
% \section{D-Bus Interface}
% \label{sec:plugin:DBus}
% 
% [This may come as user documentation from SoCiS2020 (?) work]

\newpage
\section{OnlineQueries Plugin}
\label{sec:plugins:OnlineQueries}

Stellarium includes and provides lots of information about many kinds
of objects. However, there are scientific websites which provide even
more specialized information about particular objects. This plugin 
\newFeature{0.21.1}\citep{Zotti-etal:SEAC2021} allows online access to several websites on a
variety of special topics. To retrieve information, select the
first tab and press the respective button labeled with the information source. 
The result is displayed in a browser view\footnote{%
  For technical reasons, on some platforms the
  result is displayed in the system's default web browser.  On some
  other platforms, e.g. Windows/WSL with Ubuntu or some ARM computers, the
  web view fails to work properly.  On these platforms you should
  manually edit \file{config.ini} and set the
  \texttt{disable\_webview} entry in the config file.}.

\begin{description}
\item[Wikipedia] The free online encyclopedia provides information
  about many bright stars, the planets, moons and many asteroids, as
  well as many deep-sky objects. The lookup is based on the English
  proper name.
\item[AAVSO] The \indexterm{International Variable Star
  Index}\footnote{\url{https://www.aavso.org/vsx/}} of the
  \indexterm{American Association of Variable Star Observers} (AAVSO)
  provides data about variable stars.
\item[GCVS] The \indexterm{General Catalogue of Variable
  Stars}\footnote{\url{http://www.sai.msu.su/gcvs/}} of the Sternberg
  Astronomical Institute and the Institute of Astronomy of the Russian
  Academy of Sciences in Moscow.
  %% N.B.: Ancient-Skies unfortunately did not resurface for now.
%\item[Ancient-Skies] A private project founded in preparation of the
%  \indexterm{International Year of Astronomy} 2009 which collects
%  information about star names and their mythologies
%  \citep{AncientSkies:2011}. The site is preparing a relaunch in 2022.
\end{description}

In addition, you can configure up to three further websites. These
must provide some public website which takes a query for a Hipparcos
star number or object name.  For example, the website
\url{https://biblicalastronomy.co/playground/fetch.cfm?Hipp=n}
provides various data and cross-references for a star with Hipparcos
number \texttt{n}.

Regardless of the current program language, the result is always
presented in English or the language of the respective website.

% \paragraph{Note:}

\subsection{Section \big[OnlineQueries\big] in config.ini file}
%\label{sec:plugins:OnlineQueries:configuration}

You can edit the \file{config.ini} file to change settings of the
OnlineQueries plugin.  The only strings you should need to touch are
the \texttt{customN\_\ldots} entries ($\mathtt{N}\in \left\{ 1, 2,
3\right\}$). The placeholder \texttt{\%1} will be filled by either the
Hipparcos number (if the respective \texttt{customN\_use\_hip} is
\texttt{true}) or by the first English name used in Stellarium. The
\texttt{customN\_use\_hip} should be \texttt{true} to use a star's
Hipparcos number, or \texttt{false} to use the English name as key.


\begin{center}
{\small
\begin{tabular}{l|l|l}\toprule
\emph{ID} & \emph{Type} & \emph{Default}\\\midrule
%ancientskies\_url    &string & (don't override)\\ % https://www.ancient-skies.org/api.php?apikey=fZdn9QsNdCAY4KggkV2T\&response=HTML\&entity=star\&catalog=HIPPARCOS\&id=\%1 \\
aavso\_hip\_url      &string & (don't override)\\ % https://www.aavso.org/vsx/index.php?view=api.object\&ident=HIP\%1 \\
aavso\_oid\_url      &string & (don't override)\\ % https://www.aavso.org/vsx/index.php?view=detail.top\&oid=\%1      \\
gcvs\_url            &string & (don't override)\\ % http://www.sai.msu.su/gcvs/cgi-bin/ident.cgi?cat=Hip+\&num=\%1    \\
wikipedia\_url       &string & (don't override)\\ % https://en.wikipedia.org/wiki/\%1 \\
\midrule
custom1\_url         &string & https://biblicalastronomy.co/playground/fetch.cfm?Hipp=\%1 \\
custom2\_url         &string & \\
custom3\_url         &string & \\
custom1\_use\_hip    &boolean& true \\
custom2\_use\_hip    &boolean& true \\
custom3\_use\_hip    &boolean& true \\\midrule
disable\_webview     &boolean&false \\
\bottomrule
\end{tabular}
}
\end{center}

\newpage

\section{Solar System Editor Plugin}
\label{sec:plugins:SolarSystemEditor}

Stellarium stores its data (orbital elements and other details) about
solar system objects (planets, their moons, minor bodies) in two files.  
File \file{data/ssystem\_major.ini} in the installation directory contains data for the planets and their moons, and should never be touched by users.
File \file{data/ssystem\_minor.ini} contains data for minor bodies, i.e., planetoids and comets.
The file will be taken from the user data directory if it also exists there, which means that users can add minor planets or comets as they become observable by editing this file.

The orbits of minor bodies (minor planets and comets) are specified with \indexterm[orbital elements, osculating]{orbital elements} for 
\indexterm{Kepler orbits} (after \name[Johannes]{Kepler} (1572--1630) who found the true shape of the orbit 
of a small body around a large one being a conic section, i.e., circle, ellipse, parabola or hyperbola). These elements 
describe the instantaneous shape and orientation of the object's orbit around the Sun at a particular time 
called the \indexterm{epoch}.  
We compute positions from these \indexterm[orbital elements, osculating]{osculating elements} of minor body orbits, but the result is only valid for 
a moderately short timespan around the epoch, because the major planets can exert noticeable gravitational perturbations 
on the objects when they come close, and so these orbital elements, which are mere snapshots in time, need to be updated on a regular basis. 
Stellarium does not perform numerical integration that could work out the orbital changes automatically, 
and so the element file needs to be modified to compute positions further away from the orbit's epoch. 
See Appendix~\ref{sec:ssystem.ini} for more details, 
and see e.g.\ \citet{Meeus:Morsels4} for a discussion of a few interesting examples of orbital development.
When you go out hunting for asteroids and comets, this plugin is for you.

This plugin provides access to the Minor Planet Center (MPC\footnote{\url{https://www.minorplanetcenter.net}}) server where the latest Solar System information can be found. When this plugin is
loaded (see section~\ref{sec:Plugins:EnablingPlugins}) and you open the configuration dialog, the first tab allows to import, export or reset your \file{ssystem\_minor.ini}, 
and also to load extra data for minor bodies in Stellarium's \file{.ini} format. 
For example, the installation directory contains a file \file{ssystem\_1000comets.ini} which contains 
data for over 1000 historical comets. Currently it is not possible to select only a few from that, 
so try loading this only on a reasonably fast computer, and think about deleting comets again (or resetting the file) when you don't require them.

\begin{figure}[tbh]\centering
	\includegraphics[width=.75\textwidth]{SolarSystemEditor-plugin-conffile.png}
	\caption{Interface of Solar System Editor plugin: Configuration file tab}
	\label{fig:SolarSystemEditor:ConfigurationFile}
\end{figure}

The second tab lists all currently loaded minor bodies (see figure~\ref{fig:SolarSystemEditor:SolarSystem}).  It is recommended
to remove old entries of yesteryear's comets if you don't need them any
longer. Just select one or more objects and press \button{Remove}.
If you have a very weak computer, you may want to reduce the number of
minor bodies to just a handful to improve performance.

\begin{figure}[tbh]\centering
	\includegraphics[width=.75\textwidth]{SolarSystemEditor-plugin-solsys.png}
	\caption{Interface of Solar System Editor plugin: Solar System tab}
	\label{fig:SolarSystemEditor:SolarSystem}
\end{figure}

On this tab, you also find the option to connect to the MPC and download current orbital elements, 
or load a text file in the format provided by MPC (see figures \ref{fig:SolarSystemEditor:ImportData:InitialView} and \ref{fig:SolarSystemEditor:ImportData:FinalView}). 

\begin{figure}[tbph]\centering
\includegraphics[width=.7\textwidth,trim=0 40 0 0,clip]{SolarSystemEditor-plugin-import.png}
\caption{Interface of Solar System Editor plugin: Import data dialog}
\label{fig:SolarSystemEditor:ImportData:InitialView}
\end{figure}

Once MPC data has been downloaded, the user can select objects for updating the user's \file{ssystem\_minor.ini}.

\begin{figure}[tbph]\centering
\includegraphics[width=.7\textwidth]{SolarSystemEditor-plugin-import2.png}
\caption{Interface of Solar System Editor plugin: Import data dialog --- view after downloading and parsing the MPC data.}
\label{fig:SolarSystemEditor:ImportData:FinalView}
\end{figure}


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "guide"
%%% End: