EDIT: X est désormais verrouillable via xscreensaver
salut! essayez ceci, j'ai de bons résultats en l'utilisant, surtout pour les jeux! Comme il ne sera pas géré par Unity, vous pouvez également obtenir d'excellents résultats!
J'ai créé ce script qui crée une nouvelle session X et exécute une commande ou ouvre un terminal afin que vous puissiez l'exécuter là-bas.
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"&
ajoutez également ceci à: gestionnaire de paramètres de config compiz -> règles de fenêtre -> fenêtres non fermables:
(class=XTerm) & (title=sudo X :1) & (name=xterm)
Cela vous empêchera de fermer ce terminal (utilisez ctrl + c pour fermer l'autre session X et également le terminal), car si vous fermez "la fenêtre", cela gèle votre session X actuelle!
Il a l'avantage que vous n'avez pas de problèmes alt + enter en plein écran, pas de problèmes Alt + TAB en plein écran; vous pouvez exécuter avec plus de stabilité n'importe quel jeu 3D, de Urban Terror (natif de linux) aux jeux exécutés avec Wine! Même certains navigateurs qui exécutent des jeux 3D comme Firefox avec Quake!
Obs .: vous voudrez peut-être installer le package jwm, non requis mais fera une différence si vous avez besoin de faire de la gestion de fenêtres là-bas ..
PS: cela peut être amélioré bien sûr, mon plan est d'ajouter la configuration du clavier à une option, mais je le fais très lentement;), si quelqu'un l'améliore / le nettoie, postez-le pour que je puisse mettre à jour le script de mon :)