skim icon indicating copy to clipboard operation
skim copied to clipboard

Windows support

Open sophiajt opened this issue 4 years ago • 10 comments

Is there interesting in adding Windows support, by chance? With more recent libraries, like crossterm, and the new tui libraries, there's more available to build on than when https://github.com/lotabout/skim/issues/25 was originally asked.

sophiajt avatar Mar 31 '20 02:03 sophiajt

@jonathandturner I am actually trying to use crossterm for window's support. But for now there are some blocking issues:

  • [ ] https://github.com/crossterm-rs/crossterm/issues/396
  • [ ] https://github.com/crossterm-rs/crossterm/issues/397

lotabout avatar Mar 31 '20 08:03 lotabout

What about termwiz which is also portable across multiple OS including Windows. It is used in wezterm which is another gpu accelerated terminal written in rust.

It has BufferedTerminal for optimal writes to terminal so it only writes deltas as well as first class support for Widgets.

prabirshrestha avatar Apr 19 '20 20:04 prabirshrestha

@prabirshrestha Thanks for point out termwiz, I'll have a look.

lotabout avatar Apr 20 '20 00:04 lotabout

I was super excited to have a library that offers advanced fuzzy search. Not a binary, a library that I can embed as well in my applications. Windows support would be really nice to have! Anything I can do to help? 🤔

mainrs avatar Jul 25 '20 20:07 mainrs

@lotabout - are there any updates on skim supporting Windows?

sophiajt avatar Apr 22 '21 17:04 sophiajt

I was using skim as a library for a little application I'm building, and absolutely loved it. Just found out now though that it doesn't run on Windows, which is a platform I want to support. I'll probably have to call out to fzf instead.

I would be willing to help you try and support Windows, although sadly I don't know much about working with terminals. I would imagine the new Windows Terminal product would make it easier to support?

jacderida avatar Aug 26 '21 00:08 jacderida

heatseeker (another fuzzy filter written in Rust) uses the Windows API to write to the console. This should be a good starting point to understand how to do it or how to use termwiz.

mardukbp avatar Aug 26 '21 05:08 mardukbp

I would definitely to some length be interested in Windows support, in case that were ever to be a thing. I'm using a Windows 11 64-bit PC and currently rocking a Powershell console (which doesn't support emojis either, which is a bummer), so I think it would be cool to see sk supporting Windows if possible.

Tbh I'm planning to use this in another project I'm still exploring, so likely in my case just envisioning this as a cargo dependency rather than a binary such as sk; though a binary for Windows would also be a neat idea, of course.

Edit: that project I mentioned can be found here.

rnag avatar Mar 30 '22 01:03 rnag

If possible, I'd like to see this done in a way that doesn't rely on ConPTY, which would both make it unusable on Windows 7-8.1 (and Windows 10 systems somehow still without 1809), and can be a significant performance bottleneck due to the Win32 API translation required for applications outputting escape sequences directly, which is necessary to remain compatible with existing Win32 applications. Furthermore, relying on ConPTY may impact the supported escape sequences independently from the console emulator support; this is at least one reason why few Windows terminals properly support the mouse. I don't believe mouse support is of particular concern for skim, but perhaps some other escape sequences may prove problematic. My experience as an end user is that programs using crossterm, compared to those using pancurses (and by extension, cursive), are often unusable without winpty, hobbled even with winpty, and in some cases, can even manage to be less usable in something like mintty (with or without winpty) than in plain cmd.exe One example of crossterm vs pancurses is git-interactive-rebase-tool, which switched from using pancurses to crossterm between versions 1.2.1 and 2.0.0. From 2.0.0 onward, on my old Windows 7 laptop, it has output raw escape sequences when using winpty, and ignores the terminal window size and user inputs in mintty without winpty. Version 1.2.1 continues to work fine on that machine, using winpty. I can't actually say definitively that this is crossterm's fault, but I've had far more trouble using programs built with crossterm than with pancurses.

StaticPH avatar Jun 09 '22 01:06 StaticPH

@lotabout any chance?

agroszer avatar Jun 18 '23 16:06 agroszer