Skip to content

Commit

Permalink
Merge pull request #9 from lahwaacz/master
Browse files Browse the repository at this point in the history
added option to run X in current tty
  • Loading branch information
Ghost1227 committed Sep 12, 2012
2 parents 4327bd6 + 6321427 commit 0be38c2
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 33 deletions.
File renamed without changes.
48 changes: 30 additions & 18 deletions src/cdm
Expand Up @@ -132,31 +132,43 @@ case ${flaglist[$binindex]} in
[Xx])
clear

# If X is already running and locktty=yes, activate it,
# otherwise increment.
# If X is already running and locktty=yes, activate it
if $(yesno locktty); then
# Activate existing X session.
if xdpyinfo -display ":$display.0" &> /dev/null; then
chvt "$((display+xtty))"
exitnormal
fi
fi

# Get the first empty display.
display=0
while ((display < 7)); do
if dpyinfo=$(xdpyinfo -display ":$display.0" 2>&1 1>/dev/null) ||
# Display is in use by another user.
[[ "$dpyinfo" == 'No protocol specified'* ]] ||
# Invalid MIT cookie.
[[ "$dpyinfo" == 'Invalid MIT'* ]]
then
let display+=1
else
break
fi
done

# run X in current tty
if [[ $xtty == "keep" ]]; then
vt=$(tty)
vt=${vt#/dev/}
if [[ $vt != tty* ]]; then
error "error: invalid TTY"
exiterror
fi
vt=${vt#tty}
else
# Get the first empty display.
display=0
while ((display < 7)); do
if dpyinfo=$(xdpyinfo -display ":$display.0" 2>&1 1>/dev/null) ||
# Display is in use by another user.
[[ "$dpyinfo" == 'No protocol specified'* ]] ||
# Invalid MIT cookie.
[[ "$dpyinfo" == 'Invalid MIT'* ]]
then
let display+=1
else
break
fi
done
vt=$((xtty+display))
fi
serverargs=":${display} $serverargs vt$((xtty+display))"

serverargs=":${display} $serverargs vt$vt"

$(yesno consolekit) && launchflags="-c -t $cktimeout"
if ! eval cdm-xlaunch $launchflags -- $bin -- $serverargs; then
Expand Down
27 changes: 14 additions & 13 deletions src/cdm-xlaunch
Expand Up @@ -77,20 +77,21 @@ if $consolekit; then
fi

# Conform to POSIX and do not use `>&' here.
sh -i -c "(startx $* > /dev/null 2>&1 &)"
nohup startx $* > /dev/null 2>&1 &

# If wait(1) returns with a value >128, it was interrupted by kill(1),
# so registration was sucessful.
if [[ -n "$clockpid" ]]; then
if wait "$clockpid" >& /dev/null
then
kill "$dbuspid"
error "ConsoleKit registration timed out."
exit 1
else
kill "$dbuspid"
info "ConsoleKit registration succeeded."
exit 0
fi
if $consolekit; then
if [[ -n "$clockpid" ]]; then
if wait "$clockpid" >& /dev/null
then
kill "$dbuspid"
error "ConsoleKit registration timed out."
exit 1
else
kill "$dbuspid"
info "ConsoleKit registration succeeded."
exit 0
fi
fi
fi

1 change: 1 addition & 0 deletions src/cdmrc
Expand Up @@ -39,6 +39,7 @@ countfrom=0
display=0

# Where should the first X tty be spawned?
# special value 'keep' causes to run X in current tty
xtty=7

# Should cdm(1) stick to the specified display?
Expand Down
4 changes: 2 additions & 2 deletions src/profile.sh
@@ -1,5 +1,5 @@
if [[ "$(tty)" == /dev/tty1 ]]; then
if [[ "$(tty)" == /dev/tty* ]]; then
[[ -n "$CDM_SPAWN" ]] && return
[[ -z "$DISPLAY$SSH_TTY$(pgrep xinit)" ]] && exec cdm
[[ -z "$DISPLAY$SSH_TTY" ]] && exec cdm
fi

0 comments on commit 0be38c2

Please sign in to comment.