Frontend Auto Login
Part of a proper frontend system is having it automatically login as the mythtv user and loading mythfrontend. There are a variety of methods to do this. KDM allows for auto-login, but doesn't handle mythfrontend crashes well. The best method is to use inittab to login the user straight into mythfrontend.
Contents
Setup
First you will need to make sure you have mingetty installed. Next, make sure you have a dedicated user to run the mythfrontend with a home directory.
inittab
Add the following line to your '/etc/inittab' file,
This is what will login the mythtv user.
Option 1
Now we will setup the mythtv user,
.bash_profile
In that home directory, create/edit a .bash_profile file like this,
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty7 ]; then while [ 1 == 1 ] do startx sleep 10 done fi
this will start X only if running on virtual terminal 7, so if you telnet or ssh into the box it will not react strange. It will also restart X if the frontend crashes.
.xinitrc
There are two options for .xinitrc, one will load a window manager, the other will not.
No Window Manager
For no windowmanager, create/edit the user's .xinitrc and add,
xset -dpms s off xsetroot -solid black mythfrontend -l /home/mythtv/mythfrontend.log #mythtv-setup #xterm
This will turn off dpms, turn the X default background color black and log to /home/mythtv/mythfrontend.log, this can be changed. Also included is an easy way to access mythtv-setup or xterm, just uncomment the appropriate line and comment out the mythfrontend line.
You should note that running mythfrontend without a window manager is not a supported configuration. You may run into focus problems when trying to press buttons, enter text and generally use the system.
fvwm
To use fvwm, edit your .xinitrc like,
xset -dpms s off xsetroot -solid black x11vnc -many -q -bg -rfbauth .vnc/passwd fvwm2 & mythfrontend -l /home/mythtv/mythfrontend.log 2>&1 #mythtv-setup #xterm
Next edit your .fvwm2rc,
#Set Windows Styles Style "*" RandomPlacement, DumbPlacement Style myth* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0, HilightFore Black, HilightBack #c06077, Color Black/#60a0c0 Style xmame* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0, StaysOnTop,BoundaryWidth 0, HilightFore Black, HilightBack #c06077, Color Black/#60a0c0 Style mplayer* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0, HilightFore Black, HilightBack #c06077, Color Black/#60a0c0 Style xine* NoTitle, NoHandles, Sticky, WindowListSkip, SloppyFocus, GrabFocus, BorderWidth 0, HilightFore Black, HilightBack #c06077, Color Black/#60a0c0 #set the desk top size in units of physical screen size DeskTopSize 1X1 # Starts mythfrontend from the keyboard using F1 Key F1 R A exec /usr/local/bin/mythfrontend -v important,general -l /var/log/mythfrontend.log 2>&1
ratpoison
Another popular window manager is ratpoison. This version of the .xinitrc file also allows you to use vnc to connect to your frontend (as the fvwm example above) and rotates the log files at each restart of the frontend.
xset -dpms s off xsetroot -solid black ratpoison & x11vnc -many -q -bg -rfbauth .vnc/passwd mythfrontend > /home/mythtv/mythfrontend.log 2>&1 for i in 5 4 3 2 1 ; do if [ -f mythfrontend.log.$i ]; then mv -f mythfrontend.log.$i mythfrontend.log.$(($i + 1)) fi done mv mythfrontend.log mythfrontend.log.1
And the associated .ratpoisonrc file. Note that the mythtvstart.jpg file is just something knocked up with the GIMP.
# This is a sample .ratpoisonrc file # # Set the prefix key to that of screen's default escape C-a # put something informative on the screen while we load stuff exec xloadimage -onroot -quiet -center /home/mythtv/.mythtv/mythtvstart.jpg # Gets rid of that ugly crosshairs default cursor and set the background to black exec xsetroot -cursor_name left_ptr # Use the name of the program rather than the title in the window list defwinname name ### fire up an xterm with ctrl-A x bind x exec xterm -j -fn '*-courier-*-r-*-14-*' # Since running a 720x576 definition the ratpoison screens are too big for the # display so we reduce the size of them with defpadding to make them fit #defpadding 25 25 25 25 keystate_numlock = enable
Option 2
If the above instructions don't give you results you like, there is another option to autologin. You can use inittab to login as the mythtv user and launch X all at once, without having to create a .bash_profile script.
Find the following line in your /etc/inittab file:|
6:2345:respawn:/sbin/getty 38400 tty6
And comment it out by adding the "#" symbol in front of it:
#6:2345:respawn:/sbin/getty 38400 tty6
Then add this line directly under the line you just commented out:
6:2345:respawn:/usr/bin/openvt -fwc 2 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null
Note: you should test the command to verify that the the mythtv user is authorized to start the X server. If not, modify your /etc/X11/Xwrapper.conf file to include:
allowed_users=anybody
This command starts X as the mythtv user, and will restart X automatically if MythTV crashes. This option has the advantage that if your distribution has a graphical boot sequence like Ubuntu, Red Hat, Mandriva, etc, then you won't see any text before Myth starts. It looks a little more professional. This also means that you don't have to create a .bash_profile script. Edit your .xinitrc file according to the directions above and you are done.
Some may prefer this method of logging in and starting X to the method above because X prefers to use tty 7 and the method above may cause problems.
Note on inittab option 2 and runlevels
If you want to be able to easily change between auto-login and normal xdm login you can restrict the autologin to eg. runlevel 3, so the auto-start line is /etc/inittab looks like this:
6:3:respawn:/usr/bin/openvt -fwc 2 -- /bin/su - mythtv -c /usr/bin/startx >& /dev/null
The default runlevel specification in inittab can then be set to 3 for auto-login or 5 for X-login.
id:3:initdefault: # auto-login to MythTv
If you have booted in auto-login mode and want to change to X-login mode you can just change run level with the init command:
/sbin/init 5
or back to mythtv mode with:
/sbin/init 3
Note on Ubuntu Edgy (6.10)
As of Ubuntu Edgy, inittab is no longer an option for an automatic login setup. However, you can use Gnome to automatically login and run mythfrontend. Note that this option requires Gnome and X.
First, edit your /etc/gdm/gdm.conf-custom file:
Next, create and edit .gnomerc in the user's home folder:
touch /home/mythtv/.gnomerc chmod 755 .gnomerc
Now edit this file and add the following line:
sleep 10 && mythfrontend > /tmp/mythfrontend.log 2>&1 &
Note on Ubuntu Gutsy (7.10)
(This may also work for Ubuntu Fiesty) Ubuntu now uses an event.d system to handle run levels. This method is similar to the inittab method above and requires mingetty and a .bash_profile and .xinitrc file in the mythtv users' home directory.
First copy /etc/event.d/tty6 to /etc/event.d/tty7 change it from:
# tty6 - getty # # This service maintains a getty on tty6 from the point the system is # started until it is shut down again. start on runlevel 2 start on runlevel 3 stop on runlevel 0 stop on runlevel 1 stop on runlevel 4 stop on runlevel 5 stop on runlevel 6 respawn exec /sbin/getty 38400 tty6
to
# tty7 - mingetty for MythTV # # This service maintains a mingetty on tty7 from the point the system is # started until it is shut down again. start on runlevel 2 stop on runlevel 0 stop on runlevel 1 stop on runlevel 3 stop on runlevel 4 stop on runlevel 5 stop on runlevel 6 respawn exec /sbin/mingetty --autologin=mythtv tty7
This will only run on the Ubuntu Gutsy default runlevel of 2 allowing the user to switch to runlevel 3 to disable MythTV but still maintain a GUI setup
Option 3
Configure a Login Manager to login automatically as a default user. Then configure your desktop (KDE or GNOME) to autostart a program like mythfrontend. To deal with mythfrontend crashes, I would suggest that you run a wrapper around mythfrontend like
while true; do mythfrontend; sleep 5s; done
KDM Auto Login
For the default user, create a link in ~/.kde/Autostart that points either to the script listed above (or some other script that starts the front end) or merely to mythfrontend itself. The system will now log in automatically, and immediately start the frontend.
Frontend Auto Login with Fedora Core 5 and GNOME / GDM
To set GDM to auto-login your mythtv user, edit your GDM configuration:
vi /etc/gdm/custom.conf
Add the following lines to the [daemon] section:
[daemon] AutomaticLoginEnable=true AutomaticLogin=mythtv
Then, set the $HOME/.xsession file for your mythtv user to start mythwelcome:
vi ~mythtv/.xsession
An example, which will start the Metacity window manager, an xterm (which you can start with F12 from mythwelcome) and finally, mythwelcome itself.
Note: If mythwelcome dies for some reason, GDM will restart it.
Make sure to make it executeable:
chmod 755 ~mythtv/.xsession
If you'd like to be able to login as a different user before GDM logs in your mythtv user, replace the AutomaticLogin lines in your GDM configuration with TimedLogin lines.
This example will wait 10 seconds before logging in the mythtv user.
[daemon] TimedLoginEnable=true TimedLogin=mythtv TimedLoginDelay=10
Frontend Auto Login with Kubuntu / KDM
To set KDM to auto-login your mythtv user, edit your KDM configuration:
sudo vi /etc/kde3/kdm/kdmrc
Go to (almost) the bottom of the file and edit the next lines:
[X-:0-Core] AutoLoginDelay=0 AutoLoginEnable=true AutoLoginUser=mythtv
Frontend Auto Login for Fedora and KDE
Fedora Core 6 uses a script to let you choose which login manager to use. If no default is given it uses xdm. You can set the default by creating a file called /etc/sysconfig/desktop and adding DISPLAYMANAGER="KDE" or DISPLAYMANAGER="GNOME". Once this file is there then you can set the auto login from within KDE like so:
- Click on the K menu.
- In the K menu, click on Control Center.
- When the control center screen appers there is a list of options to pick. Select the System option.
- The System menu will expand and give a list of sub menus - click on Login Manager.
- When the login manager is displayed there are tabs that you can select Appearance/Font/Background/Sessions/Users/Convenience. Click on the Convenience tab.
- Go to the Automatic Login box, you will see there is 2 check boxes and a drop down menu. Click Enable Auto-login. Select user from the drop down menu.
- Click the Apply button down on the bottom right.
- Close window. The automatic login process will take effect when you restart your computer.
Frontend Auto Login for Fedora 9
If Fedora 9 seems to ignore any changes to /etc/inittab try making the changes in /etc/event.d/ttyX. (Not sure what directs using /etc/inittab versus /etc/event.d)
exec /sbin/mingetty --autologin mythtv tty1
Frontend Auto Login for openSUSE 10.2
see the Opensuse_10.2 page