EDIT: X ora è bloccabile tramite xscreensaver
Ciao! prova questo, sto usando grandi risultati, soprattutto per i giochi! Dato che non sarà gestito da Unity, potresti avere anche grandi risultati!
Ho creato questo script che crea una nuova sessione X ed esegue un comando o apre un terminale in modo da poterlo eseguire lì.
openNewX.sh
#!/bin/bash
function FUNCisX1running {
ps -A -o command |grep -v "grep" |grep -q -x "X :1"
}
useJWM=true
useKbd=true
while [[ ${1:0:2} == "--" ]]; do
if [[ "$1" == "--no-wm" ]]; then #opt SKIP WINDOW MANAGER (run pure X alone)
useJWM=false
shift
elif [[ "$1" == "--no-kbd" ]]; then #opt SKIP Keyboard setup
useKbd=false
shift
elif [[ "$1" == "--isRunning" ]]; then #opt check if new X :1 is already running
if FUNCisX1running; then
exit 0
else
exit 1
fi
elif [[ "$1" == "--help" ]]; then #opt show help info
echo "usage: options runCommand"
# this sed only cleans lines that have extended options with "--" prefixed
sedCleanHelpLine='s"\(.*\"\)\(--.*\)\".*#opt" \2"' #helpskip
grep "#opt" $0 |grep -v "#helpskip" |sed "$sedCleanHelpLine"
exit 0
else
#echoc -p "invalid option $1"
echo "PROBLEM: invalid option $1"
$0 --help
exit 1
fi
done
#echo "going to execute: $@"
#runCmd="$1" #this command must be simple, if need complex put on a script file and call it!
runCmd="$@" #this command must be simple, if need complex put on a script file and call it!
#if ! echoc -q -t 2 "use JWM window manager@Dy"; then
# useJWM=false
#fi
# run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
if ! FUNCisX1running; then
xterm -e "\
echo \"INFO: hit CTRL+C to exit the other X session and close this window\";\
echo \"INFO: running in a thread (child proccess) to prevent ctrl+c from freezing this X session and the machine!\";\
echo \"INFO: hit ctrl+alt+f7 to get back to this X session (f7, f8 etc, may vary..)\";\
echo ;\
echo \"Going to execute on another X session: $runCmd\";\
sudo X :1"&
fi
#sudo chvt 8 # this line to force go to X :1 terminal
# wait for X to start
while ! FUNCisX1running; do
sleep 1
done
# run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
if $useJWM; then
if [[ ! -f "$HOME/.jwmrc" ]]; then
echo '<?xml version="1.0"?><JWM><Key mask="4" key="L">exec:xscreensaver-command --lock</Key></JWM>' \
>$HOME/.jwmrc
#if ! jwm -p; then
# rm $HOME/.jwmrc
# echo ".jwmrc is invalid"
#else
echo "see http://joewing.net/programs/jwm/config.shtml#keys"
echo "with Super+L you can lock the screen now"
#fi
fi
jwm -display :1&
fi
kbdSetup="echo \"SKIP: kbd setup\""
if $useKbd; then
kbdSetup="setxkbmap -layout us"
fi
sleep 2
xscreensaver -display :1&
# setxkbmap is good for games that have console access!; bash is to keep console open!
# nothing
#xterm -display :1&
# dead keys
#xterm -display :1 -e "setxkbmap -layout us -variant intl; bash"&
# good for games!
xterm -display :1 -e "$kbdSetup; bash -c \"$runCmd\"; bash"&
#xterm -display :1 -e "$kbdSetup; bash -c \"$@\"; bash"&
inoltre, aggiungilo a: compiz config settings manager -> regole finestra -> finestre non chiudibili:
(class=XTerm) & (title=sudo X :1) & (name=xterm)
Questo ti impedirà di chiudere quel terminale (usa ctrl + c per chiudere l'altra sessione X e anche il terminale), perché se chiudi "la finestra" si bloccherà la tua sessione X corrente!
Ha il vantaggio di non avere alt + inserire problemi a schermo intero, anche senza Alt + TAB problemi a schermo intero; puoi correre con maggiore stabilità in qualsiasi gioco 3D, da Urban Terror (nativo di Linux) ai giochi eseguiti con Wine! Anche alcuni browser che eseguono giochi 3D come Firefox con Quake!
Nota: potresti voler installare il pacchetto jwm, non necessario, ma farà la differenza se devi fare una gestione delle finestre lì.
PS .: ovviamente può essere migliorato, il mio piano è quello di aggiungere la configurazione della tastiera a un'opzione, ma lo faccio molto lentamente;), se qualcuno lo migliora / pulisce, pubblica così posso aggiornare il mio script :)