TeamViewerはGUIが起動されたときにのみ実行されます

TeamViewerはGUIが起動されたときにのみ実行されます

TeamViewer の GUI を起動した後、正常に接続できる TeamViewer が動作しています。しかし、残念ながら、TeamViewer の GUI が起動していないと、コンピューターに接続できません。入手できるすべてのドキュメントでは、TeamViewer デーモンを実行するだけで、teamviewerdマシンにリモート接続できるとされていますが、私の場合はそうではないようです。

TeamViewer GUIなし(teamviewerdのみ)

出力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

出力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

TeamViewer GUIを起動すると

出力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

出力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

ご覧のとおり、GUI を起動すると、デーモンのみの場合とは異なり、2 つの接続が確立されます。

答え1

私も同じ問題を抱えており、プログラム自体に問題がある可能性があることがわかりました。私の解決策は、Ubuntu で利用できる gDevilspie というプログラムを使用することです。

メイン ウィンドウと連絡先リストを非表示にするには、プログラムで 2 つのルールを設定する必要があります。 ここに画像の説明を入力してください

TeamViewerの設定方法は次のとおりです

ここに画像の説明を入力してください

ここに画像の説明を入力してください

私が使用した設定は次のとおりです:

TeamViewerの場合:

application_name equals Computers & Contacts 
window_name      equals Computers & Contacts 

スクリーンショットにはそのウィンドウのアクションが表示されます

TeamViewer2の場合:

application_name equals TeamViewer 
window_name      equals TeamViewer 

このルールで使用したアクションは次のとおりです: 閉じる

これは私の TeamViewer の設定方法です。これによりメイン ウィンドウが閉じられ、トレイ内で実行されたままになります。

トレイで実行されているにもかかわらず、表示したい場合、アイコンをクリックして TeamViewer を表示を選択することができません。そうしないと、ただ開いて閉じるだけです。プログラムを開いたり表示したりするには、gDevilspie を停止する必要があります。その点に注意してください。

答え2

拡大する@JohnOrionが投稿したものより信頼性の高い解決策があります。TeamViewer のウィンドウを常に終了するのではなく、プログラムの起動時に 2 つのウィンドウを閉じ、それ以降は閉じないようにします。必要な操作は次のとおりです。

  1. インストールdevilspieしてprocmail

    sudo apt-get install devilspie procmail
    
  2. これを次のように書きます~/.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. いくつかのスクリプトを配置するディレクトリを作成します。 を選択しました~/bin/teamviewerが、好きなものを選択できます。このディレクトリを変更する場合は、手順 2 のスクリプトでも必ず変更してください。

    mkdir -p ~/bin/teamviewer
    
  4. これらの内容を次の場所に書き込みます~/bin/teamviewer/tvwindow(必要に応じてディレクトリを変更してください)。

    #!/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. これらの内容を次の場所に書き込みます~/bin/teamviewer/tvminimizedstart(必要に応じてディレクトリを変更してください)。

    #!/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. これらの内容を次の場所に書き込みます~/bin/teamviewer/vars(必要に応じてディレクトリを変更してください)。

    #!/usr/bin/env bash
    
    DEVILSPIE_PID_FILE="$HOME/bin/teamviewer/devilspiepid"
    REMAINING_WINDOWS_FILE="$HOME/bin/teamviewer/remaining-windows"
    
  7. 実行可能にします。

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

このソリューションを使用するにはスクリプトを実行しますtvminimizedstart:

~/bin/teamviewer/tvminimizedstart

関連情報