From f39decabf9f4f5443072d3d27293947a1d8cde35 Mon Sep 17 00:00:00 2001 From: Markus Katharina Brechtel Date: Thu, 25 Nov 2021 21:10:57 +0100 Subject: [PATCH] vnc socket workspaces --- tasks/vnc.yaml | 22 ++++++++++---------- tasks/workspaces.yaml | 5 ++++- templates/workspaces/workspace.focus.fish.j2 | 2 +- templates/workspaces/workspace.space.fish.j2 | 22 ++++++++++++++++---- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/tasks/vnc.yaml b/tasks/vnc.yaml index d4ddfc9..5b4771f 100644 --- a/tasks/vnc.yaml +++ b/tasks/vnc.yaml @@ -13,17 +13,17 @@ mode: 0600 force: no -- name: fetch vnc passwd - fetch: - src: ~/.vnc/passwd - dest: ~/.vnc/passwd.{{inventory_hostname}} - flat: yes - -- name: copy vnc passwd files - copy: - src: ~/.vnc/passwd.{{item}} - dest: ~/.vnc/passwd.{{item}} - with_items: "{{ home_access_to_hosts }}" +# - name: fetch vnc passwd +# fetch: +# src: ~/.vnc/passwd +# dest: ~/.vnc/passwd.{{inventory_hostname}} +# flat: yes +# +# - name: copy vnc passwd files +# copy: +# src: ~/.vnc/passwd.{{item}} +# dest: ~/.vnc/passwd.{{item}} +# with_items: "{{ home_access_to_hosts }}" - name: default vnc client options template: diff --git a/tasks/workspaces.yaml b/tasks/workspaces.yaml index efec6b9..712a5fd 100644 --- a/tasks/workspaces.yaml +++ b/tasks/workspaces.yaml @@ -26,6 +26,9 @@ src: workspaces/workspace.space.fish.j2 dest: ~/.workspaces/{{workspace}}.space mode: 0755 - with_items: "{{workspaces|dict2items|json_query(\"[?value.type=='vncviewer'||value.type=='tmux'].key\") }}" + with_items: "{{ workspaces }}" loop_control: loop_var: workspace + when: + - workspaces[workspace] + - '"type" in workspaces[workspace]' diff --git a/templates/workspaces/workspace.focus.fish.j2 b/templates/workspaces/workspace.focus.fish.j2 index 6cf9071..64432ee 100644 --- a/templates/workspaces/workspace.focus.fish.j2 +++ b/templates/workspaces/workspace.focus.fish.j2 @@ -2,7 +2,7 @@ {{ ansible_managed | comment }} {% if workspaces[workspace].type is defined %} -{% if workspaces[workspace].type == "vncviewer" %} +{% if "vncviewer" in workspaces[workspace].type %} i3-msg mode remote {% endif %} {% endif %} diff --git a/templates/workspaces/workspace.space.fish.j2 b/templates/workspaces/workspace.space.fish.j2 index de5241d..577f3cf 100644 --- a/templates/workspaces/workspace.space.fish.j2 +++ b/templates/workspaces/workspace.space.fish.j2 @@ -1,12 +1,26 @@ #!/usr/bin/fish {{ ansible_managed | comment }} -{% if workspaces[workspace].type == "vncviewer" %} +{% if workspaces[workspace].type == "tmux" %} -xtigervncviewer localhost:{{workspaces[workspace].display|default(home_vncserver_display_number)}} -via {{workspaces[workspace].host}} -PasswordFile ~/.vnc/passwd.{{workspaces[workspace].host}} +exec urxvt -title tmux-workspace -e fish -c 'ssh -t {{workspaces[workspace].host}} tmux attach -d -t {{workspaces[workspace].session}}' -{% elif workspaces[workspace].type == "tmux" %} +{% elif "vncviewer" in workspaces[workspace].type %} -urxvt -title tmux-workspace -e fish -c 'ssh -t {{workspaces[workspace].host}} tmux attach -d -t {{workspaces[workspace].session}}' +{% if workspaces[workspace].fetch_vnc_passsword_file | default(true) %} +if not test -d ~/.vnc/passwd.{{workspaces[workspace].host}} + rsync {{workspaces[workspace].host}}:~/.vnc/passwd ~/.vnc/passwd.{{workspaces[workspace].host}} +end +{% endif %} + +{% if workspaces[workspace].type == "vncviewer-ssh-socket" %} + +socat "UNIX-LISTEN:.vnc/socket.anix,reuseaddr" EXEC:'ssh {{workspaces[workspace].host}} socat STDIO UNIX-CONNECT\:.vnc/socket' & +exec xtigervncviewer .vnc/socket.{{workspaces[workspace].host}} -PasswordFile ~/.vnc/passwd.{{workspaces[workspace].host}} +{% elif workspaces[workspace].type == "vncviewer-ssh-tcp" %} + +exec xtigervncviewer localhost:{{workspaces[workspace].display|default(home_vncserver_display_number)}} -via {{workspaces[workspace].host}} -PasswordFile ~/.vnc/passwd.{{workspaces[workspace].host}} + +{% endif %} {% endif %}