tweemux 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemspec +3 -3
- data/MacSetup.md +77 -0
- data/README.md +39 -26
- data/doc-img/osx/add-user.png +0 -0
- data/doc-img/osx/all-users-radio.png +0 -0
- data/doc-img/osx/apple-menu.jpg +0 -0
- data/doc-img/osx/create-user.jpg +0 -0
- data/doc-img/osx/password-assistant.png +0 -0
- data/doc-img/osx/prefs-sharing.jpg +0 -0
- data/doc-img/osx/prefs-users.jpg +0 -0
- data/doc-img/osx/remote-login.png +0 -0
- data/doc-img/osx/unlock-n00b-mode.jpg +0 -0
- data/lib/tweemux.rb +2 -1
- data/lib/tweemux/version.rb +1 -1
- metadata +15 -3
data/.gemspec
CHANGED
@@ -9,8 +9,8 @@ Working.gemspec(
|
|
9
9
|
#:description => Working.readme_snippet(/== Usage/, /== TODO/),
|
10
10
|
:description => 'tweemux host; tweemux at some_machine; plus some more stuff',
|
11
11
|
:version => Tweemux::VERSION,
|
12
|
-
:authors => %w(☈king),
|
13
|
-
:email => '
|
14
|
-
:github => '
|
12
|
+
:authors => %w(☈king Ogredude Spaceghost),
|
13
|
+
:email => 'muchmux@sharpsaw.org',
|
14
|
+
:github => 'PeopleAdmin/tweemux',
|
15
15
|
:deps => %w(),
|
16
16
|
)
|
data/MacSetup.md
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
Here are the steps to set up a `tweemux host`-capable OS X box.
|
2
|
+
|
3
|
+
# One-time setup
|
4
|
+
|
5
|
+
First go to the System Preferences
|
6
|
+
(⌘ + `Space` → `sys<enter>`, or Apple menu → System Preferences)
|
7
|
+
|
8
|
+
![Screenshot of the Apple menu](doc-img/osx/apple-menu.jpg)
|
9
|
+
|
10
|
+
You'll need to find the "Sharing" section. On OS X Lion it's under the 3rd
|
11
|
+
heading, "Internet & Wireless"
|
12
|
+
|
13
|
+
![Screenshot of the "System Preferences" window, pointing at "Sharing"](doc-img/osx/prefs-sharing.jpg)
|
14
|
+
|
15
|
+
On the left you'll see a list of services. In the middle is one that says
|
16
|
+
"Remote Login", and underneath the hood it is actually good ol' sshd.
|
17
|
+
|
18
|
+
![Screenshot of the "Sharing" window](doc-img/osx/remote-login.png)
|
19
|
+
|
20
|
+
|
21
|
+
You can do this next part one of two ways: keep adding to the "Only these
|
22
|
+
users" list, or just add them all. It's your call, but in my opinion it's OK to
|
23
|
+
just do "All users" and then be sure to only add user accounts that are also
|
24
|
+
people you trust to SSH in. After all, if they can log in locally, what's the
|
25
|
+
big deal if they can log in remotely?
|
26
|
+
|
27
|
+
![Screenshot of "All users" radio button selected](doc-img/osx/all-users-radio.png)
|
28
|
+
|
29
|
+
|
30
|
+
Now, you should be set to add your first user.
|
31
|
+
|
32
|
+
# Per-guest setup
|
33
|
+
|
34
|
+
Ask your buddy for their preferred Unix username (that is, what does it say
|
35
|
+
when they run `echo $USER` at a terminal?)
|
36
|
+
|
37
|
+
While you're at it ask what their Github username is, for use in the `tweemux
|
38
|
+
hubkey` step later on.
|
39
|
+
|
40
|
+
Now go back to System Preferences, this time to "System → Users & Groups", or
|
41
|
+
"System → Accounts" if on Leopard.
|
42
|
+
|
43
|
+
![Screenshot of the "System Preferences" window, pointing at "Users & Groups"](doc-img/osx/prefs-users.jpg)
|
44
|
+
|
45
|
+
First unlock n00b mode. You know what you're doing.
|
46
|
+
|
47
|
+
![Screenshot of the Padlock unlocking](doc-img/osx/unlock-n00b-mode.jpg)
|
48
|
+
|
49
|
+
Add a new user by clicking on the little `[+]` near the bottom left.
|
50
|
+
|
51
|
+
![Screenshot of the "Users & Groups" window, pointing at the tiny plus](doc-img/osx/add-user.png)
|
52
|
+
|
53
|
+
Then:
|
54
|
+
|
55
|
+
![Screenshot of Create Account steps](doc-img/osx/create-user.jpg)
|
56
|
+
|
57
|
+
Clicking the key brings up the Password Assistant. Use it to set a large random
|
58
|
+
password: copy the generated password from the Suggestion field and paste it
|
59
|
+
into the two password fields. We won't need to keep track of this password,
|
60
|
+
since all authentication will be done with SSH keys.
|
61
|
+
|
62
|
+
If you're working with a user that doesn't have public SSH keys (i.e., they
|
63
|
+
don't have a working Github account), then you can always fall back to password
|
64
|
+
access. But you have to make fun of them every time they login, so they learn
|
65
|
+
to not be lame. =P
|
66
|
+
|
67
|
+
![Screenshot of Password Assistant](doc-img/osx/password-assistant.png)
|
68
|
+
|
69
|
+
At this point you're on track for the remainder of
|
70
|
+
[Host Setup](https://github.com/peopleadmin/tweemux#host-usage).
|
71
|
+
|
72
|
+
Quickref for those who already read that doc:
|
73
|
+
|
74
|
+
tweemux hubkey unixuser github: githubuser # to get their pubkeys
|
75
|
+
tweemux forward … # to get a public port
|
76
|
+
tweemux host # to start the shareable session
|
77
|
+
tweemux log # to watch them come in. Now you can have them `tweemux on …`
|
data/README.md
CHANGED
@@ -25,10 +25,9 @@ For starters:
|
|
25
25
|
|
26
26
|
gem install tweemux
|
27
27
|
|
28
|
-
Then, create the user on your machine
|
29
|
-
`adduser` or `useradd
|
30
|
-
|
31
|
-
through the System Preferences GUI).
|
28
|
+
Then, create the user on your machine. This process varies.
|
29
|
+
* On decent Unices, it's `adduser` or `useradd` then perhaps a bit of tinkering with `/etc/ssh/sshd_config` (rking uses [this script](https://raw.github.com/sharpsaw/linux-dots/master/bin/brogrammer) to cover both of those tasks)
|
30
|
+
* On OS X, we've prepared a [Sweet MacSetup doc](MacSetup.md) (thanks @[Ogredude](https://github.com/ogredude))
|
32
31
|
|
33
32
|
Now, you can install the 'keyholes' for this user from Github. This means they
|
34
33
|
will be able to get in without manually typing a password, just like when they
|
@@ -38,9 +37,11 @@ will be able to get in without manually typing a password, just like when they
|
|
38
37
|
# or, if their Unix username is their Github username, there's a shorthand:
|
39
38
|
tweemux hubkey rking
|
40
39
|
|
41
|
-
Now, they'll need a route to your sshd port.
|
42
|
-
|
43
|
-
|
40
|
+
Now, for perhaps the trickiest part: they'll need a route to your sshd port.
|
41
|
+
See the [Routing](#Routing) section below for more details, but the short story is: if you're on a
|
42
|
+
machine behind a firewall (and most home and business users are), you have
|
43
|
+
these options: Use a VPN, directly open a port, use a host on the Internet, or
|
44
|
+
SSH port forward. Tweemux provides a tool for this last one:
|
44
45
|
|
45
46
|
In this example, sharpsaw.org is a machine that is not behind the firewall:
|
46
47
|
|
@@ -48,8 +49,14 @@ In this example, sharpsaw.org is a machine that is not behind the firewall:
|
|
48
49
|
|
49
50
|
Then, after your pair can get to your SSHD socket, finally:
|
50
51
|
|
51
|
-
tweemux host
|
52
|
-
#
|
52
|
+
tweemux host # starts the shareable session
|
53
|
+
tweemux log # Optional step: watch the ssh logs for them to come in
|
54
|
+
|
55
|
+
Now they're ready to `tweemux on <yourhost> <your-port>` !
|
56
|
+
|
57
|
+
Keep in mind that most of this setup is one-time or per-user. After you get it
|
58
|
+
going, you just rock along with a `tweemux forward…` and `tweemux host` then
|
59
|
+
they `tweemux on`. Not much more than that!
|
53
60
|
|
54
61
|
## Going Further
|
55
62
|
|
@@ -72,13 +79,13 @@ Now you're down to just:
|
|
72
79
|
|
73
80
|
tweemux on smh
|
74
81
|
|
75
|
-
##
|
82
|
+
## Routing
|
76
83
|
|
77
84
|
Your options are:
|
78
85
|
* VPN. If you're on a business network with your pair, you probably can already `ping` each other's machines. Easy stuff, then.
|
79
86
|
* Directly open a port, such as going to your router config (perhaps at http://10.0.0.1 ?) and setting it to pass the external IP (see `curl ifconfig.me` or http://whatismyip.com ) through to your local box. This is smpler once you get it set up, as long as your location is stable and you have control over the router.
|
80
87
|
* Use a machine on the Internet, that you both ssh into that. Can work very well, but the big downside is that you now have two lagged users rather than only one.
|
81
|
-
* SSH port forward. This is my favorite, but the downside is that you have to have access to a shell account somewhere public.
|
88
|
+
* SSH port forward. This is my favorite, but the downside is that you have to have access to a shell account somewhere public. This is where `tweemux forward local 22 from somebox.com 2323` comes in.
|
82
89
|
|
83
90
|
## No Public Box?
|
84
91
|
|
@@ -92,25 +99,31 @@ There are a few solutions:
|
|
92
99
|
|
93
100
|
- *Use inline comments* to type back and forth. Properly configured shells can also allow you to prefix with a `#` and say whatever you want. The downside is that only one person can be typing at any one time. A custom that helps is if you type what you're saying, then leave a trailing `#` with no space after it to indicate that you're done and waiting on your pair to type. This is a bit crufty, but some people are shy and only want to do the tmux share.
|
94
101
|
- *Use IRC*. If you make a tmux pane and connect it to IRC (or some other text-based chat), both local users plus that shared session can all join the same channel. This provides the person that isn't driving the keyboard to switch to their local chat window and type something for the other person to see. (TODO: build this in as a tweemux feature).
|
95
|
-
- *Use voice*. A much more powerful way to work.
|
102
|
+
- *Use voice*. A much more powerful way to work.
|
103
|
+
* You "can" use Skype, but it's a commercial product and is continuously flaky.
|
104
|
+
* There is also the Google Chat alternative, which is nice in some ways, but also ties you to a commercial entity.
|
105
|
+
* A better alternative is to sign up for a [SIP account](https://ekiga.net/), then get a [SIP client](https://en.wikipedia.org/wiki/List_of_SIP_software#Clients). For Linux, I use (Ekiga)[https://en.wikipedia.org/wiki/Ekiga), and for OS X I use [Telephone.app](http://www.tlphn.com/).
|
106
|
+
* Don't forget, if you can't get the Internetty stuff to work, there's always calling each other on cell phones.
|
96
107
|
|
97
108
|
## TODO
|
98
109
|
|
99
110
|
# PeopleAdmin/tweemux open issues
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
111
|
+
27: `tweemux` with no commandline arguments produces ugly error.
|
112
|
+
25: 1.8 + System-wide install
|
113
|
+
23: `tweemux host` from within session should upgrade to shareable
|
114
|
+
22: Provide higher-level window/font sync functionality
|
115
|
+
21: 'tweemux capabilities at ___'
|
116
|
+
19: If tmux isn't in the path when you SSH in, nothing will work. 5
|
117
|
+
18: Rogue Mode 3
|
118
|
+
17: Mention Google Voice/Hangouts 1
|
119
|
+
16: Promote regular tmux session to tweemux
|
120
|
+
15: Guest usage to connect to a different socket path
|
121
|
+
14: Add pseudo_restart of 'retry'
|
122
|
+
12: Mosh possible
|
123
|
+
11: Basics of Tmux
|
124
|
+
8: Port fw without ssh [enhancement] [question]
|
125
|
+
7: adduser/useradd call [enhancement]
|
126
|
+
4: brew install someurl [Mac]
|
114
127
|
|
115
128
|
## Thanks to
|
116
129
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/tweemux.rb
CHANGED
@@ -19,9 +19,10 @@ class Tweemux
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def understand args
|
22
|
+
args = ['Help'] if args.empty?
|
22
23
|
args = ['Version'] if args.first[/^--?v/i]
|
24
|
+
args = ['Help'] if args.first[/^-/]
|
23
25
|
# dash args are out of fashion!
|
24
|
-
args = ['Help'] if args.empty? or args.first[/^-/]
|
25
26
|
action = args.shift
|
26
27
|
klass = Tweemux::Action.const_get action.capitalize
|
27
28
|
klass.new args
|
data/lib/tweemux/version.rb
CHANGED
metadata
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tweemux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- ☈king
|
9
|
+
- Ogredude
|
10
|
+
- Spaceghost
|
9
11
|
autorequire:
|
10
12
|
bindir: bin
|
11
13
|
cert_chain: []
|
@@ -16,7 +18,7 @@ description: ! 'For Remote Pair Programming: A handy script to create-or-join a
|
|
16
18
|
|
17
19
|
|
18
20
|
tweemux host; tweemux at some_machine; plus some more stuff'
|
19
|
-
email:
|
21
|
+
email: muchmux@sharpsaw.org
|
20
22
|
executables:
|
21
23
|
- tweemux
|
22
24
|
extensions: []
|
@@ -27,9 +29,19 @@ files:
|
|
27
29
|
- Gemfile
|
28
30
|
- Guardfile
|
29
31
|
- LICENSE.txt
|
32
|
+
- MacSetup.md
|
30
33
|
- README.md
|
31
34
|
- Rakefile
|
32
35
|
- bin/tweemux
|
36
|
+
- doc-img/osx/add-user.png
|
37
|
+
- doc-img/osx/all-users-radio.png
|
38
|
+
- doc-img/osx/apple-menu.jpg
|
39
|
+
- doc-img/osx/create-user.jpg
|
40
|
+
- doc-img/osx/password-assistant.png
|
41
|
+
- doc-img/osx/prefs-sharing.jpg
|
42
|
+
- doc-img/osx/prefs-users.jpg
|
43
|
+
- doc-img/osx/remote-login.png
|
44
|
+
- doc-img/osx/unlock-n00b-mode.jpg
|
33
45
|
- img/tweemux.blend
|
34
46
|
- img/tweemux.png
|
35
47
|
- lib/tweemux.rb
|
@@ -59,7 +71,7 @@ files:
|
|
59
71
|
- test/tweemux/action/version_test.rb
|
60
72
|
- test/tweemux/action_test.rb
|
61
73
|
- test/tweemux_test.rb
|
62
|
-
homepage: https://github.com/
|
74
|
+
homepage: https://github.com/PeopleAdmin/tweemux
|
63
75
|
licenses: []
|
64
76
|
post_install_message:
|
65
77
|
rdoc_options: []
|