TermKit for Windows

UPDATE: This project is no longer maintained as it was not merged into the main project.

I’m working a port of TermKit for Windows, both the client and the server. It is eventually hoped that you’ll be able to remotely administer both Mac and Windows (and Linux if there’s support for it) machines using a standard toolkit.  You can catch the latest source code commits via @WindowsTermKit on Twitter.

Nightly Build: (latest)
Other Versions: available here

Source Code: https://github.com/WindowsTermKit/TermKit

Bug Reporting: https://github.com/WindowsTermKit/TermKit/issues

The list of things to do:

  • Get TermKit reliably working in the WebKit embed.
  • Add native icon support.
  • Add native path support.
  • Improve the terminal loading system.
  • Setup nightly build service.
  • Implement the Windows Service for running Node.js.
  • Work with Steven to introduce cross-platform remote connectivity.

Here’s some lovely screenshots of Windows support in TermKit:

The early TermKit for Windows prototype

Native Icon Support

If you wish to contribute to the project, get in contact with me. Help is appreciated!

20 Responses to TermKit for Windows

  1. Brett says:

    Awesome. Been dying for this.

    Should this build pretty easily in Visual Studio 2010? I had errors a few days ago when I tried…

  2. James Rhodes says:

    A proper nightly build (r000002) is now being built and should be automatically uploaded shortly.

    • James Rhodes says:

      And it’s up. At the moment it needs to be placed in a directory 4 levels lower than TermKit, so for example if you have TermKit at:

      C:\path\TermKit

      with the HTML folder inside this (C:\path\TermKit\HTML), then you’ll need to place the binaries in a folder like this:

      C:\path\TermKit\a\b\c\d\TermKit.exe

      This is because the relative path is hard-coded for debugging (it normally ends up in C:\path\TermKit\Win32\bin\x86\Debug hence the 4 folders required).

      In the future the compiled executables will contain the HTML folder itself so you won’t need to do this, nor will you need to download a copy of TermKit from GitHub.

  3. Josh Rhodes says:

    I was hoping (naively) that I could just run the stuff in the zip file.
    Or that there would be a readme or some kind of documentation.

    I’ve got the zip file..what do I do next?

    When I double clicked the TermKitService.exe file Windows tells me “Cannot Start service from the command line or a debugger. A Windows Service must be first installed (using installutil.exe) and then started with the ServerExplorer, Windows Service Administrative tool or the NET START command.”

    P.s. Nice last name btw

    • James Rhodes says:

      The TermKit Service is not yet implemented; don’t bother with that at all.

      You’ll need to grab TermKit from the GIT repository in any case so that you can run the Node.js server (that means at this point you also need to install Node.js). For this part you can essentially follow the README that Steven has already provided.

      The TermKit for Windows client at this point also does not bundle the HTML and Javascript client files with it, so you need to place it in an appropriate directory according to my comment above.

  4. wishi says:

    Hi!

    Nice work. I built TermKit with VS2008 without any issues. However for node.js on WIndows I seriously recommend to get rid of Cygwin asap. That thing is a slow-poke. There’re native builds for node.js for Windows (http://node-js.prcn.co.cc/#usage). At this point I didn’t get that running, but that should be doable.

    Thanks for the effort.

  5. Fabien says:

    Hi,

    I tried to follow the instructions, the Node.js server is running, but when i launch the Termkit.exe it hangs up at the “starting console…”

    If i put it 4 folders inside the termKit Git root, i get this in the node.js log:
    3 Jun 22:31:55 – Client 5025198559742421 connected
    worker:
    node.js:134
    throw e; // process.nextTick error, or ‘error’ event on first tick
    ^

    worker: Error: No such file or directory
    at Object. (/cygdrive/c/Users/Binou/workspace/TermKit/Node/shell/
    worker.js:9:9)
    at Module._compile (module.js:404:26)
    at Object..js (module.js:410:10)
    at Module.load (module.js:336:31)
    at Function._load (module.js:297:12)
    at Array. (module.js:423:10)
    at EventEmitter._tickCallback (node.js:126:26)

    A little help please !

    • James Rhodes says:

      Hmmm… is the TermKit git root from the WindowsTermKit repository or from the official one? It’s possible that Steven has changed a few things around which is causing the “can’t find file” error.

      I’d suggest checking out the WindowsTermKit repository as that’ll be in a state where the binary will work.

      • Fabien says:

        Okay, i cloned the windows one, but now i get this when running node nodekit.js :

        C:\Users\Binou\workspace\TermKit\Node>node nodekit.js

        node.js:134
        throw e; // process.nextTick error, or ‘error’ event on first tick
        ^
        Error: Cannot find module ‘socket.io’
        at Function._resolveFilename (module.js:320:11)
        at Function._load (module.js:266:25)
        at require (module.js:348:19)
        at Object. (/cygdrive/c/Users/Binou/workspace/TermKit/Node/nodeki
        t.js:10:10)
        at Module._compile (module.js:404:26)
        at Object..js (module.js:410:10)
        at Module.load (module.js:336:31)
        at Function._load (module.js:297:12)
        at Array. (module.js:423:10)
        at EventEmitter._tickCallback (node.js:126:26)

        • Fabien says:

          Ok i had to clone the socket.io repository into the Node folder too, maybe you should automate this (like in the unconed repo).

          Btw, i guess this is “normal” as still in early alpha but most commands hangs up (like two ls in a row, the first one is ok, but the second one crashes) and the node.js console shouts :

          node.js:134
          throw e; // process.nextTick error, or ‘error’ event on first tick
          ^

          worker: TypeError: Property ‘status’ of object # is not a function
          at /cygdrive/c/Users/Binou/workspace/TermKit/Node/shell/processor.js:179:12
          at Object. (/cygdrive/c/Users/Binou/workspace/TermKit/Node/shell/
          command.js:72:14)
          at Object.exit (/cygdrive/c/Users/Binou/workspace/TermKit/Node/misc.js:69:14
          )
          at ChildProcess. (/cygdrive/c/Users/Binou/workspace/TermKit/Node/
          shell/command.js:282:10)
          at ChildProcess.emit (events.js:67:17)
          at Socket. (child_process.js:172:12)
          at Socket.emit (events.js:64:17)
          at Array. (net.js:829:12)
          at EventEmitter._tickCallback (node.js:126:26)

          • James Rhodes says:

            I don’t get those issues at all, and unfortunately, I can’t really help with the Node.js side of things at the moment; right now it’s just a raw clone of what unconed has (and there are bugs in it).

            The alpha 1 milestone will have this all self-contained w/ an installer, so my suggestion is probably wait until then. We’ll also have the Node.js code running on top of .NET so we’ll be able to integrate and deal with these issues a lot better than we currently can.

  6. Brett says:

    After downloading the nightly, are we still required to grab the github source? If I try to run the exe with just the zip, it just hangs on “connecting to localhost:2222″ forever. Tried forwarding that port, but nothing seemed to change. I’m probably doing something wrong with the server setup.

  7. Name says:

    >> Detailed instructions are available from these sources:
    >> Windows (Redpoint blog)

    Where’s these detailed instructions?!

    • James Rhodes says:

      Probably the same place the Windows merge is into the main TermKit code base: not done yet.

      unconed hasn’t worked on TermKit since July or August, and the merge of the Windows code into the main TermKit stream never happened, so I think it’s pretty safe to call this project dead (which is a shame since I really liked the idea).

  8. josh says:

    Got error “require.paths is removed. Use node_modules folders”

    using node v0.6.6 on windows
    “npm install mime” worked ok

    then ran…..
    C:/A/C/node/node.exe C:\A\C\node\node_modules\npm\node_modules\TermKit\Node\nodekit.js

    node.js:201
    throw e; // process.nextTick error, or ‘error’ event on first tick
    ^
    Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
    at Function. (module.js:376:11)
    at Object. (C:\A\C\node\node_modules\npm\node_modules\TermKit\Node\nodekit.js:6:8)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)
    at EventEmitter._tickCallback (node.js:192:40)

    • James Rhodes says:

      This project is no longer active since the maintainer of the Mac version doesn’t seem to be updating his version either.

      Originally the Windows port was going to be officially merged into the main line but that hasn’t happened since the main project is (as far as I can see) dead.

      • Coop says:

        Can’t you maintain and continue or fork it?
        This is the best what happened the command prompt in any system!

        • James Rhodes says:

          I unfortunately do not have the time to maintain TermKit; the hope was once I provided the Windows compatibility layer and it was merged into the main TermKit project there wouldn’t need to be anything else done on my end.

          So no, without it being merged into the main project, I’m not maintaining this port.

  9. On Firefox instead of download link for nightly build I see scrollbar. Where can I download nightly build?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>