1. 29

For a variety of reasons, mostly around security, my corporate overlords are willing to give me remote access to work, but only through a Windows desktop workspace.

I’m making a go of it, but I’m struggling like hell. I’m used to working on a Mac or Linux desktop.

  • What do you use for (ssh) remote access? I’m using PuTTY, and it mostly works, but there are a host of annoying problems that grind away at my productivity. In particular, the mouse cursor goes invisible, and PuTTY seems to not be willing to scroll more than a screenful or two of text while I’m selecting.

  • Which IRC client do you use? I’ve been using HexaChat, and again that mostly works, but I can’t get it to have Firefox open web links when I click on them and that’s pretty critical for the way my team works.

  • Would the Windows 10 Linux stuff fix any of this? It’s just possible I may be able to get a workspace with Windows 10 on it. It’d mean a day or so of downtime. Worth it?

Thanks in advance. Posted here as I thought it might be useful to others who might need to make this work.


  2. 16
    1. Disable Windows animations/themes/transparency. On Windows 10: Win+Pause > Advanced system settings > Performance, Settings, Custom, uncheck all the boxes except “Smooth edges of screen fonts”.
    2. Disable tray-icon hiding. Right click the task bar when your cursor is below some tray icon and touching the lowest row of pixels on the screen > Settings > Notification area > Select which icons appear on the task bar > Always show all icons in the notification area > On.
    3. Create your own personal menu. Right click in the same spot as the previous step > Toolbars… > New Toolbar… > Create an empty directory somewhere like c:\users\your.name\mymenu. (Consider picking a short name.) That name should appear on your taskbar. Right click it > uncheck “Lock all task bars”. Right click your custom menu again more times and select these options: Show Title, Show Text, View > Small icons. Drag the double line edge of your custom menu to make it shrink until the » icon appears. Now you have a customizable menu! Right click it once last time and re-check the “Lock all task bars” option.
    4. Memorize this keystroke combination and use it all the time: Win+x
    5. Install the Ditto Clipboard Manager.
    6. Install 64bit git for windows from git-scm.org, even if you don’t use git. It comes with bash, sed, awk, grep, find, etc, plus a decent terminal emulator! The installer has options to associate .sh scripts with bash… I use that option on some of my machines and don’t use it on others. *shrug* UPDATE: it comes with ssh, too!
    7. Install WinMerge. (As of today, that links to the 2.x line. The 3.x line is a re-write which wasn’t ready yet last time I checked, months ago. It might be great when it is ready.)
    8. Install emacs-26 for Windows from the one true source.
    9. Lordy, did you say you are in a VM already, some AWS thing? You may have trouble installing virtualbox… :/ That’s a problem. The things I named are literally the only stuff I use other than a couple standard Debian Sid VMs under virtualbox. The virtualbox-guest-additions package is a must.
    10. UPDATE: I also use notepad++. If you want to use plugins, use the 32-bit version rather than the 64-bit.
    11. UPDATE2: If you have to use Outlook, you may find that OWA searches are more performant and less buggy than the client-side outlook.exe searches.
    1. 1

      Sidenote to your update, at this point I’d suggest taking a crack at Visual Studio Code instead of Notepad++. The plugin ecosystem is more robust, active, wide-ranging, and (in my experience) better performance.

    2. 11

      My first suggestion would be to install VirtualBox, put your distro of choice inside that, and then run it full screen most of the time.

      You could also try the Windows 10 Linux stuff. I haven’t tried it (because I don’t use windows) but those who do say it is pretty great.

      Cygwin would be a very, very remote third. I used it once in $corporate_office_job and the best thing I could say about it was that it was better than nothing.

      Worst case, if your manager can’t or won’t provide you with the tools you need to do your job, you need to move on. Never stay long in a job you don’t love, that’s how you lose your soul.

      1. 6

        My first suggestion would be to install VirtualBox, put your distro of choice inside that, and then run it full screen most of the time.

        This is my life right now. It is decidedly second class; all the corporate-mandated bloatware is still there wasting utterly ludicrous amounts of memory and CPU time, but at least I don’t have to look at it and I can use a decent window manager and terminal environment. I certainly consider this preferable to the Bash-on-Windows features (and far, far better than Cygwin).

        1. 1

          That was my choice for years, too. Most of the times, I ssh‘d into that machine using putty or another terminal emulator. They are not good but you can get the job done. SSH’ing-in also circumvents any input lag, too. Plus side: suspend and resume would work flawlessly with Windows.

          Anyways, I switched jobs since then. Doing Linux only now. Macs serve as ridiculously expensive SSH terminals now. No more Windows.

          1. 1

            Have you noticed significant input lag when running linux fullscreen? Whenever I’ve tried it it’s been too laggy to be usable, but I was running on an AMD FX 8350.

            1. 2

              My 2 cents - a few years ago I had a powerful laptop (one of the WS Lenovos, maybe 16-32GB RAM, i7, etc.) and I tried VMWare (paid edition - company paid for it), Microsoft Hyper-V, and VirtualBox. I could never get rid of, or stop being bothered by, input lag.

          2. 6

            Can’t install VirtualBox. This is a workspace, think something like remote desktop. See above for a link.

            1. 1

              You could also try the Windows 10 Linux stuff. I haven’t tried it (because I don’t use windows) but those who do say it is pretty great.

              WSL is good, but not great. I’ve been using it semi-seriously on my home machine for the past year and half and it’s better than it was, but I’m consistently disappointed in all the terminal emulators. The only setup I’m happy with is running urxvt on Xming. You will be disappointed in file system speed, but that seems to be a Windows thing regardless of WSL.

              1. 1

                Have you tried ConsEmu? https://conemu.github.io/

                1. 1

                  I have. I… do not like it.

                  1. 1

                    I suspect one of the fundamental problems at play here is the fact that many of these tools want to be able to embed things like CMD.EXE or PowerShell and don’t have the native characteristics we associate with UNIX terminals.

                    1. 1

                      Possibly, but I just found ConEmu to be hideously ugly. Personal preference thing, really. Other than its grotesque UI, it seems like a capable terminal emulator.

                      1. 1

                        Ah. Yeah. I’m not so concerned about that :) When you’re trying to make a home in the malarial swamps, first you ensure that you have shelter, then you worry about whether the drapes match the tablecloth :)

              1. 5

                How is this requirement enforced? Can you keep a Windows desktop/VM around to run whatever odd VPN software they have and proxy to your unix machine?

                1. 6

                  That would be handy but nope :) It’s an internal version of this: https://aws.amazon.com/workspaces/

                  1. 1

                    Can you keep a Windows desktop/VM around to run whatever odd VPN software they have and proxy to your unix machine?

                    That’s how I roll, it’s actually pretty fine most of the time.

                  2. 5

                    For all command line needs, go with Gow, Gnu On Windows.

                    For the very limited exposure I’ve had with Ubuntu on Windows, it was pretty good.

                    Is it a requirement that the IRC client is open source? If not, have a look at mIRC.

                    I think that Windows 10 comes with OpenSSH by default now, see this https://www.bleepingcomputer.com/news/microsoft/heres-how-to-enable-the-built-in-windows-10-openssh-client/

                    1. 3

                      Thanks very much I hadn’t heard of GOW. I’ll check out mIRC.

                    2. 7

                      Learn Powershell (Register-ScheduledJob,Get-NetAdapter,Get-NetIPAddress,Invoke-WebRequest,Invoke-RestMethod,Export-Csv,Export-Clixml,Out-GridView…)

                      Install PSReadLine for readline-like keybindings. https://github.com/lzybkr/PSReadLine

                      You can use clink https://mridgers.github.io/clink/ for readline bindings on the vanilla cmd.

                      Install ripgrep and fzf.

                      Use pageant with putty. Also, I suppose this is common knowlege, but you can launch putty from the command line while overriding some parameters of a saved session, like ‘putty -load “Some Session”’

                      AutoHotkey can be pretty useful.

                      PuTTY seems to not be willing to scroll more than a screenful or two of text

                      Does changing the Lines of scrollback in Configuration > Window help things?

                      In particular, the mouse cursor goes invisible,

                      Is “hide mouse cursor when typing” enabled in Configuration > Window > Appearance?

                      1. 9

                        Yeah, “don’t fight the platform” would be my advice. You have to relax and let the Windowsness of it all wash over you. Admittedly, I also find this impossibly difficult, but trying to turn Windows into a poor clone of a poor clone of a poor clone of AT&T Unix is probably a losing strategy in the intermediate run.

                        1. 2

                          I think you get PSReadLine by default recently, as well as ssh (if you enable it).

                        2. 3

                          My friend has a very interesting hybrid setup:

                          You can see how it works on his hacking/ctf/education youtube streams. The one covering the setup is unfortunately in Polish only but the above Google doc describes it fully in Eng.

                          1. 3

                            WinSCP & Xming are quite good, if you can install them. Putty is worth getting used to.

                            1. 3

                              The WSL is very good. The console is a bit shit but screen/tmux fixes that enough for me.

                              For IRC I use emacs+erc.

                              1. 3

                                WSL instead of PuTTY

                                1. 1

                                  This MIGHT just work. Newer version of the provisioned workstation apparently can use Windows 10, I’ll give that a shot on a day when I’m not WFH and can afford the downtime :)

                                2. 3

                                  Someone emailed me this and it’s pretty amazing so I wanted to include it here for posterity: https://conemu.github.io/ - basically it’s a better console for things like WSL SSH, etc. Looks like it smooths a number of the warts I’ve run into with PuTTY or standard CMD.EXE

                                  1. 2

                                    I’m going to give suggestions in a different direction and hope it helps anyways. I haven’t tried these Windows newer than 7 or in some case 8.

                                    1. I don’t know if “Windows desktop workspace” is the same as a remote desktop connection. If yes, you can use a linux client like rdesktop to connect to it and run it in a window from your host (Mac or Linux). So you can work in your host and paste to/from Windows whose remote desktop’s window. At least for rdesktop, I remember clipboard across the two “just worked”.

                                    2. If that’s not an option, at any time, Super+r (for run), wait a bit, type “magnify”, press enter. Click the + if needed.

                                    You may need something with desktop effects (I forget the actual name, Aero?) enabled to work

                                    This worked at least until Win 8. Same thing with “magnify” replaced by “narrator”.

                                    1. You can copy the text from dialog boxes by selecting the box and pressing Ctrl-C.

                                    2. From a regular Windows command line, you can “mark” and then copy/paste to them. “Mark” is one of the options if you click on the icon on the top left. It still annoying to use.

                                    3. Even though it does less, I like Minimalist GNU for Windows better than Cygwin. (And possibly easier to setup with less permissions but its been a while.) I’d probably try to use ssh from the command line within MinGW.

                                    1. 2

                                      I use Cmder with the built-in SSH agent, and it works pretty much like Terminal on OS X (or equivelant on Linux), along with git and other cygwin ports of linux command-line tools. Of course it requires that you can install anything in your environment.

                                      I have only ever used mIRC on Windows, but it was back in the days of Quakenet and games chat, so I can’t talk much about how it works as a productivity tool - it can be modified A LOT, so likely you can find something that works (and it should work with links and other modern stuff).

                                      1. 2

                                        I’ve been working using Linux Subsystem for Windows (LSW, installable via Windows Apps - Features), it runs Ubuntu 18.03 at the moment. Unfortunately no graphics on that, but you can use VcxSrv to run an X server on Windows. There you can run your any terminal you want, and possibly even a DM. Dunno what’s wrong with LSW but building stuff takes ages, looks like forking is horribly slow.

                                        1. 2

                                          mosh+tmux on the remote machine. Msys2 full scren on the external monitor for the terminal. I use tmux sessions extensively. This has been the most reliable set up for me for clipboard and the rest. I use everything else on the remote machine. I have emacs installed on Windows though syncing with the remote session for org mode - I store a lot of hyperlinks in it.

                                          1. 1

                                            I’d not heard of MSYS2. that looks fabulous, thank you VERY much!

                                          2. 2

                                            Git is bundled for Windows as Git bash and includes the most important *nix utilities. I only heard good of it. Once you have WSL on Windows 10 I guess you can have all the important things, you just install Ubuntu or any other supported distro and then WSL emulates syscalls. I don’t know if it support different partitions/filesystems.

                                            1. 1

                                              If somebody has one afternoon to spare, it may be quite rewarding to get plan9port to work on Windows. Since now there is Bash on Windows and the devdraw should be readily portable from the code base of drawterm.

                                              1. 1

                                                Can you install MSYS2? If so, do it and live in its terminal…

                                                1. 1

                                                  It’s not from a UNIX hacking perspective, and also the author is a front end web developer, so take it or leave it. It’s a blog post series documenting switching from mac to windows as a full time development machine.


                                                  1. 1

                                                    I use Linux for pretty much everything, but one of my last job required Windows for development. My setup end up being Cygwin to replicate pretty much my entire Linux environment, sharing mostly the same dotfiles. With Cygwin you can install X11 and then use your favorite Linux terminal (I did use urxvt without any issue). Then you can use Vim, tmux, ssh, irssi just as you would on Linux. I did run into a few crash every now and then due to forking not always working on Windows, but otherwise I was able to live in my terminals the exact same way I was on Linux.

                                                    1. 1

                                                      Update: Thought I’d post what I actually use / works for me.

                                                      Windows 10 WSL’s biggest wart IMO is the lack of anything close to a really good UNIX terminal. If you’re coming from iTerm2 or Terminal.app on OSX or any of the Linux desktops - prepare to be underwhelmed :)

                                                      The escape sequences work pretty well. Be sure you’re starting ConsEmu in WSL mode or you’ll be even more sad. It works well enough that I can run Neovim with Powerline and everything displays properly.

                                                      The big issue is cut&paste. My daily workflow involves cutting and pasting HUGE swaths of command invocation output into web pages (Don’t ask :)

                                                      ConsEmu’s cut and paste functionality is fine for small amounts of text - turning on Text Mode helps a lot.

                                                      However for text selections of more than a couple of pages, the slowness and twitchy-ness make it nearly impossible. So, I found a work-around.

                                                      I do all my serious work inside screen (or tmux for that matter) and both of these tools (only recent tmux versions) offer logging functions that log everything that you see on your terminal as well as every command typed into a file.

                                                      Before every invocation that I know is going to generate scads of output, I remove the old screenlog.0 file and create a new one (Ctrl-b Ctrl-H in screen I think) and then run my command. This generates a screenlog.0 file.

                                                      From my Windows 10 WSL ConsEmu bash prompt, I have an alias that does: ssh unixhost 'cat ~/screenlog.0' | clip.exe

                                                      This results in your entire long command output being placed into the system clipboard and thus ready to be pasted wherever you need it.

                                                      1. 1

                                                        I’m happy with WSL on Windows 10 for all of my unix-y stuff on Windows needs. I’d say I actually prefer that to running a bare-metal linux install on my own hardware. I run the bash terminal through the Cmder command-line interface, and it works fine with Tmux, Vim, and every programming environment I’ve tried so far, including Ruby, Python, Go, Rust, C, and all related utilities, including ssh, git, and command-line tools. The only issues I have are that switching directories seems oddly slow, and Control-Space doesn’t seem to make it into the terminal.

                                                        For graphical applications, I stick with ordinary Windows applications. Use ordinary Windows web browsers, picture viewers, music/video players, etc.

                                                        One other minor issue - the Linux applications can access the Windows filesystem, but Windows applications can’t access the Linux filesystem. So if you ever want to use any GUI applications on your code, the project has to live in a Windows directory. But then you can’t really use the Linux CLI Git client anymore, because it doesn’t like what the NTFS does with file permissions. So you have to do all of your Git work with a Windows Client. Not to big of a deal IMO, but some may find it annoying.

                                                        1. 1

                                                          For a variety of reasons, mostly around security

                                                          Could you elaborate on their rationale?

                                                          1. 4

                                                            Well, I am not my company’s infosec department, but I think it comes down to not wanting me to connect with our corporate network using a machine they don’t 100% control.

                                                            Honestly I don’t blame them. I can connect with my corporate laptop just fine, but that’s a 13” and I’m partially blind. If I want to use my own machine with its glorious 27” screen, I can use an AWS Workspace to connect to our corporate network.

                                                            1. 8

                                                              Can’t you connect your 13” laptop to your glorious 27” screen?