Windows gets a new terminal
techcrunch.com
techcrunch.com
If I were an engineer in Apple's OSX group I would see this as the horde amassing an army on the border. Bit by bit, Microsoft is going down the checklist of why someone would use a Macbook pro rather than a Windows laptop for their daily driver and erasing the advantage (or at least mitigating it to the best of their ability).
This will never convert the die hard OSX fans to use Windows laptops, like the OSX features could never convince die hard Windows users to use Macbook Pros, but the real prize here is the large bulk of users who aren't die hard Apple or Windows fans and just want to get their job done on one laptop reliably.
Apple's latest earnings report re-iterates that they aren't investing in the Macbook Pro or OSX in any meaningful way. Microsoft's success with the Surface Pro series against the Macbook Pro has shown that good electrical engineering can be bought and if the software is good enough, it can remove the last objections to the Windows laptops.
I see Linux as a big loser here too as the opportunity for a Linux desktop, for the bulk of the users, recedes further into the distance with two capable, and supported, offerings from larger players to choose from.
I've got one of everything it seems, and I had a Macbook Pro as my daily driver starting at Google in 2006 through my exit from IBM at 2015. I bought a SurfaceBook when they announced them for the drawing experience and laptop that had more capability than my Macbook Pro. I then tag teamed between them until I got the Surface Pro 4 with the same drawing experience, but lighter than a Macbook Air and with WSL and a third party X server a decent Linux/UNIX like development environment.
I still haven't replaced my Macbook from 2015 with the various things that Apple has thrown out there, the keyboard issue, the track bar issue, the lack of drawing, the lack of any compelling reason to upgrade. I still use it for Xcode for the iPad app I am doing in my spare time but use it less and less.
The new terminal will make it easier to not use the Macbook. If Microsoft starts bundling an Xserver for the occasional windows app it would make it even easier to stay on their platform.
I can't tell if Apple sees this as a threat to their business, or just doesn't care anymore about that part of the business and so they are willing to cede it to Windows as the "portable" development environment supported by an enterprise vendor.
When I can do this in windows (unix command line): cat somefile.txt | sort | uniq > output.txt, then it'll become a threat. Otherwise, Microsoft should fork a version of GNU/Linux and port all of their apps and GUI. They need to stop trying, they had their chance but may never achieve equality when it comes to the Windows Vs. Unix/GNU-Linux command line.
This is my opinion and observation.
Peace
I take it you haven't tried WSL in the last couple of years?
Not only can you do operate your typical one-liners but if the package is basically command line driven you can just apt-get install it and go.
There is a remaining wart that I hit from time to time, if I have a git repo that I want to talk to both from the WSL window and from a Git Shell (Cygwin app), the line endings get tweaked. It can be managed but it is still annoying.
cat .\somefile.txt | sort | unique | add-content "sortfile.txt"
I mean really it's not that hard to learn the actual PS syntax instead of the aliases: get-content .\somefile.txt | sort-object | get-unique | add-content .\sortfile.txtin cmd.exe
type somefile.txt | sort /unique > output.txt
or in powershell
type file.txt | sort -unique
Powershell is obscenely powerful, it is equal to anything Bash can do plus:
1. It sends objects instead of streams, so instead of relying on fixed width output and string splitting, you can specify which column(s) of output you want from a tool directly
2. It can pull data from all sources of sources, including databases, WMI, COM sources and more.
3. Fully plugged into automation for servers, rich auto-complete, and a native ecosystem that is designed to all work together.
4. It can call into .NET libraries
But even cmd.exe can handle outputting text and sorting it!
Every time I've dove into Powershell, wow, impressed, but I have over 2 decades of experience with cmd.exe!
Yeah, modern shells should stop pretending that everything is text. That's ridiculous. Powershell is doing a good job here.
As for power, powershell is to weak compared to Python or Ruby, too few libraries and fancy stuff, at least on unices. Maybe it could compete with Racket, but Racket is a much nicer language IMHO.
> short-circuit operator are completely broken.
What do you mean ? This kind of thing ?:
> 0 -and (Write-Host 2)
False
> 1 -and (Write-Host 2)
2
False
Not typically used in PowerShell, its bash paradigm IMO. There are objects here, so we throw error objects mostly and combine lines differently.There are a lot of responses of the form "you can do this similar command in WSL/PowerShell/etc.," where that similar command will not run on a standard Unix-based system. I think that misses half of the point. One of the reasons a lot of programmers use OS X is specifically because you don't need separate sets of commands for the desktop and Linux cloud server (obviously, Linux gets even closer).
It's been possible to do a lot of stuff from the Windows command line for a long time. The problem has been that to do so effectively, many teams have to maintain a .bat alongside the .sh that will be used in production.
The opposite also works. Powershell has had a Linux port for a bit now. There's no reason you couldn't use use Powershell scripts to deploy to Linux servers if you wanted to.
Based on the peer comments I was replying to, a lot of Windows developers aren't even aware of this ability (hence my comment).
Thanks for clarifying!
bash -c "cat somefile.txt | sort | uniq > output.txt"
Since bash handles pipes and redirection in this case, it preserves Unix semantics exactly. And since WSL can see all your filesystems (they're mounted under /mnt/c, /mnt/d etc), and bash.exe maps current working directory, this works in any directory.This is much more tedious when you have to specify paths, because they have to be mapped explicitly, much like cygpath in Cygwin:
bash -c "cat `wslpath -u 'C:\Temp\somefile.txt'` | sort | uniq > output.txt" me@thinkpad:~/
$ cat somefile.txt | sort | uniq > output.txt
me@thinkpad:~/
$ uname -r
4.4.0-17763-MicrosoftEach of the last few major updates have added more and more control over this. The latest release is allowing even more user control.
Windows already tries to track active use times for the user, and is capable of waking a machine up in the middle of the night, install updates, and then go back to sleep. Improvements to session restore makes this almost seamless.
At some point MS, as the maker of the largest consumer OS, has a responsibility to patch critical vulnerabilities. Balancing the need to keep users secure with the inconvenience of a reboot, and the feelings of lack of control that come with it, is not an easy task.
On the opposite side, I've been frequently annoyed when Windows, unable to install an update, turns my computer on in the middle of the night, fails to install, and keeps the machine on. Lovely way to waste electricity, error messages are silent, and I had to run a command line power management tool to determine why my machine was waking up every night at 1am.
Seriously, YOU DUDE, who lead this at MS - just go, get fired, whatever !!!
The entire industry has moved to a "less testing, more releases" mentality. Not so bad for websites, where the damage is sandboxed by the browser, but IMHO it is unfortunate this mentality has pervaded everything.
I totally get rapid release cycles, I've lead teams that releases C++ code every 3 weeks! But we had a A+ solid test team backing up every one of our releases, and each of those releases got 2 weeks of testing done to them before they went to beta.
Best team I ever worked on automated every single bug that they have ever seen into a regression test. That mentality requires having a test team that is equal in size (and technical capability!) to the development team, and the current trend of "developer tests" tends preclude such thorough testing practices.
We live in a world where car entertainment systems can lock-up and reboot themselves and where headphones need firmware updates.
But its not only about bugs, MS should not mandate new features on me, only security fixes. In one of my previous updates my camera stopped working so I couldn't use any IM any more. Tried to fix it for days in vain. Then latest update returned it so I realized that first time they simply turned it off by default (for paranoid people I guess that cover their camera with a tape; I found a setting after reading a changelog). Why ? WHy? WHY ? Why turning off camera FFS ? Or any other stupid decision like keeping windows.old for months with all those GBs of unused space ...
You are totally right about it - web apps need this, browser is their OS. Normal OS doesn't. Even phone doesn't. At least leave me an option.
Eh, it depends.
Microsoft got seriously dinged in the press, and by customers, for their long release cycles. MacOS and all the mobile OSes, offered seriously cool new features on a regular basis! Windows looked stale by comparison.
And some of the new features are sweet, such as the new terminal! Heck having native OpenSSH support built into the OS is wonderful! Being able to iterate on search so it now actually works! The improvements to OneDrive and the underlying file system. These are all great features that have rolled out with Windows.
(Media controls from the lock screen, improvements to Windows Snap, better BT pairing.)
Meanwhile Android is set to kill file managers, and Google Music can't differentiate between differently named files that have blank ID3 tags, necessitating my using a file manager to play my MP3s. (That one seriously throws me for a loop, just show me the file name as a fallback!)
(I should just get around to manually adding ID3 tags, but how is a regular end user supposed to figure out what is happening?)
Honestly most of the time rolling Windows updates mean my OS just gradually gets better. I don't notice it unless things go wrong, but isn't that how it always is with software?
Make features. Make them optional, non-imposing and non-surprising on existing systems. Maybe do reverse on new installation. You can be nice and respect existing people choices.
> Meanwhile Android is set to kill file managers
Well, there is always Total Commander which has a decent music player too. But yeah, its like Exploder era again.
> And some of the new features are sweet, such as the new terminal! Heck having native OpenSSH support built into the OS is wonderful!
Argh... sweet new terminal 20 years behind everybody else. What else ? Notepad update ? Paint ? Some other completely granny stuff ?
Why is this integrated into OS update is beyond me honestly. Adopt decent package manager and update tools on its own (Chocolatey as an example). I don't need OpenSSH most of the time. When I need it, its `cinst openssh` away. Why is that a problem ?
Actually, I always cringe when OS updates brings awesome new "features". OS update should be all about kernel, file systems , drivers and other low level shit. Package manager can cover everything else.
> I don't notice it unless things go wrong, but isn't that how it always is with software?
It shouldn't be like that with OS. OS is not a typical software. Murphy always worked like a clock for me, so now, I only update OS (Linux too) when I am on vacation :) and have time to lose. Or I can revert ASAP (VM, BTRFS...)
And there are other people running Debian Stable.
I don't think there's anything wrong with Microsoft's fast release cycle, but I think there's lots wrong with forcing everyone on that cycle. Microsoft already makes LTSB/LTSC—why is it limited to enterprise customers? Microsoft seems to be afraid of people actually buying LTSC and preferring it...
https://www.windowscentral.com/windows-core-os
One of the big things Microsoft has been working towards with Windows Core OS is an improved Windows Update system that installs updates in the background and requires less than a minute to restart once those updates are ready to do so.
How it works is very similar to how Android and Chrome OS do updates today. On those platforms, the OS runs in two separate mirrored partitions, and when an update is ready to install, the update is downloaded and installed to the offline partition that you're currently not using. When that's done, the OS will ask you to restart, and while it may look like you're just rebooting, what's actually happening is you're booting into the partition that just spent 25 minutes installing an update in the background.
Windows Core OS keeps system updates to under a minute.
It boots right up, as if there was never an update waiting to be installed, and that's because all the installing has already been done while you were busy using the other online partition. Now, you've booted into the partition where the update is installed, and the partition you were just in becomes the offline partition for newer updates to be installed to down the line.
This should solve one of the big issues Windows has when it comes to updates. Updates can usually take anywhere between 5 to 30 minutes to install, and even longer on older devices. Windows Core OS solves this problem by making it so the user isn't unable to use their PC for no longer than a minute. It simply restarts like normal, and you're back up and running again.
Santorini is the codename for Microsoft's forthcoming 'Windows Lite' OS designed for laptops and 2-in-1s.
Microsoft is building out Santorini as the version of Windows Core OS that runs on consumer and education foldable PCs, laptops, and 2-in-1 tablets. It may even eventually show up on Microsoft's mythical Andromeda device. It's a new take on what Windows can be, introducing a brand new user experience that's a little more like Chrome OS and less like old-school Windows. It has deep ties with web experiences and puts universal Windows apps front and center, with the ultimate goal of having everything in the Microsoft Store runnable on Santorini.
Santorini features a centered taskbar experience, similar to that on the Surface Hub 2X. There's a simple app launcher that doesn't feature live tiles, which lists your installed apps from the Microsoft Store or pinned websites. I'm also told that Windows Sets has a pivotal role in the overall Santorini experience, with apps and websites running under tabbed windows that also get grouped as such in the taskbar.
Didn't they say recently that Sets is not being developed, partly because it was too closely tied to non-Chromium Edge? Which makes me wonder how much else of that is still being developed.
[1] https://www.thurrott.com/windows/windows-10/205364/is-micros...
[2] https://twitter.com/richturn_ms/status/1119646566782910464
This should be actually fucking illegal. Yet another nail in the Windows 10 coffin, then. It will never be on any of my machines. Never. The level of shit they think we will put up with is utterly outrageous.
Windows has a slew of options. A giant dialog popped up asking me if I wanted to enable installing updates during quiet hours. I selected yes. I was given choices for when quiet hours are. The OS also has options to auto-detect quiet hours.
The idea is good, I just wish the implementation was foolproof. Then again the desktop it doesn't work on is ancient and has been updated from Windows Vista to 7 to 10, so it is a bit finicky. The various update mechanisms work fine on my other machine.
Windows 10 telemetry is not an oopsie or one time thing. It's an entire saga that got wide press coverage every time Microsoft was playing dumb, diverting attention or making up excuses and generally being asses. Windows 10 updates completely ignoring the wishes of the owner of the PC is not a one time thing either.
Microsoft has simply lost respect for its customers, it thinks it can throw some open source bones over the fence to keep the nerds happy and switch to SaaS, this time copying Google instead of Apple. They deserve zero respect for that, no matter how many terminals they include in their OS.
Too bad Paul Graham doesn't give a rat's ass. He has the opportunity to create something beneficial to world society here but doesn't care to put in the money and thought to figure out how to make it work.
Serious note: forums decay. Entropy in social media, and forum denizens exists. Such a result is unsurprising,
Calling names like "herd" and "groupthink" doesn't contain information either; it's just bragging. I wrote about this the other day: https://news.ycombinator.com/item?id=19791293
Except for all the work it destroys in the process. Many productive workflows can't just be closed and restarted at random - pretty much anything in a terminal, for example. This new one seems great, but it can't be any different in that regard, as it has to run the same command line tools.
Effort should be spent on resuming where you were after a reboot.
Some things cannot simply be resumed, I know. However, some things can.
There is an attitude at my workplace which I can only summarize as "I automate anything that helps my customers, and I will not automate anything that helps me."
We're smart people. Why are we simply giving up and throwing in the towel when it comes to reboots?
Too few people have heard of the "screen" command maybe. I was using it 20 years ago to reconnect to terminal sessions. I'm told that tmux does similar things, but I don't know if that's true.
Because if I leave something running over night, and Windows reboots without asking me because it thinks it can resume the task, and Windows is wrong, then I have to wait until the next evening.
I would have no problem with any of this stuff if Microsoft gave the user control. They don't, and the steps they've taken so far don't go nearly far enough.
It's not like it hits you without warning. You also have the ability to manually reboot whenever you like(!) and prevent surprises that way.
If you, or the system, initiates a reboot/shutdown, and all apps that you have running are such apps, the reboot will just happen, with no further confirmation.
If, however, any app that you have running does not assert that it can be perfectly restored after reboot, then the OS will pause the reboot process and prompt the user to confirm that they want to shut down said app. If the user says no, the reboot is aborted. If the user does nothing (or isn't there to respond), the computer just stays stuck on that prompt forever.
I don't see anything wrong with such a "conservative" auto-detection system, personally.
Microsoft would have to actually implement it that way, though.
Not many apps take advantage of that, however.
All in all, not too shabby.
Problem is, apps can lie.
The iPhone does get annoying about updates, but it always is still up to you when it happens.
Sorry, but I don't buy that. If Microsoft did this, I think it was for a reason. It's very easy to sit on HN and opine about how Apple can persuade iPhone users to upgrade. But we're not the ones at Microsoft with the job of dealing with the reality of millions upon millions of desktop computers that simply aren't ever being patched, no matter how hard we prod our users, with the result that they are being exploited en masse, used for criminal purposes, and as a result our reputation is getting trashed and governments and other powerful actors are demanding we do something to fix this problem.
They may have all the reasons in the world, but Windows is objectively worse for me (and I believe other power users) in this regard than other OSes.
I'm not sure why you think it's a good idea to defend a company that takes away _your_ control of your computer, and how the other computers having been exploited makes you feel better about losing _your_ work (when you are presumably qualified to avoid and/or detect being exploited on your own). Perhaps you're lucky to not have had trouble with this yet?
Hah, say that to my iPhone - every time there is a new update it automatically downloads it (further crippling my already low storage) and keeps asking me for my passcode every few hours. One wrong tap and there goes my phone for the next 10-15 minutes.
To be fair, how could you have known that? It only says so when asking for your passcode, after all.
A) When it thinks it is not in use, not so easy to predict.
> To be fair, how could you have known that? It only says so when asking for your passcode, after all.
Yes, but it actually presents the prompt twice, and one wrong tap reboots the device with no way of aborting the process which on a good day takes 10 minutes on my phone.
I think the problem already has a solution: no automatic reboots. Tell me it's needed and I'll sigh, do what I need to to save my state, then do it myself.
That's EXACTLY what it does now. I have never been surprised by a reboot on any computer I log into and actually use.
Which I know will fail - my laptop has been failing to update for the past year or so, but windows still insists on restarting my computer so it can fail the update again.
_Sometimes_ using the "defer updates for a month" will work. Other times, windows will completely ignore it and restart in the middle of my work day.
I've been using exclusively Windows 10, for 2 years at work and more at home, not once had I an uncontrolled reboot. Perhaps rebooting at least once a week help.
I don't want to start any flame wars but I happen to do a lot of pair programming sessions with people (I'm a freelance dev) and a number of people have said they were jealous of my set up and are thinking about a Windows laptop for their next upgrade. Not because my set up is special or super cool, it's just their Mac set up is all sorts of broken and buggy. I can hear legit sadness in their voice.
You don't need MS to bundle an Xserver by the way. Just download VcXsrv for free https://sourceforge.net/projects/vcxsrv/ and be up and running in a few minutes. I use it mainly for flawless zero configuration clipboard sharing between Linux apps running in WSL to work with my Windows clipboard, but graphical apps run ok too (I even tried running i3 through it which was usable but too limiting with multiple monitors).
I guess I just wanted to really say that Linux based / Docker development on Windows is very much possible even today on the stable version of Windows 10, and WSL v2 is just going to make it a lot better than it already is.
I haven't been this excited over a new OS / OS feature since Windows 7 was first released.
Only problem is the June release is for insiders, not stable, and insiders requires sharing A LOT of private info with Microsoft (unacceptable IMO). It might not be until October 2019 or even April 2020 before this hits the stable channel of Windows 10. Doh.
I'm normally very happy with the dev experience on my 2016 MacBook Pro. I run iTerm2 (multiple split panes in a window), zsh/ohmyzsh, homebrew, and VSCode. The new APFS filesystem is insanely fast, especially when combined with VSCode's ripgrep-based text search. I watch my Windows-based colleagues start a VSCode text search in our repo and it takes 10-15 seconds to complete. Me - it's usually less than 5 seconds and often instant. Also, moving/copying/deleting large directories (i.e. 25k+ files) is unbelievably fast.
So macOS is great, in my opinion. But I'm often frustrated with this machine: (a) the keyboard is unreliable - certain keys develop habits of not responding (the `fn` key is currently driving me round the bend), (b) it crashes every time the battery runs low, and (c) my corporate policy installs Sophos which sometimes slows it to an absolute crawl.
From many developers' perspective, Windows' greatest downfall is that it's, well, still Windows. There is so much legacy to maintain, and so many ways that it differs from macOS and Linux at low levels. WSL and the new terminal/PTY are making inroads, but if Microsoft would only fork Debian and build their own supported distro, I can guess that's where we'd all be going very soon. What if they forked Wine as well and built a supported Windows compatibility layer on top?
We switched from XAMPP and Eclipse for PHP development to WSL with VSCode and so far the transition has been really good. The only problem is that OS X still has a way better free MySQL client in the form of Sequel Pro compared to Windows which only has MySQL Workbench and HeidiSQL for the free options. I wish there was a better SQL client we could use.
Dbeaver, sqlyog (free edition) are a few more free ones that come to mind.
I think this must be due to the NVMe drives they use in MacBook Pros. APFS has some performance overhead that makes it slightly slower than HFS+ (but I do think you get other improvements, when copying files etc.).
They got windows+linux users in the first place by pre-installing curl+ssh, now their version of ls, find, and bash are all holding back those same windows+linux users.
Another example is Ansible. Since my entire dev environment is in WSL and WSL is running Ubuntu 18.04, I can reuse all of my exact Ansible roles that I use on a production Ubuntu 18.04 server. They work just the same in WSL, so setting up my dev environment involves nothing more than reusing roles I've created for production.
Thanks for your thoughts on WSL & the new Terminal.
Re. release mechanisms, etc: Terminal will be delivered via the Store so we can ship out-of-band.
We're aiming to deliver new Terminal preview builds every 2 weeks or so which, since we're delivering via the Store, will auto-upgrade everyone soon after each release.
Re. Insiders: We do NOT gather any personally identifiable information. We only collect anonymized statistics about some of the features you use and/or issues you experience. Why? To ensure that we can find and fix issues as effectively as possible.
For example, with WSL, we collect the number of times an un-implemented syscall is called, or # of times a syscall returns an unexpected error. We couldn't care less WHO experiences these issues, only how OFTEN they occur. This info (esp. combined with bug reports in our repo, etc.) has been essential in helping us prioritize which syscalls are being called, which we've implemented, which are failing, and thus, which we need to pay attention to. Without this info, we wouldn't have been able to make WSL as good as it is.
We understand the community's concern about data collection - heck, EVERYONE should be - but in the general scheme of things, I think it fair to say that Microsoft's telemetry data collection is pretty well contained and is not egregious.
If you'd like to see what telemetry is being collected, on your machines, this may be of help: https://docs.microsoft.com/en-us/windows/privacy/diagnostic-...
HTH.
The last time I tried to install insiders it mandated that I sign into Windows with a real Microsoft Live account, which requires an email address sign up.
Where as the stable version of Windows allows you to create an offline account.
If I sign in with a Microsoft Live account, now you can associate my email address to my OS usage stats. Isn't that the definition of personally identifiable data?
Also, you may have linked to the wrong sub-link. The page that lists what's tracked for insiders is this one I think? https://docs.microsoft.com/en-us/windows/privacy/windows-dia...
It mentions "User ID -- a unique identifier associated with the user's Microsoft Account (if one is used)". It also mentions collecting a bunch of low level network data that look questionable, such as IP addresses flowing through network devices. Isn't that saying "logs every website you visit"?
Then it mentions it logs every app I open and how long it was opened for, and even what I search for in those apps. I didn't go through the whole list in detail but that was what I saw in a 60 second scan of the page.
But on the topic of WSL, are you saying if we run Windows stable we'll be able to get and continuously update WSL v2 from the store? That would be neat.
WSL and Hyper V(really docker for windows on top of hyper v) has gone a long way to stop me from switching to linux for development.
Apple has been making huge mistakes in their Mac strategy. From the outside it seems they got drunk on the iPhone success.
With the exception of the iMac 5K and maybe the Mac Mini, I'd say the complete Mac line of products is now in worse shape than ever. It started decaying around 2013 with the trashcan Mac Pro and the gradual death of the Apple pro apps (Motion, Aperture, Final Cut, Logic, etc).
Regardless of the mediocre state of Mac hardware I love macOS. Although I agree that Windows is in great shape now and is only getting better.
I hope Apple is changing course and it's only taking so long because it is difficult to steer a huge ship into a new direction.
The keys were a concave curved shape so they were comfortable to your finger pads and tactile so that you could center your finger on they key by touch.
Since then, it's been form over function.
I don't see this as a loss for Linux. I see it as Microsoft bridging a gap (albeit a gap they deliberately created) that Linux hasn't yet. If I could do it the other way around (Linux running windows) then maybe I would but when I created this setup some years ago I couldn't so... Yeah idk this way Linux at least gets to be a part of my life.
Does it matter? According to market share numbers osx/macos' is ca. 14%. Developers/others who care about terminal environment must constitute a tiny share.
You forget that the battleground in their business is the smartphone, capitalizing on the gains in smartphones and accessories is what will make the most profit. Additionally Apple is well fomented against the PC market taking over, all over Silicon Valley, Macs (Unix) are a clear preference for getting work done.
Apple is so off the charts popular, that their events even take the world's attention. The glitz, the buzz, the beast marketing machine can't be defeated.
All they do for desktop and laptop is just tell the public number of git branches they made as number of new features added.
I could still use Snow Leopard if they kept patching it for recent hardware.
Loss of a visionary is a way for a slow death. When are they going to wake up and be innovative again?
"WSL 2 will also support running Linux Docker containers natively, so that VMs are no longer required."
Great news!
They could either go the syscall emulation route (as in current WSL), or possibly the "thin hypervisor" route, the fact they're talking kernel versions makes me think that may be what they're planning...
(I work at Microsoft but have no inside knowledge on this; just speculating.)
Whilst it doesn't explicitly mention Virtual Machines or Hypervisors, I'd read this as making use of that kind of technology with some additional tech. for interop with Windows to the level of WSL currently.
EDIT: and here's the confirmation https://devblogs.microsoft.com/commandline/announcing-wsl-2/ it's a VM
I've been running WSL for over a year with Docker for Windows and while the experience feels native to WSL (WSL has no problem running the Docker CLI and connecting to Docker for Windows) it'll be a very nice perk to just apt install Docker in WSL and not deal with DfW.
Unfortunately the link https://aka.ms/build2019kernelannounce doesn't seem to work for me.
The whole thing of WSL was it that contained no Linux kernel at all.
Today, Linux Docker containers on Windows rely on a VM running on Hyper-V.
Tomorrow (by which I mean "in the future," or "June 2019" or whatever the announcement says) Linux Docker containers on Windows will run natively, without the Linux VM crutch. I am assuming that it will use the emulated syscalls the same way that WSL runs today.
Adding the appropriate things to WSL to make Docker for Windows no longer require the Moby VM, or to support Linux Docker within the WSL environment without modification, is an approach that makes much more sense to me.
> WSL 2 uses the latest and greatest in virtualization technology to run its Linux kernel inside of a lightweight utility virtual machine (VM). However, WSL 2 will NOT be a traditional VM experience.
https://devblogs.microsoft.com/commandline/announcing-wsl-2/
Now that the cloud is the way to go, they're looking at this in a more holistic way, it seems.
Perhaps it has something to do with Unix tty. Unix systems are mainframes or servers, the tty subsystem only cares about transmitting the text and control sequences, the actual rendering is done by a CRT terminal at a remote location. Meanwhile, the DOS family was designed for microcomputers and PCs, the text output is tightly-coupled with the system and hardware, including how to draw them. The Windows XP console can even switch to the genuine VGA textmode as used by DOS by pressing Control+Enter.
I guess the Unix tty allowed flexibility. It doesn't matter if someone reimplemented it using VGA textmode, or 2D accelerated framebuffer (modern Linux kernel), fancy 3D OpenGL stack (kmscon, but sadly the project is dead), or a cairo-based graphical interface. Meanwhile, Microsoft haven't continue to develop and modernize the console subsystem in a long time (clarify: at least in 8 years of Windows XP era, until recently).
That's just provably false. We've been hard at work on the console for the last 4 years, culminating in today's Terminal announcement.
See https://devblogs.microsoft.com/commandline/ for a few examples of things we've been doing for the last few years.
One in particular: Last year we added support for a pty-like interface in Windows with [ConPty](https://devblogs.microsoft.com/commandline/windows-command-l...)
Midnight Commander, htop, applications that make extensive use of VT command sequences all work fine.
We do however have a pretty solid VT100+ implementation nowadays. Case in point, it'd be pretty hard to run anything in the Windows Subsystem for Linux without a complete VT implementation.
With the Windows Terminal, we've switched to a DX/DWrite based renderer, which no longer uses the CPU to draw text, and moves it to the GPU. Our preliminary testing has a insane perf improvement for applications writing lots of text, something like 10x faster :)
(Thank you for responding to so many comments on this thread!)
Also stay tuned for Rajesh Jha's keynote later today, with our official announcement. It'll have some other relevant information I don't think any of the articles have mentioned quite yet :P
It's live now, and I think Windows is up soon, though I don't know where in the keynote we are.
I'm asking because 10x sounds great, but in my memories the Windows terminal was so slow to ouput text that this might not be enough, compared to the competition.
Presumably, the new terminal will have the same lag now other windows apps have?
One of the things I hate is when the default option is "good enough" so you have the danger of living with mediocrity. Or, worse, the platform doesn't spawn a rich ecosystem of competition.
For example, when I was on OSX I couldn't find a music player I liked. iTunes was bad, but the fact that everyone uses it means there aren't as many alternatives as on Windows.
You can have everything now on all 3, everything important. I almost never use non-cross platform tools.
SMPlayer's homepage says it's only on Windows and Linux. I only ever used VLC for playing one-off files. I never knew about VLC having media collection features, might have to look into that.
Rhythmbox on Ubuntu has been great for me. I just want Rhythmbox on other platforms. I've been using Google Play Music instead. (It lets you upload your music collection into the cloud, which is super useful as I can now use it from devices it's not synced to, though it's not open source or an application I can run offline, and it's pretty limited in how it can sort and display songs. I can't sort songs by date added, etc.)
If you want non-laggy, VLC is the best (both video and audio) but its interface sucks a lot although it is probably tolerable on the long run.
SMplayer could probably be ported in a week or so on OS X given it uses mplayer or mpv which are both available on OSX (its just a fronted to those tools + open sub).
I also used MPD with Cantata in x-platform manner its quite nice and fast.
This is why we added support to optionally set Ctrl+Shift+V as the paste keybinding in conhost.
Fortunately, the Windows Terminal doesn't have a lot of the legacy to maintain like conhost does, so it'll support setting paste to whatever keybinging you like :)
No Windows terminal I've ever seen has the ability to do this.
Edit: Note that I haven't used the new terminal yet, so if it supports an actual right-click menu, than bravo!
Fortunately, the Windows Terminal doesn't have any existing back-compat we have to support, so that's definitely a setting we can add to it :)
Pretty sure that this is one of the biggest requests / frustrations you will hear from users. The issue is that MS has normalized the right-click menu as the go-to method of choosing exactly what one wants to do with a selection of text (, or even anywhere, for that matter), and it's useful, and uniformly available in Office and other Windows apps, and missing ONLY in cmd.
For example, when pasting in Excel, Paste vs. Paste Special vs. Keep Formatting vs. Keep Formulas, etc; via the right-click menu is just great. Going from that to a "We insist on a 1982 MS-DOS experience" in the cmd window is just annoying.
The terminal still has the menu commands, by the way. They're tucked away in the window system menu (the one with Minimize, Close etc, that you can open by clicking on the app icon in the title bar - it's all under Edit there).
You have never heard that people might want to use functionality that has worked on all editable text in the entire rest of the operating system since Windows 95?
Feel free to file it over at https://github.com/Microsoft/Terminal, and we'll triage as appropriate
I do prefer X because of the PRIMARY selection style automatic copy/pasting, but this would go a long way to making my Windows experience more enjoyable. The Windows development experience is hugely improved and my rediscoveries of it in the last few months have been generally very enjoyable.
I'm terrified that, when I'm scrolling, I'll accidentally push down just a little bit too hard on the scroll wheel, and it'll do something awful like paste PII into a chat or paste a passage of text into my terminal and one line of it gets parsed as a valid command.
I'd rather just use my middle button for autoscroll. It's safe, and it's my preferred way to scroll in the few applications that supported it.
To me it helps me not have to use the keyboard. Windows is a very hybrid keyboard/mouse driven environment (e.g. Alt-Tab is almost indispensible - but simply not how I think). Using the keyboard for things that are not typing is actually genuinely difficult.
Something like Gnome with the compromises their X-based history forces onto them basically means you can use the system without touching a keyboard except for typing, which is very nice. Alt-Tab and Ctrl-C/X/V are there, I think, but I've never used them.
The existing windows terminal has supported that for ages.
Click the upper left icon of a terminal window
Properties->Options->Quick Edit Mode.
Uncheck.
It isn't 100% the same, after selecting text right clicking will auto copy it, but other than that, mostly the same.
Clipboard UX is a bit of a mess on Linux, but notably on macOS copy is Cmd+C and SIGINT Ctrl+C, so this isn't an issue at all.
Ctrl+C to interrupt was inherited from TOPS (via DOS and CP/M).
Ctrl+C to copy selected text was introduced on Xerox PARC, the granddaddy of all modern UIs. In DOS, some text-mode UI apps were already using it, although IBM CUA was more common.
EDIT: It is possible you are on an outdated version of Windows, or have upgraded and still retain your old settings.
Be sure QuickEdit Mode is enabled, as well as Ctrl key shortcuts.
Lol I should have updated that issue - in the most recent Windows release, we added a feature to conhost to actually disable the overscroll (under Properties... Terminal... Disable Scroll-Forward). See [this blog post](https://devblogs.microsoft.com/commandline/new-experimental-...)
As far as package managers are concerned, I've had lots of success with Chocolatey. If developers are willing to port their commandline applications to Windows, then I'm sure they'd be welcome additions to Chocolatey
Will cmd, PowerShell and WSL all use the new terminal by default?
Powershell, cmd.exe, WSL, they're all unaffected by this change. They all run the same in the new terminal as they did in the old one, thanks to the powerful magic of [ConPty](https://devblogs.microsoft.com/commandline/windows-command-l...)
Also, how stable/unstable will the preview be?
I don't think we have our release strategy exactly set in stone yet, but I believe the plan is to have a weekly/nightly app users can download that'll be less stable, and an official app, that'll be much more stable.
[0] https://blogs.windows.com/buildingapps/2019/05/06/developing...
> The first preview of the new Windows Terminal is now available.
But does not provide a link. Would you be able to provide one? Or is it part of the Insider preview?
Also, I assume this uses ConPTY, which implies better compatibility with TTY/VT?
We don't have a link to share quite yet. The first preview builds that will be available from the store will be coming soon(tm). The "now available" part seems to be referencing a part of Jha's keynote that I don't want to spoil quite yet :)
Yes it's using ConPTY as a backend, which means all Windows commandline apps will work in it out of the box.
I'd say the vast majority of the codebase is pure C++, without the C++/winrt magic.
The renderer we're using is DX-based, which provides a pretty substantial perf improvement over the old GDI-based one conhost uses.
(I only say this because I see a lot of undeserved bad blood around C++/CX and UWP. The legit criticisms of UWP is that if you go to the Microsoft Store and search for any app, you'll get seven apps and ebooks trying to mislead me into buying them and probably not actually the one you want - but that's not a technical issue at all.)
As far as bidi text, the underlying console implementation isn't quite there yet, though it it high up on our radar of things to work on.
Does this new terminal support Unix/Linux style shortcuts? Another unrelated thing I’d love to see for WSL is windows-XDG integration, so for example the XDG Browser variable would be set to open the default Windows web browser.
The best part of working on the Terminal is that we can feel free to add new features to it's codebase without breaking backwards compatibility, which why such a feature was never added to conhost in the first place
By using the GPU for text rendering, we can process more text faster on the CPU, without the rendering of the text getting in the way.
If we're not already doing subpixel AA, then I think it's certainly something we could look into. I'm not really our DX guy, but it DX supports it, I think we could use it.
Not directly related to the terminal, but any updates on the file system slowness issues?
I believe they have a big announcement later today that I don't want to spoil quite yet :)
Exciting! :)
All GPU based terminal emulators I tried so far make latency worse. You have to do away with double buffering and V-Sync for small changes (or on key-press-events) to get in the sub 1ms range.
This is an absolutely epic post you've linked, I'll make sure to share with the team.
1. Is this based on Terminus or some previous OSS project?
2. Is this using xterm.js for the terminal emulation?
2. I spent a LOT of time looking at using xterm.js, and eventually decided against it. The main factor was that although it would provide us a nearly complete VT implementation, it was critically tied to the JS ecosystem, and no matter how much time we spent engineering it, we'd still be coupled to having a webview render text. So we instead decided to write it in C++, which meant that we'd initially have less VT compatibility, but our perf would be better in the long run.
Question - I see in the Techcrunch article that tabs will be supported. Do you know if split windows (like iTerm2!) will be supported?
A. I'm not sure if I'm doing it right. B. If I am doing it right, where does the compiled binary (or is it an installer?) get put?
Thank you for your work!!
Disabling quick edit helps, but now I can’t select text at all.
Is this behavior changed in the new terminal?
The new Terminal fortunately gives us much more flexibility for customizing it's behavior with user settings, so we'll be able to support either pausing output or not, depending on what the user prefers.
I'm not sure which side is misrepresented, but it sounds mad from the outside!
- sudo for editing protected files (using nano to edit the hosts file in system32 for example)
- Good copy/paste functionality, something robust, maybe like linux with the middle click or normal shortcuts is ok
- Non blocking stdio when scrolling out of focus (not sure if this still exists)
- Split screens like iterm2 or terminator. Adjustable, with different colors for each, with the ability to save profiles so they get restored every time the terminal starts up.
- Smart notifications. If a compile/transpile finishes, our scripts could emit an event to the terminal similar to the bell, to produce a gentle notification. Right now the bell results into the taskbar item becoming orange, but it doesn't go away on its own.
- In Cmder when I have multiple split screens, they register as multiple windows, when I hover over the application on the task bar. Split screens should register as one window in my opinion.
- Right clicking on the application's taskbar icon should give an option to launch a new terminal or a new terminal from a saved profile.
Thank you for your efforts!
Curiously, Windows is more secure than linux because it _doesn't_ have a sudo.
In Windows, any application can set messages to another window at the same integrity level with SendMessage/PostMessage.
If you had a `sudo` on windows, you could have a medium-IL terminal window which is talking to a high-IL process (running with the hypothetical sudo), and any other medium-il process could drive the console, effectively creating an escalation of privilege attack vector.
Its very much by design.
Is this open source? Is there a way for me to help contribute back? Thanks for the hard work!
https://github.com/Microsoft/Terminal
Split panes is one of the things I want to see get done next personally!
I have an Asus with Windows 10, and after a day of use, it becomes unbearably slow. It seems there is a lot of activity on the HD. I tried to diagnose this, but was never able to pinpoint a specific process that was slowing it down.
The only solution was to restart it. Web browsing always had a huge delay.
Linux on the other hand: startup is fast, use is fast, runs for months without any restart.
Use some debloater to remove other stupid stuff. Then it will fly.
Learned this the hard way when I was interning as a tester for an audio driver. Sometimes the driver would get into a bad state, and you could power cycle the system and the driver would still be a bad state. I created a batch file that would run the shutdown command with a flag to initiate a complete shutdown rather than a kernel hibernation, which was necessary to reset the state of the driver.
I've never really used Windows as a daily driver until I had to do cross-platform development for PhotoStructure[1]. My windows box is a recent XPS 15 with an m.2 SSD and core i7. My Mac is a 10 year old 17" MBP. My linux box is the cheapest core i5 I could get 2 years ago with an mSATA SSD (not m.2).
Here's this morning's CI job timings (running the same 2K tests that exercise a reasonable mixture of CPU, process management, and disk I/O):
Windows 10 (XPS 15):
2384 passing (2m)
Done in 134.95s.
Mac (10 year old MBP on 10.11): 2365 passing (2m)
Done in 108.12s.
Ubuntu (i5, LTS 18.04): 2365 passing (1m)
Done in 74.16s.
I'd suggest backing up your HD, making a USB stick with OEM Windows 10, and reinstalling just Windows (with no Lenovo bloatware): https://support.microsoft.com/en-us/help/4000735/windows-10-...[1] https://blog.photostructure.com/introducing-photostructure/
That said, this is really a Windows-feature being misused by OEMs and as a user I would be interested in having a way to disable it.
What's in the 19 additional tests Windows is running? Is the Linux box a laptop as well? I'm personally having trouble believing the Core 2 Duo in your MBP outperforms a modern i7, even after potential Windows overhead.
Yeah, agreed, but these are single-core tests and even the max clock speed of intel chips doesn't seem to correlate exactly with performance. Here's more CPU details, though:
My XPS 15 is HT 4-core Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz.
The MBP is https://apple-history.com/mbp_17_mid_10. HT dual-core i5 ("Arrandale") @ 2.53 GHz. It's slow AF.
The ubuntu box is HT dual-core Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
> What's in the 19 additional tests Windows is running?
The 19 additional tests are windows-specific path validation unit tests, and take ~10ms total.
> Is the Linux box a laptop as well?
No, it's on a 3 year old cheapo mini ITX mobo.
> I'm personally having trouble believing
Me too. I've nuked and paved this box a couple times, thinking it was bad interactions with cygwin or MSYS or minGW. CPU bound stuff (like ffmpeg transcoding) is closer across windows and linux, but opening files and forking processes on Windows is just hella slow (even on my desktop windows machines).
Fork & fs operations, certainly.... nothing to do with Windows itself.
Both of these operations are known to be very slow specifically in windows. The former's the reason why windows has always strongly favored thread-based concurrency (whereas unices tend to favor process-based concurrency)[0], the latter is well know of NTFS, it deals especially badly with lots of small files.
[0] even excluding making the entire thing blowing its gasket as Bruce Dawson triggers with appalling regularity, in fact in one of his posts he specifically notes in the introduction that windows is notorious for its slow file and process operations: https://randomascii.wordpress.com/2018/10/15/making-windows-...
In practice, the i5-6500 is faster than the i7-6700HQ. The i5 enjoys a slightly higher turbo clock speed and less restrictions in TDP, cooling and power supply allowing it to run faster for longer so it's expected to be the fastest, but that doesn't explain the entire gap.
Have you tried using WSL instead? I found it to do excellent in CPU based tasks, but the file IO performance was a bit lacking. Apparently in the next release (along with this new terminal) filesystem performance should improve by a significant amount. Although I would still expect it to be slower than running on Windows/NTFS natively
Interesting. TIL, thanks. (I looked at /proc/cpuinfo on my i5, saw 4 entries, and assumed HT dual core).
> Have you tried using WSL instead?
These are tests to ensure PhotoStructure works on stock Windows machines, so I can't use WSL.
> filesystem performance should improve by a significant amount
That'd be awesome. Where'd you read that?
From here: https://venturebeat.com/2019/05/06/microsoft-windows-termina...
https://en.wikipedia.org/wiki/List_of_Intel_Core_i5_micropro...
2.installed from scratch
3.the windows setup only put essential Lenovo stuff - hotkeys and thermal management.
4. ???
5. Profit [1]
It made a real difference to disable the automatic windows updates and run them manually. There were no bloatware installed on my unit.
[1] A joke from the memes, its all good otherwise.
Granted, it has an SSD, so disk access is not slowing the machine down as much, but so do all the computers today.
Bloatware, begone!
In theory windows can be faster than Linux in some cases; but usually isn't because most developers don't actually take advantage of those APIs and just do everything synchronously which is stupid slow on Windows. That said Linux is catching up super quick in terms of those sorts of things.
EDIT: grammar
The best way to get a Windows computer is either building it or buying it directly from Microsoft so you can get the genuine versions that have little to no bloatware.
https://www.microsoft.com/en-us/software-download/windows10s...
Cost... well, not much to say there. You can get more powerful Windows laptops for 2/3rd, sometimes half the price of what a MBP costs.
MBP's latest generation is a regression in keyboard and toolbar. Not just the keys and their travel, but even simple things such as where the arrow keys are located are a nightmare for me, even after two years of using a MBP on a daily basis. And of course, there are no keypads in the Apple world, which I really enjoy having to move around (page down/page up/line end/line beginning/etc...).
Windows' many consoles and bash compatibility have caught up to MacOS. Even if you don't use the bash subsystem, you can download a console today and use bash + git + ssh in a matter of minutes. Even my dotfiles are now shared by Windows and MacOS with no problems.
Connectors... oh boy. I have to carry a huge hub with my MBP at all times just so I can connect my laptop to screens, or phones for charging or development, or head phones, or...
I could go on and on. Bottom line is I always dread having to use my MBP these days while I look forward to my Windows machine.
Other things that are still better on MacOS compared to Windows: Keybinding consistency, system settings, PDF handling, system/app config system, backups and restores, migration assistant, system search. Its file system is also better for many small files. But still, for me the tradeoff is worth it because I can't stand butterfly keyboards, they are that bad.
Everyone I've ever seen using macOS doesn't use Terminal.app - iTerm is popular, I use Alacritty.
What Linux term isn't faster, if nothing else, than Terminal.app?
‘Windows laptop’? Historically, the Mac(book)s strength was its superior hardware quality. Both in "fit and finish", but also more tangible things like it’s trackpad, keyboard, and robustness (please remember I said historically). These are traits of specific hardware models.
What Windows laptops do you think are superior to Macs?
I'm not personally a heavy Windows user, but the advantage of a single terminal on all systems is really huge to me.
The most notable feature listed in this article to me is that it too will have "GPU-accelerated text rending".
The Windows port is still (naturally) rough around the edges. I think it'll get smoothed out when they switch the backend to conpty though.
A modern terminal, with full support from Microsoft, is badly needed.
Cmder works great for me because from Windows, my main use cases are 1) git and 2) SSH into my linux server. I don't do almost anything local, besides some web stuff. Cmder has helped me with that, when I'm not on my Mac.
And every dev I know that has to deal with Windows still uses CMD instead.
Home = Ctrl-A
End = Ctrl-E
Map Caps Lock to Ctrl
(I try to use PowerShell when on Windows. I genuinely like it--just kinda wish it was a little easier to write-on-the-fly, it's very verbose and typey and Tab is just far enough away to cause some wrist strain. ;) )
In zsh, it's just $FPATH. Your canonical location can also be gotten from pkg-config.
This seems very googleable. Doubly so if you're doing the right thing and...using pkg-config.
(Please use pkg-config. Thank you for coming to my TED talk.)
That’s the primary reason my hierarchy of Windows shells usually starts with bash (via WSL, MinGW, or Cygwin) for file management, ssh, compile/build/deploy, and text parsing work and ends at CMD and eventually PowerShell for the Windows services management and other Windows internals that require it.
Also, bash’s (and other similar shells’) high degree of customization is both easily portable and massively extensible. With some minor customization it’s possible to match, or even exceed, PowerShell’s tab completion capabilities.
I'm very familiar with Bash, but I've never used PowerShell. It doesn't seem like e.g. passing structured data would be a bad thing.
Lack of thorough, accurate documentation shipping with modern open-source software is a real problem. While a lot of software written in the 1980s-1990s (GNU project, Solaris, etc.) have fantastic man pages and Info documentation, much that has been written since has been poorly documented, if at all.
Good documentation shows that (a) the author has thought clearly through their work and (b) shows respect for the user's time by not making them experiment or have to delve into the source code, third-party blog posts, etc. to figure out how the software works.
Here is an even more weird example for non-native speakers: Having a piece of wood as an icon for a log reader. "Log" in english also means a piece of wood. This vocabulary is probably largely unknown by most non-native-level speakers, so the icon creates only confusion. [Make a google image search for "log icon" to see examples w/o context]
He is writing in English why should he be preoccupied if it does not make sense in other languages. There are many English expressions that have no exact translations. Should writers avoid using these expressions too?
Also, as a curiosity, terminal has the same ambiguity in Brazilian Portuguese
For example, right now (with v1) you can totally use a WSL terminal of choice and run your dev environment using tmux and terminal Vim (running in WSL) and have a fantastic experience. Then wire up Docker for Windows so that your Docker CLI in WSL connects seamlessly to it. I've been doing this for quite some time for full time development and it's rock solid.
Really looking for v2 with native Docker support and better I/O performance.
Essentially I installed Dropbox and git, loaded the bashrc in WSL with some aliases and after that, the workflow was exactly the same as it was on my MacOS. Heck, even the node_modules synced from the Mac via Dropbox, so for most things I didn't have to even re-install with npm.
The terminals right now in Win10 are crap (Cmder and the likes are not bad, but nowhere near iterm2 and the Linux options) so Microsoft is really stepping up their game here.
Don't miss linux terminals really with it, any of them.
I'd also pay attention to Rajesh Jha's keynote later today, when the Windows Terminal is officially announced. I think that'll have even more information you'll find relevant.
If you'd like to skip ahead before real previews are available, you could always compile from source :)
This one covers the under the hood work that needed to be done https://devblogs.microsoft.com/commandline/windows-command-l...
I still miss iTerm2 immensely after moving from an all-macOS dev group to an all-Windows group. Hoping this will help me feel less homesick.
From the second paragraph of the article.
In developers experience perspective, this is really a good start.
It's really painful to work with Windows+.Net stack currently. For example, most of the windows menus don't let you search for an entry, like searching for a table among hundreds in SQL server management studio, or just find an entry in group policy, etc. Or just copy pasting with PowerShell. Tools other than Visual Studio looks super blurred on high DPI screen.
This has nothing to do with MS. I am surprised you mentioned this since it is the norm that apps do not have this on all mainstream OS'es. I hate it too, but that is how it is almost everywhere. That is one of the MAIN reasons I prefer Visual Studio Code - CTRL + P and type anything in the menu item name to get the fuzzy search (plus that item is now first on the CTRL+P list next time). Vim has this too, via plugins tho.
> Like searching for a table among hundreds in SQL server management studio
Yeah, the same thing. I recommend dbeaver which, again, has fuzzy search on table names.
Windows+.NET stack is how you make it, the fact that people use MS stack mostly is not MS fault. I personally know .NET project manager and he doesn't use "the stack" but Vim and friends.
Not the onion.
Edit: Snap, it ate my thinking emoji :-(
On a more serious note, I'm not sure we're losing much by not having them. I kind of resort to smileys, anyway.
A more rapid decline into reddit-like meaninglessness of communication?
I certainly don't care for them in my terminal output, but I live to serve :P
UAC is serious BS, designers should be ashamed. Make sudo please.
Curiously, Windows is more secure than linux because it _doesn't_ have a sudo.
In Windows, any application can set messages to another window at the same integrity level with SendMessage/PostMessage.
If you had a `sudo` on windows, you could have a medium-IL terminal window which is talking to a high-IL process (running with the hypothetical sudo), and any other medium-il process could drive the console, effectively creating an escalation of privilege attack vector.
Its very much by design.
> Curiously, Windows is more secure than linux because it _doesn't_ have a sudo.
Seriously, even if so, and I really much doubt it couldn't be fixed, its case where too much security is bad for your choices. Majority of Windows devs disable UAC, honestly. Like, almost all of them ? Because its unusable and that Windows sudoers file variant named compatibility something something is just unusable too.
I keep telling my 100+ IT guys (mostly devs), do not disable UAC, its good to know that something requires elevation (even tho it sucks but there are bearable powershell sudo scripts) and you will certainly have to make it on the build server later anyway. But they hate it with passion. I learned to accept the terror.
There are horde of people asking questions on how to disable startup UAC screen for many tools (one example: everything search engine). What I do now is use task scheduler (like many others) to overcome it.
We actually haven't named the font yet, it's also still in prodution
Also; Cygwin, XWin and a real copy of XTerm/Gnome-Terminal/etc can give you the entire capabilities of a native terminal. Including weird hacks like w3m's image previews.
https://blog.z3bra.org/2014/01/images-in-terminal.html
The "downside" is native windows console apps will have a bad time with these terminal emulators.
Why is cygwin so unpopular?
I know, sometimes it's too slow but besides that I don't understand the aversion I encountered.
It is a very leaky abstraction. Instead of just running Linux on Windows, they instead opted to half-compile binaries and then require a bunch of Windows specific configuration changes as a direct result.
The whole goal of Cygwin is where the problem starts: It is a POSIX layer for Windows that happens to reproduce Linux APIs. So now you aren't using it like Linux, or Windows, since it is neither and it is both.
Devil's advocate: Cygwin made a lot of sense with less powerful hardware since it is more efficient. But with the benefit of 2019 hardware there's no need to settle, and instead you can just run a full Linux kernel alongside Windows and get "good enough" results to be productive.
> It is a POSIX layer for Windows that happens to reproduce Linux APIs. So now you aren't using it like Linux, or Windows, since it is neither and it is both.
I don't know what you mean by "using it like linux or windows". The reason I'm using cygwin is that I can use windows-desktop (rudimentary) like I use linux-desktop. With a lot of GNU-Tools and a proper terminal emulator.
That means configuration files and some tools need to specifically target Cygwin and often source code needs specific changes/patches/flags to be compiled into Cygwin's compatible format.
Nobody said Cygwin didn't work. I am just explaining to you why it is unpopular and why it is a leaky abstraction.
I don't think those are the right words. It's compiled to native windows binaries so it runs natively. The difference (I know of) between a "normal" Windows-EXE file and one from cygwin is, the latter is linked to cygwin.dll.
Whatever shell you want to use, you can still use just the same in the new Terminal
https://46c4ts1tskv22sdav81j9c69-wpengine.netdna-ssl.com/wp-...
iTerm2 is okay for people who want to customize their tools, but in terms of usability and performance, Terminal.app is a much better option.
Wat
Those who do not understand UNIX are condemned to reinvent it, poorly. -- Henry Spencer, programmer
I look forward to the day Windows is a wrapper around a linux sub-system. The convergence is what I hope for.
You are familiar with the Windows Subsystem for Linux, right? It's really quite good for running linux tools on Windows, and they have other big announcements at the conference today.
Instead they had been shoehorning stuff into the old one, which has been making old legacy users angry due to regressions.
So, what does this announcement mean? They have changed course? Or is it more lipstick on a pig?
Really curious why this would be so. On Linux there's dozen's of terminals/consoles. On MacOS quite a few too.
Why would the GUI (which was the biggest pain point) has to have anything to do with the terminal functionality, except maybe a few keybindings maybe being impossible to implement. There were 3rd party console alternatives since like ~2000 - only they all had horrible UI/X (but still better than the original one), but Microsoft could simply have adopted one of them, normalized it's weird quirks to follow sane conventions, and baked it in as Windows default.
I never understood Microsoft's attitude of "mushing" these and other things together needlessly.
As a Mac & Linux user now, I can only applaud the idea of keeping things separate at all levels. Desktop environment separate from os separate from shells separate from terminal apps etc.. Heck, you often even have the GUIs as separate applications from the main one in Linux land. Never going back to Windows! Dis-integration ftw!
Anyway, there is a great series on the technical aspects: https://blogs.msdn.microsoft.com/commandline/2018/06/20/wind...
But I get the biz reasoning behind it... dropping backwards-compatibility would mean embracing the fact that software is made to be perpetually re-compiled, modified, re-written. And in an ecosystem embracing these values, closed-source software is automatically at a disadvantage vs. even slightly-worse-but-open-source alternatives.
I find it funny that we care so much about backwards-compatibility in software, but we completely ignore any semblance of it in hardware, where it could actually make a difference w.r.t. climate-change, toxic-chemical pollutions, preventing planned obsolescence etc. :) I mean, if there is any area where actively encouraging "planned obsolescence" in the form of less backwards-compatibility would be good, it would be in software.
Anyway, this is getting offtopic, but just wanted to say that different value systems produce different technologies... even something as boring as a terminal.
And of course, Microsoft is currently the most valuable company.
I'm not saying we specifically poo-poo'd you, I think we more have been trying to subtly avoid the topic, because this has been a pretty long term goal of our's we've been working on for a while now.
The main difference here is that now that we have ConPTY, we can build a _new_ terminal application that supports all the legacy applications, but that we can also add features to without breaking backwards compatibility. The old console was very hard to add new features to without breaking back-compat, but the new Terminal won't have that problem.
> I think we more have been trying to subtly avoid the topic
Sounds reasonable.
wsl wsl-ubuntu-1604 vlc sshfs virtualbox dropbox wireshark irfanview nvim 1password vcxsrv git slack itunes colortool musicbee utorrent vscode etcher steam goggalaxy epicgameslauncher uplay
Autoupdates of e.g. Firefox will mess with version numbers a lot. Many apps can't handle being run from a shortcut to a `current` folder that symlinks to a version folder, which means if you want to pin any of those to your task bar you will have to update that shortcut with every update.
It's essentially the reverse case of telling Windows users to "just use Wine" - the emulation isn't perfect and some programs won't work well or at all. In a sense, WSL is worse than Wine in this regard since there's usually a Linux-native alternative if something doesn't work in Wine. If something doesn't work in WSL, you don't have a lot of options.
But it's still the NT kernel either way, right? How does having binaries compiled with cygwin or MinGW improve upon what WSL offers here?
So like, Microsoft may have fixed this recently, but WSL processes were essentially stuck inside of a filesystem sandbox that uses some inane mechanism to access files via mountpoints that fails to correctly translate the few flags that are supportable by the underlying Windows filesystem, so if you try to do basic things like use WSL's copy of git to manage a git repository stored outside of the WSL sandbox, it just doesn't work correctly.
On the flip side, you also can't run a native Windows process whose binary is sitting inside of the sandbox, as native Windows processes do not have direct access to WSL files. Checking, they seem to have finally added the ability to mount new paths, so that's helpful (if you have network shares or removable media like USB keys, these were previously not accessible via WSL).
The great thing about cygwin and MinGW is that, by and large, it _is_ "just the NT kernel", with nothing more than a userland library sitting between the process and the same kernel interface used by any other Windows application, so tons of stuff "just works" that WSL is having to slowly reimplement.
(FWIW, it could be that Microsoft has fixed some of these filesystem showstoppers since I last tried to seriously use WSL; if so, that's exciting, but it doesn't change the reality of why people are looking at these are very different ways of running programs.)
https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-...
> In the latest Windows Insider build, the Windows Subsystem for Linux (WSL) now allows you to manually mount Windows drives using the DrvFs file system. Previously, WSL would automatically mount all fixed NTFS drives when you launch Bash, but there was no support for mounting additional storage like removable drives or network locations.
> Now, not only can you manually mount any drives on your system, we've also added support for other file systems such as FAT, as well as mounting network locations. This enables you to access any drive, including removable USB sticks or CDs, and any network location you can reach in Windows all from within WSL.
Seems to suggest that ~70% of the US still uses Windows as their primary desktop environment, so you might have a very particular selection bias.