Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 29 su 29

Discussione: Startx o.... xstart???

  1. #21
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    Velenux, questa mattina ho comprato l'ultimo numero di "Linux & C.", il n. 34, e c'è l'inizio di un tutorial proprio sulla Bash che ho trovato molto valido.

    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  2. #22
    Thanks again
    Slackware 10 powered
    FreeBSD 5.1
    Libranet 2.7

    Happy Slacking...and have fun!!

  3. #23
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    Allora, nuova versione del mio script o programma, non so come chiamarlo, in questa nuova versione vi permetterete, notate bene, di aprire sino a 6 window manager differenti nel vostro sisteme operativo, così nella prima console potete avere aperto KDE, nella seconda Fluxbox, nella terza Gnome, magari nella quarta ancora KDE però come un'altro utente, magari root, scaricatelo e provatelo se avete una Slack, prossimamente lo renderò funzionale anche su altre distribuzioni, prima di tutte Debian.
    Lo script è fatto su dei meccanismi che riguardano il mio OS, mi fate un favore se mi segnalate malfunzionamenti o funzionamenti strani.
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  4. #24
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    ...emmmhhh... non avevo notato che le estensioni valide per allegare un file non corrispondono al "tar.gz" :quipy:, visto che lo script ha raggiunto la dimensione di più di 300 linee non lo copio e incollo qua.
    Penso di metterlo nella sezione download del mio LUG o, se vi interessa, mandatemi una mail a luigi.b@aliceposta.it e ve lo spedirò in allegato.

    Byeeeezzzzzz
    Gigi
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  5. #25
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    Vediamo se riesco a postare la mia opera.....

    codice:
    #!/bin/sh
    
    #
    #  xstart
    #
    #  Copyright (c) 2003, Luigi A. Bassetti.
    #
    #  This program is free software; you can redistribute it and/or modify
    #  it under the terms of the GNU General Public License as published by
    #  the Free Software Foundation; either version 2 of the License, or
    #  (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with this program; if not, write to the Free Software
    #  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    #
    
    
    #
    # Alternativa a "startx", permette di selezionare un window manager 
    # come argomento del comando (esempio "xstart kde").
    # Nota 1: alcuni avvertimenti di particolare importanza li ho
    # scritti in maiuscolo.
    # Nota 2: per i più pignoli ;-), ho usato il termine "funzione"
    # per definire alcuni blocchi di codice, so che per la precisione
    # avrei dovuto usare termini come "costrutto" o similari, però
    # ho preferito rendere più snella la lettura dei commenti senza
    # voler insistere su "precisi tecnicismi" ;-)
    #
    # Vorrei ringraziare l'amico Velenux del forum Linux di
    # "html.it" per gli ottimi suggerimenti che mi ha dato
    # nella realizzazione dei link che permettono il caricamento
    # dei vari window manager con la Slackware, mentre per la
    # funzione di apertura dei window manager in console virtuali
    # diverse contemporaneamente ringrazio l'amico Gianluca del
    # mio LUG (LinuxVar, il LUG di Varese, http://www.linuxvar.it)
    # che mi ha dato l'input.
    #
    #
    
    ############ INIZIO DELLE VARIABILI GLOBALI ###############
    
    #
    # Il percorso degli "xinitrc" corrispondenti ai vari window
    # manager
    #
    XINITRC_PATH=/etc/X11/xinit/xinitrc.
    
    #
    # La seguente costante contiene il nome del file "~/.xinitrc"
    # salvato
    #
    MYXINITRC_SAVE=~/.xstart_save.xinitrc
    
    #
    # Il file "xinitrc" nella home
    #
    MYXINITRC=~/.xinitrc
    
    #
    # La seguente variabile conta quanti window manager sono aperti 
    # nel sistema, la stessa sarà usata da più funzioni più avanti.
    #
    wm_counter=$((`ps --user root | grep X | grep -v grep | wc -l`))
    
    #
    # Variabile che verifica se si è in una console "tty"
    #
    mytty=`tty | grep tty`
    
    #
    # NOTA: ci sarà una o più variabili anche più avanti, ho cercato 
    # di raggrupparle il più possibile qua per un discorso di ordine,
    # però ci potrebbero essere dei casi dove risulta una scelta 
    # migliore scriverle in posizioni che non compromettano 
    # l'efficienza o la velocità del programma.
    #
    
    
    ################# FINE DELLE VARIABILI GLOBALI #################
    
    #
    # Valuta se il sistema è configurato in modo da poter funzionare 
    # con questo programma.
    # Ho scritto xstart basandomi su Slackware 9.x
    #
    ls $XINITRC_PATH* > /dev/null 2>&1 
    if [ "$?" != 0 ] ; then
    	echo
    	echo "Attenzione! Questo sistema non è adatto per l'uso"
    	echo -n "di questo programma! Invio per uscire..."
    	read
    	echo
    	exit 1
    fi
    
    
    #
    # Viene salvato il file "~/.xinitrc"
    #
    if [ "$1" = "--myxinitrc-save" ] ; then
    	if [ -f "$MYXINITRC_SAVE" ] ; then
    		echo
    		echo "Attenzione: \"$MYXINITRC_SAVE\" è già stato"
    		echo -n "creato, invio per uscire..."
    		read
    		echo
    		exit 1
    	else
    		echo 
    		echo "Salvo il file \"$MYXINITRC\" nel file"
    		echo -n "\"$MYXINITRC_SAVE\"..."
    		`mv $MYXINITRC $MYXINITRC_SAVE`
    		# Viene creato un link simbolico "~/.xinitrc" al file
    		# salvato in quanto potrebbe succedere di usare "startx"
    		# dopo avere eseguito questa opzione ma prima di avere
    		# eseguito una prima volta xstart, poi serve sopratutto
    		# per il fatto che lo stesso programma deve trovare un
    		# link simbolico di nome "~/xinitrc" per funzionare.
    		`ln -s $MYXINITRC_SAVE $MYXINITRC`
    		`sleep 2`
    		echo "   fatto"
    		`sleep 1`
    		echo
    		echo "Attenzione: per ripristinare il file \"$MYXINITRC\""
    		echo "originale eseguire l'opzione \"--myxinitrc-restore\""
    		echo -n "o farlo manualmente, invio per uscire..."
    		read
    		echo
    		exit 0
    	fi
    fi
    
    #
    # Controlla che il file "~/.xinitrc" sia un link simbolico 
    # e non un file, in quest'ultimo caso chiede di eseguire 
    # l'opzione "--myxinitrc-save" per salvare il file originale
    # ed esce dal programma.
    #
    
    if [ ! -h "$MYXINITRC" ] && [ "$1" != "--help" ] ; then
    	echo
    	echo "ATTENZIONE: ESEGUIRE L'OPZIONE \"--myxinitrc-save\""
    	echo "PER SALVARE IL FILE \"$MYXINITRC\" ORIGINALE, INVIO"
    	echo -n "PER USCIRE..."
    	read
    	echo
    	exit 1
    fi
    
    #
    # L'opzione "-q" stampa i window manager che si possono selezionare
    #
    if [ "$1" = "-q" ] ; then
    	echo
    	echo "I window manager selezionabili sono:"
    	echo
    	exec ls $XINITRC_PATH* | sort | cut -d'.' -f2
    	echo
    	echo "per selezionarne uno digitare il nome" 
    	echo "come argomento (esempio \"xstart kde\")."
    	echo
    	exit 0
    	
    
    #
    # Opzione per controllare quanti window manager sono aperti e
    # quanti se ne possono aprire ancora.
    #
    elif [ "$1" = "--display-counter" ] ; then
    	echo
    	echo "Window Manager aperti: $wm_counter"
    	wm_remaining=$((6 - $wm_counter))
    	if [ "$wm_remaining" -eq 0 ] ; then
    		echo
    		echo "Non si possono più aprire altri window manager."
    		echo
    		exit 1
    	elif [ "$wm_remaining" -gt 0 ] && [ "$wm_remaining" -le 6 ] ; then
    		echo
    		echo "Window Manager che si possono ancora aprire: $wm_remaining"
    		echo
    		exit 0
    	else
    		echo
    		echo "Risultano $wm_reamining window manager aperti."
    		echo "Attenzione, il massimo dovrebbe essere 6, se"
    		echo "sono stati aperti tutti con questo programma"
    		echo "per favore segnalere la cosa a luigi.b@aliceposta.it."
    		echo "Grazie :-)"
    	fi
    
    #
    # L'opzione "--myxinitrc-restore" ripristina il file
    # precedentemente salvato dal programma.
    # Vedi anche le note sopra.
    #
    elif [ "$1" = "--myxinitrc-restore" ] ; then
    	echo
    	echo -n "Sto ripristinando il file..."
    	`mv $MYXINITRC_SAVE $MYXINITRC`
    	`sleep 2`
    	echo "   fatto!"
    	`sleep 1`
    	echo
    	exit 0
    
    #
    # L'opzione "--help" stampa un aiuto
    #
    elif [ "$1" = "--help" ] ; then
    	echo
    	echo -e "\n\n\033[1mxstart\033[0m  è un comando che va a sostituire startx.
    	Più che sostituire sarebbe meglio dire integrare 
    	in quanto alla fine viene comunque eseguito startx.
    
    	Le opzioni possibili sono:
    	
    	 --help               stampa questo scritto
    	
    	 -q                   elenca i window manager	
    	                      disponibili.	
    	
             --myxinitrc-save     crea una copia di backup del
    	                      file \"~/.xinitrc\" nel file
    	                      \"~/.xstart_save.xinitrc\".
    	                      si può ripristinare con 
    	                      l'opzione \"--myxinitrc-restore\"
    	
    	 --myxinitrc-restore  ripristina il file \"~/.xinitrc\"
    	                      originale.
    	                      Se si vuole farlo manualmente
    	                      bisogna rinominare il file
    	                      \"~/.xstart_save.xinitrc\"
    	                      precedentemente salvato dal
    	                      programma sovrascrivendo il
    	                      link simbolico creato da
    	                      xstart.
    	
    	  --display-counter   Visualizza il numero dei window
    	                      manager aperti e il numero di
    	                      quanti se ne possono ancora aprire.
    	
    	L'uso è semplice, per avviare un window manager
    	basta dare il suo nome come argomento (esempio:
    	\"xstart kde\"), se viene dato il comando xstart
    	senza argomenti verrà caricato l'ultimo window
    	manager usato.
    	 
    	Anche la gestione dei window manager multipli è
    	molto semplice, basta accedere ad una console
    	virtuale non utilizzata con X e usare 
    	normalmente il programma.
    	L'unica accortezza nel caso che si decida di
    	lanciare il programma in background, ovvero
    	con l'opzione \"&\", è di usare un'altra
    	console vistuale, in caso contrario il sistema
    	restituirà un errore.
    	Con l'opzione \"--display-counter\" si visualizza
    	da qualsiasi posizione il numero di window manager
    	aperti.
    
    	Per qualsiasi problema inviare una mail a
    	luigi.b@aliceposta.it
    
    	(\"q\" per uscire)
    	
    	Buon divertimento... :-)" | less -r
    	echo
    	exit 0
    
    #
    # Crea il link simbolico allo "/etc/X11/xinit/xinitrc" 
    # corrispondente al window manager selezionato.
    #
    elif [ -e "$XINITRC_PATH$1" ] ; then
    	`ln -sf $XINITRC_PATH$1 ~/.xinitrc`
    	
    #
    # Se il window manager indicato non esiste non verrà 
    # creato nessun link, verrà chiesto se si desidera
    # avviare l'ultimo window manager usato, in caso 
    # contrario verrà stampato un messaggio di aiuto
    # e verrà restituito il prompt dei comandi
    # 
    elif [ ! -z "$1" ] ; then
    	echo
    	echo "ATTENZIONE: \"$1\" non è un window manager presente"
    	echo "nel sistema e non è un'opzione valida, digitate \"yes\"" 
    	echo "e invio per avviare l'ultimo window manager usato," 
    	echo "invio per visualizzare un messaggio di aiuto e" 
    	echo -n "tornare al prompt..."
    	read option
    	if [ "$option" != "yes" ] ; then
    		echo
    		echo "Usate l'opzione \"-q\" per visualizzare"
    		echo "i window manager disponibili o l'opzione"
    		echo "\"--help\" per visualizzare le opzioni"
    		echo "disponibili."
    		echo
    		exit 1
    	fi
    fi
    
    #
    # Controlla di essere in una console virtuale "tty", in 
    # caso contrario stampa un messaggio di errore ed esce.
    #
    if [ -z "$mytty" ] ; then
    	echo
    	echo "Attenzione: non si può avviare un window"
    	echo -n "manager da questa console, invio per uscire..."
    	read
    	echo
    	exit 1
    fi
    
    #
    # Controlla se ci sono più di 6 window manager aperti, questo 
    # perchè è il massimo gestibile in modo semplice con i tasti
    # Fx, comunque 6... direi che bastano!!! ;-)
    # Potrebbe considerarsi una funzione poco utile visto che 
    # comunque ogni window manager si può aprire da una console
    # virtuale e queste al massimo sono 6, però ho preferito
    # scriverla per una questione di sicurezza, non... si sa mai!!!
    #
    if [ "$wm_counter" -gt 6 ] ; then
    	echo
    	echo "Attenzione: non si possono aprire più di 6 window manager."
    	echo -n "Invio per uscire......"
    	read
    	echo exit 1
    fi
    
    #
    # Variabile contenente i numeri dei display aperti. Ho deciso di
    # scriverla qua in quanto rallenta leggermente l'esecuzione del
    # programma e a volte si ha solo bisogno di usare xstart per una
    # opzione.
    #
    DISPLAY_OPENED=`ps --user root l | grep 'X :' | grep -v grep | cut -d: -f3 | cut -c1 | sort`
    
    #
    # Funzione per determinare il primo display disponibile (su 6).
    #
    for display in "0" "1" "2" "3" "4" "5" ; do
    	for counter in 1 2 3 4 5 6 ; do
    		# Divide i numeri dei display uno a uno
    		display_test=`echo $DISPLAY_OPENED | tr -d " " | cut -c$counter`
    
    		# Se "display" trova una corrispondenza con "display_test" 
    		# allora il numero contenuto in display corrisponde a un 
    		# numero di display occupato, assegna una stringa nulla
    		# a "display" (che sevirà anche al ciclo esterno) ed esce 
    		# dal ciclo.
    		if [ "$display" = "$display_test" ] ; then
    			display=""
    			break
    		fi
    	done
    	# Se "display" non contiene una stringa nulla allora non c'è
    	# una corrispondenza con il relativo display aperto, questo
    	# vuol dire che si può aprire questo display.
    	if [ ! -z "$display" ] ; then
    		break
    	fi
    done
    
    #
    # Funzioni per avvertire che c'è già uno o più window manager aperto,
    # visualizzare quanti ne sono aperti e opzione per continuare o uscire.
    #
    if [ "$wm_counter" -ge 1 ] ; then
    	if [ "$wm_counter" -eq 1 ] ; then
    		echo
    		echo "Attenzione: c'è già un window manager aperto, se si vuole"
    		echo "continuare premere invio, altrimenti digitare 1 e invio"
    		echo "per uscire."
    	else
    		echo
    		echo "Attenzione: ci sono già $wm_counter window manager aperti, se si"
    		echo "vuole continuare premere invio, altrimenti digitare 1 e invio"
    		echo "per uscire."
    	fi
    	echo "Nel caso si continui, per accedere a questo window manager"
    	echo "da un'altro window manager o una console usare la combinazione"
    	echo "di tasti Ctrl+Alt+Fx in cui x è un tasto compreso tra \"F7\" e"
    	echo -n "\"F12\"............"
    	read option
    	if [ "$option" -eq 1 ] ; then
    		echo
    		exit 1
    	fi
    	`startx -- :$display`
    	exit 0
    else
    	`startx`
    	exit 0
    fi
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  6. #26
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    Premetto che le note sulla GPL e le varie esclusioni di responsabilità non sono per fare il figo ma perchè, nonostante ho reso supersicuro l'uso di questo programmino, in un certo senso anche di più di startx, però non si sa mai

    Funziona benissimo con la Slack (9.0 e 9.1), aggiungo che ero indeciso tra un costrutto "case" e alcuni degli "elif" che si vedono, però, visto che la sequenza ha dei motivi ben precisi, per motivi di gestione e di sicurezza ho preferito questi ultimi.
    Essendo un newbie della programmazione incoraggio come al solito critiche a volontà!!!

    Byezzzz
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  7. #27
    Luigi grazie...per i ringraziamenti...ormai definirlo un semplice script mi sembra riduttivo non ti pare? Ti ringrazio per i suggerimenti che mi hai dato....sto studiando sodo. Spero presto di tirarne fuori qualcosa.

    Ciaux
    Slackware 10 powered
    FreeBSD 5.1
    Libranet 2.7

    Happy Slacking...and have fun!!

  8. #28
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    Figurati Velenux, grazie a te, sto approfondendo anch'io questa passionaccia della programmazione , ad esempio nel thread di Nix ho appena inserito un link ad un sito inglese che è utilissimo perchè mostra un'infinità di esempi.
    Ho cercato di rendere comprensibile al massimo questo script anche attraverso molti commenti.

    Mi piacerebbe anche sviluppare lo stesso script in Perl o, ancora meglio, in Python, magari in seguito riscrivo il tutto ripartendo dallo script startx in modo da far gestire le cose direttamente da xstart (però, che fantasia che ho avuto nel nome!!!!!! :gren: )

    Questo comunque è a mio avviso il miglior modo di imparare sia lo scripting di per se stesso che i meccanismi del sistema operativo, cioè, spaccarsi un po la testa su queste cose :gren:


    Ciauzzz
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  9. #29

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.