GithubHelp home page GithubHelp logo

kvakulo / switcheroo Goto Github PK

View Code? Open in Web Editor NEW
768.0 768.0 119.0 2.93 MB

The humble incremental-search task switcher for Windows

Home Page: www.switcheroo.io

License: GNU General Public License v3.0

PowerShell 0.14% C# 96.95% Inno Setup 2.91%

switcheroo's People

Contributors

elig0n avatar grantbyrne avatar hellbrick avatar jsulak avatar kvakulo avatar ovesen avatar philippotto avatar sidecutter avatar tarikguney avatar trond-snekvik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

switcheroo's Issues

[feature request] Make Alt key work as Return

I would like to use switcheroo with alt-tab with one hand: alt-tab to pop-pup switcheroo, then alt to switch to the selected window. Being forced to press return to select a window forces me to use two hands.
Seems so far tab key is not used in switcheroo, so it would'nt do any harm.

Don't hide Switcheroo overlay on closing a window unless the window can't be closed and requires user attention

This may be a difficult one. I think it would be incredibly useful to be able to close multiple windows without reopening Switcheroo overlay every time. I think that in most cases it doesn't make sense to switch to the window you are about to close, since you want to get rid of it anyway. The only case when you actually want to switch to it is when the window prevents closing itself: a typical case is when the window displays some kind of "do you want to save the files" dialog. I tried disabling hiding and switching in the CloseWindow() method to see what's gonna happen: if the window can't be closed and displays a modal dialog, its taskbar icon starts glowing, alerting the user that the window requires some attention. I think it may be possible to detect this and act accordingly by switching to this window (and stay in the overlay if the window is closed). Alternatively, if the previous solution is impossible, it may be enough to launch a timer and check the state of the window after a small delay: if it no longer exists, stay in the otherlay; otherwise switch to it.

Crashes on launch

After my latest reboot, Switcheroo is crashing on launch. I couldn't find a log file, but here's the crash from Event Viewer:

Application: switcheroo.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ComponentModel.Win32Exception
Stack:
   at ManagedWinapi.Hooks.Hook.StartHook()
   at Switcheroo.MainWindow.SetUpAltTabHook()
   at Switcheroo.MainWindow..ctor()
   at Switcheroo.Program.Main()

I tried deleting my user.config in the hope that it wouldn't try to re-hook Alt-Tab, but that didn't seem to help. I also tried installing/re-installing. Same thing.

Any ideas?

Remember custom key bindings on upgrade

I just upgraded to 0.7.3 and it went back to the default key binding of alt-space. Not a huge issue, but it would be nice if it remembered between upgrades.

Cheers,

Ben

Small look and feel adjustments

  • Small margin around all elements
  • A common border around all elements
  • Auto-resizing of window according to the number of windows

Filter by process name using dot syntax

As proposed by @rayhofmann in #28 it should be possible to search by process name.

He proposed this syntax chr.abc where chr refers to the process name and abc refers to the window caption.

I have tried to implement this in the following commit as an experiment to try out how it feels.

As an extra feature: If a process name is left out, and one just searches for .abc then the process name filter is implicitly set to the process name of the foreground window. This seems nice when switching between different windows of the application that you currently have in the foreground. (Just activate Switcheroo, type . and choose any other window from the same application)

Option sorted display, selection with . (dot)

A option to sort or group the list by applications would be nice.

Only if a group is matched it is expanded, to keep the list shorter and possibly all of it on the screen.

And selection with a dot would also be nice: chr.abc means select group of chr(ome) applications by application name and not by caption and then match to abc of the window caption.

Crash when shutting down Windows 8.1 if Desktop was never opened

This happens on a Windows 8.1 laptop that launches Start screen instead of Desktop by default. If Switcheroo is set to launched automatically and Desktop (or any classic Desktop software for that matter) is never opened, Switcheroo crashes with 'The instruction at %address% references memory at 0x00000008' alert when you try to shut down the system. Apparently, something goes wrong when the system attempts to gracefully terminate the app.

I've found this in the event viewer, even though it doesn't look very helpful:

Application: switcheroo.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.NullReferenceException Stack: at System.Windows.Window.InternalClose(Boolean, Boolean) at System.Windows.Application.DoShutdown() at System.Windows.Application.ShutdownImpl() at System.Windows.Application.ShutdownCallback(System.Object) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr) at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) at System.Windows.Application.RunDispatcher(System.Object) at System.Windows.Application.RunInternal(System.Windows.Window) at Switcheroo.Program.Main()

SmartGit window is missing from the window list if a child window is opened

I think I saw SmartGit window on one of your screenshots, which is good, because this means you can easily reproduce the bug ;)

  1. Open SmartGit
  2. Open Switcheroo to verify SmartGit window is correctly displayed in the list by default
  3. Switch to SmartGit, hit Ctrl+R to display reset window
  4. Open Switcheroo, BOOM! - there's no SmartGit window in the list anymore

Bookmarks / quick jumps

It would be nice if you could "bookmark" a window, and quickly jump to it afterwards.

Especially useful when you got more windows that have the same or similar titles:

image

Can't close Task Manager

Switcheroo constantly fails to close Task Manager when running on Windows 8 (haven't tried with other Windows versions). I understand there are windows that intercept closing and prevent it (typically to display some kind of 'save changes?' dialog), but such windows do this regardless of the way they are closed: Alt+F4, right-click on the taskbar icon -> Close window or Switcheroo's Ctrl+W all behave the same. Task Manager, however, can be closed by Alt+F4 and the taskbar icon, but can't be closed by Switcheroo, so it seems like a bug.

Use icons from the taskbar

Currently Switcheroo shows the icon from the process that owns a window, but often this is not the same icon as the one being shown in the taskbar.

Add help information to Switcheroo

Some features are currently hidden, e.g. the feature to close a window using Ctrl+W.

Let's make the features more discoverable for new users.

Hotkey already in use exception

image

// Excuse my beginner's English

When i attempt open options causing this exception window and options window is not opening.

Window debug text:

Подробная информация об использовании оперативной 
(JIT) отладки вместо данного диалогового 
окна содержится в конце этого сообщения.

************** Текст исключения **************
ManagedWinapi.HotkeyAlreadyInUseException: Выдано исключение типа "ManagedWinapi.HotkeyAlreadyInUseException".
   в ManagedWinapi.Hotkey.updateHotkey(Boolean reregister)
   в Switcheroo.HotKey.LoadSettings()
   в Switcheroo.OptionsWindow..ctor()
   в Switcheroo.MainWindow.Options()
   в System.Windows.Forms.Command.Invoke()
   в System.Windows.Forms.NotifyIcon.WndProc(Message& msg)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Загруженные сборки **************
mscorlib
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18444 built by: FX451RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
switcheroo
    Версия сборки: 0.8.0.50
    Версия Win32: 0.8.0.50
    CodeBase: file:///C:/Program%20Files%20(x86)/Switcheroo/switcheroo.exe
----------------------------------------
PresentationFramework
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.dll
----------------------------------------
WindowsBase
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/WindowsBase/v4.0_4.0.0.0__31bf3856ad364e35/WindowsBase.dll
----------------------------------------
System
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
PresentationCore
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/PresentationCore/v4.0_4.0.0.0__31bf3856ad364e35/PresentationCore.dll
----------------------------------------
System.Xaml
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xaml/v4.0_4.0.0.0__b77a5c561934e089/System.Xaml.dll
----------------------------------------
ManagedWinapi
    Версия сборки: 0.8.0.50
    Версия Win32: 0.8.0.50
    CodeBase: file:///C:/Program%20Files%20(x86)/Switcheroo/ManagedWinapi.DLL
----------------------------------------
System.Windows.Forms
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.34234 built by: FX452RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
PresentationFramework.resources
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework.resources/v4.0_4.0.0.0_ru_31bf3856ad364e35/PresentationFramework.resources.dll
----------------------------------------
PresentationFramework.Aero
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework.Aero/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.Aero.dll
----------------------------------------
mscorlib.resources
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    Версия сборки: 4.0.0.0
    Версия Win32: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

Have any ideas?
Thanks!

Activate Switcharoo by commandline parameter

It would be nice if you could activate Switcharoo (like ALT+SPC) by calling executable with a command line parameter.

Like: c:>switcharoo.exe -activate << Would bring up Switcharoo "window" if already started.

My main use would be binding it to a spare mouse button, but likely useful in other ways as well.

Best regards,
Johan

Disable system menu

Sometimes the system menu gets focus after activating Switcheroo (because this is done often done with the Alt key pressed, e.g. by Alt+Spaceor Alt+Tab)

The system menu isn't terrible useful for Switcheroo, so let's disable it.

Better highlighting of ReSharper like matches

When filtering Visual Studio windows using "vs" the Switcheroo highlights the matches like this:
V i s ual Studio

But it should highlight them like this:
V isual S tudio

The highlighting and scoring algorithms should work more hand-in-hand

Some controlparent windows should be included

From Nancy: "At my job's office, we're restricted to using Microsoft's Lync Communicator for online chatting and since I communicate with many of my colleagues on it, I have many of their individual windows open. Unfortunately it looks like the change to what types of window to include in the app list from the commit below causes these windows to not show up anymore since Lync Communicator is a "ControlParent" and has an ExtendedStyle = CONTROLPARENT|WINDOWEDGE instead of APPWINDOW"

This also seems to be the case with Beyond Compare and a few other programs.

It seems like this change is a bit too restrictive:
c3796d8

Better filtering when using space

image

In the above case it would be nice if matching and highlighting were:
*bhf*\Website - fix-1794 - Microsoft *V*isual *S*tudio

In general it would be useful if several filters were applied when using space in the filtering expression

Key presses in Switcheroo can be sent to other windows

As first reported in #27. It seems to affect Enter and Esc.

What happens is that when a user select and program in Switcheroo, and press Enter, then the selected window is immediately focused and activated. The user then releases Enter and the window then receives the message that Enter has been released, and might act on this.

The solution seems to be not to switch to the selected window before the user has released Enter - and likewise with Esc not to dismiss the Switcheroo window before the user releases the key.

Alt+Tab integration doesn't work for administrator owned processes

  1. Turn on Alt+Tab integration in Switcheroo
  2. Open e.g. cmd with Run as administrator
  3. Press Alt+Tab while having the cmd window in focus
  4. The usual Windows Alt+Tab functionality appears, and not Switcheroo

Is the solution to run Switcheroo as administrator? Or is there another way?

Symbol window from Word 2013 is missing in Switcheroo

  1. Disable Switcheroo's Alt+Tab integration
  2. Open Word 2013
  3. Press Insert > Symbol > More Symbols
  4. Press Alt+Tab and notice that the Symbol window appears among the choices
  5. Now press Alt+Space to activate Switcheroo
  6. Notice that the Symbol window does not appear among the choices

Add an option to customize the window close hotkey

Personally I would find it more convenient (and intuitive) to use Del to close the selected window, just like Task Manager uses Del to kill the selected process. I guess whether or not Del is an appropriate default hotkey is a matter of personal taste, but it would definitely be nice for the user to be able to choose whatever hotkey he wants for closing the window.

Show all taskbar windows in Switcheroo

An idea from @HellBrick in #45:

Some programs like Internet Explorer, cmder, Trillian, etc. show open windows when hovering their taskbar icons. It might be useful if all these windows would show in Switcheroo.

Here's an example of IE:

2015-08-18_18h51_51

Display the current window on the bottom of the list instead of on top

Currently when Switcheroo overlay is displayed, the top window in the list (and the one that's focused by default) is exactly the same window that has just been focused. This default makes no sense: if user wants to switch to another window, he'll select a different window in some way, and if user wants to close the current window, he or she will just hit Alt+F4 without invoking Switcheroo.

However, if the current window is moved to the bottom of the list, the top item will be the previous window. Which exactly matches the behavior of Alt+Tab. This way switching to the previous window could be done simply by Alt+Space -> Enter and Alt+Tab wouldn't be needed anymore.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.