Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge pull request #9 from lahwaacz/master

added option to run X in current tty
  • Loading branch information...
commit 0be38c2ea12215d42b15952ce098830501db06dc 2 parents 4327bd6 + 6321427
@ghost1227 authored
View
0  README → README.md
File renamed without changes
View
48 src/cdm
@@ -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
View
27 src/cdm-xlaunch
@@ -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
-
View
1  src/cdmrc
@@ -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?
View
4 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
Please sign in to comment.
Something went wrong with that request. Please try again.