TeamViewer solo se ejecuta cuando se ha iniciado la GUI

TeamViewer solo se ejecuta cuando se ha iniciado la GUI

Tengo un TeamViewer en funcionamiento al que puedo conectarme correctamente después de iniciar la GUI de TeamViewer. Desafortunadamente, no puedo conectarme a mi computadora cuando la GUI de TeamViewer no está iniciada. Toda la documentación que se puede encontrar sugiere que ejecutar el demonio TeamViewer teamviewerdes suficiente para poder conectarse de forma remota a una máquina, pero no parece que ese sea mi caso.

Sin GUI de TeamViewer (solo teamviewerd)

Salida de teamviewer status:

 TeamViewer                           11.0.57095  (DEB) 

 teamviewerd status                   ● teamviewerd.service - TeamViewer remote control daemon
   Loaded: loaded (/etc/systemd/system/teamviewerd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sa 2016-04-30 17:01:55 CEST; 11min ago
  Process: 15518 ExecStart=/opt/teamviewer/tv_bin/teamviewerd -d (code=exited, status=0/SUCCESS)
 Main PID: 15521 (teamviewerd)
   CGroup: /system.slice/teamviewerd.service
           └─15521 /opt/teamviewer/tv_bin/teamviewerd -d

Apr 30 17:01:54 rvaio systemd[1]: Starting TeamViewer remote control daemon...
Apr 30 17:01:55 rvaio systemd[1]: teamviewerd.service: PID file /var/run/teamviewerd.pid not readable (yet?) after start: No such file or directory
Apr 30 17:01:55 rvaio systemd[1]: Started TeamViewer remote control daemon. 

 TeamViewer ID:                        123456789

Salida de sudo netstat -ntap | grep teamviewer:

tcp        0      0 0.0.0.0:5938            0.0.0.0:*               LISTEN      1447/teamviewerd
tcp        0      0 127.0.0.1:5940          0.0.0.0:*               LISTEN      1447/teamviewerd
tcp6       0      0 :::5938                 :::*                    LISTEN      1447/teamviewerd

Con la GUI de TeamViewer iniciada

Salida de teamviewer status:

 TeamViewer                           11.0.57095  (DEB) 

 teamviewerd status                   ● teamviewerd.service - TeamViewer remote control daemon
   Loaded: loaded (/etc/systemd/system/teamviewerd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sa 2016-04-30 17:01:55 CEST; 18min ago
  Process: 15518 ExecStart=/opt/teamviewer/tv_bin/teamviewerd -d (code=exited, status=0/SUCCESS)
 Main PID: 15521 (teamviewerd)
   CGroup: /system.slice/teamviewerd.service
           └─15521 /opt/teamviewer/tv_bin/teamviewerd -d

Apr 30 17:01:54 rvaio systemd[1]: Starting TeamViewer remote control daemon...
Apr 30 17:01:55 rvaio systemd[1]: teamviewerd.service: PID file /var/run/teamviewerd.pid not readable (yet?) after start: No such file or directory
Apr 30 17:01:55 rvaio systemd[1]: Started TeamViewer remote control daemon. 

 TeamViewer ID:                        123456789

Salida de sudo netstat -ntap | grep teamviewer:

tcp        0      0 0.0.0.0:5938            0.0.0.0:*               LISTEN      15521/teamviewerd
tcp        0      0 127.0.0.1:5940          0.0.0.0:*               LISTEN      15521/teamviewerd
tcp        0      0 127.0.0.1:5940          127.0.0.1:48475         ESTABLISHED 15521/teamviewerd
tcp6       0      0 :::5938                 :::*                    LISTEN      15521/teamviewerd
tcp6       0      0 2003:72:2d76:2701:46132 2a01:488:2001:1c01:5938 ESTABLISHED 15521/teamviewerd

Como puede ver, al iniciar la GUI hace que se establezcan dos conexiones, a diferencia de solo el demonio.

Respuesta1

Yo también tengo este problema y descubrí que puede deberse al programa en sí. Mi solución fue utilizar un programa disponible en Ubuntu llamado gDevilspie.

Tendrás que configurar dos reglas en el programa para ocultar la ventana principal y la lista de contactos. ingrese la descripción de la imagen aquí

Así es como configuro TeamViewer

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Aquí están las configuraciones que utilicé:

Para TeamViewer:

application_name equals Computers & Contacts 
window_name      equals Computers & Contacts 

la captura de pantalla muestra las acciones para esa ventana

Para TeamViewer2:

application_name equals TeamViewer 
window_name      equals TeamViewer 

Las acciones que utilicé para esta regla son: cerrar

Esto por la forma en que está configurado mi TeamViewer... esto cerrará la ventana principal y la dejará en mi bandeja ejecutándose.

Ahora, aunque esté en la bandeja ejecutándose... Si quiero verlo, no puedo hacer clic en el ícono y elegir Mostrar TeamViewer o simplemente se abrirá y se cerrará nuevamente. Tengo que detener gDevilspie para abrir/ver el programa... sólo tenlo en cuenta

Respuesta2

Ampliandolo que @JohnOrion publicó, Tengo una solución que es más confiable. En lugar de cerrar siempre las ventanas de TeamViewer, simplemente cierra las dos ventanas al iniciar el programa y luego deja de cerrarlas en el futuro. Aquí está lo que tú necesitas hacer:

  1. Instalar devilspiey procmail.

    sudo apt-get install devilspie procmail
    
  2. Escribe esto en ~/.devilspie/TeamViewer.ds:

    (if
        (or
            (and
                (is (application_name) "TeamViewer")
                (is (window_name) "TeamViewer")
            )
            (and
                (is (application_name) "Computers & Contacts")
                (is (window_name) "Computers & Contacts")
            )
        )
        (begin
            (close)
            (spawn_async "~/bin/teamviewer/tvwindow")
        )
    )
    
  3. Cree un directorio donde desee ubicar algunos scripts. Yo elegí ~/bin/teamviewer, pero puedes elegir lo que quieras. Si cambia este directorio, asegúrese de cambiarlo también en el script del paso 2.

    mkdir -p ~/bin/teamviewer
    
  4. Escriba estos contenidos en ~/bin/teamviewer/tvwindow(nuevamente, cambie el directorio si lo desea):

    #!/usr/bin/env bash
    
    source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/vars"
    
    lockfile teamviewerstartup.lock
    
    # read remaining windows
    REMAINING_WINDOWS=$(cat "$REMAINING_WINDOWS_FILE")
    REMAINING_WINDOWS_NOW=$(($REMAINING_WINDOWS - 1))
    
    if [ $REMAINING_WINDOWS_NOW -eq 0 ]; then
        # TeamViewer has started up completely, kill devilspie
        kill $(cat "$DEVILSPIE_PID_FILE")
        # Also remove temporary files
        rm -f "$DEVILSPIE_PID_FILE"
        rm -f "$REMAINING_WINDOWS_FILE"
    else
        # One or more windows to go, write the decremented value to the file
        echo -n "$REMAINING_WINDOWS_NOW" > "$REMAINING_WINDOWS_FILE"
    fi
    
    rm -f teamviewerstartup.lock
    
  5. Escriba estos contenidos en ~/bin/teamviewer/tvminimizedstart(nuevamente, cambie el directorio si lo desea):

    #!/usr/bin/env bash
    
    source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/vars"
    
    nohup devilspie > /dev/null 2>&1 &
    DEVILSPIE_PID=$!
    
    lockfile teamviewerstartup.lock
    
    # Write PID of devilspie process
    echo -n "$DEVILSPIE_PID" > "$DEVILSPIE_PID_FILE"
    # Set remaining to be closed windows to 2
    echo -n "2" > "$REMAINING_WINDOWS_FILE"
    
    rm -f teamviewerstartup.lock
    
    nohup teamviewer >/dev/null 2>&1 &
    
  6. Escriba estos contenidos en ~/bin/teamviewer/vars(nuevamente, cambie el directorio si lo desea):

    #!/usr/bin/env bash
    
    DEVILSPIE_PID_FILE="$HOME/bin/teamviewer/devilspiepid"
    REMAINING_WINDOWS_FILE="$HOME/bin/teamviewer/remaining-windows"
    
  7. Hazlos ejecutables.

    chmod +x ~/bin/teamviewer/tvwindow ~/bin/teamviewer/tvminimizedstart ~/bin/teamviewer/vars
    

Para utilizar esta solución, ejecuta el tvminimizedstartscript:

~/bin/teamviewer/tvminimizedstart

información relacionada