bootblock / windows-workspaces Goto Github PK
View Code? Open in Web Editor NEWComing soon... ish!
Coming soon... ish!
Dragging and dropping a file into the Applications list within the Applications
tab is putting the dropped file into SelectedApplication
instead of creating a new Application; this functionality should only be performed if dropping a file onto the editor area for the Application (to the right with the edit controls).
When manually changing an Application's Executable
property, its Image
property isn't refreshed to contain the new icon (if any). This was likely done for performance reasons as I'd rather not hit the disk on every keypress; possibly use the Pulse
component to only fetch the icon after an interval has elapsed - maybe force the internal to elapse if the user then changes to another Application before it organically expires.
Clicking on the Open Application settings data directory
link at the bottom of the Settings window results in an exception of System.ComponentModel.Win32Exception: 'Access is denied.'
.
This didn't happen in .NET 4.8.
Ensure that control tab orders are sensible/expected when the UI layout is more complete.
Expose the Iconography icon editor and allow the user to create their own icons for Applications/Workspaces. The biggest benefit for this is for the Actions Menu.
Add hotkeys for various actions.
The Workspaces system tray populator was rewritten but didn't factor in Groups support correctly as Groups weren't fully implemented; rewrite it so it works as expected.
Pressing Ctrl+V
a file while in the Application editor should auto-populate the Executable field with the file in the clipboard, if any.
Will need to investigate how possible this is due to control focus reasons.
Allow the user to specifically determine whether an Application or Workspace appears within the Quick Menu rather than using the Enabled
property as the Enabled
property is used for auto-applying a layout when a specific application opens.
When double-clicking on a Workspace's TreeNode
to execute/layout a Workspace, supress the expansion/collapse.
Add the ability to perform a layout on the currently active window by pressing a hotkey.
Unsure whether this should be treated as an Application or (the child of) a Workspace.
Within the Workspaces TreeView, add an icon to the left of each Workspace node.
It just currently displays a message.
Add UI elements for all properties within Workspace
.
This is the third time that the main window has been redesigned, but there's an issue with .NET 5 that the existing interface is somewhat incompatible with and it's making UI manipulation a slow and arduous process.
This also provides the opportunity to go with a more modern UI design (that isn't like the first "Metro" style that didn't feel quite right) that can be skinned between a standard Windows-style interface and the new modern style (typically done via colour changes rather than different drawing code paths).
When executing a Workspace that has an Application with a file that doesn't exist (and isn't ethereal such as a URL), display to the user that the underlying file wasn't found rather than quietly doing nothing.
RunApplication
is also called and an exception is caught - avoid exceptions where possible.
Add the following window animation styles, which will fade the target window into position.
When an application has been defined within the Workspaces area, if that application has been opened (via means other than its entry within Workspaces), it'll have its layout applied.
This may happen because its within the WaitingToBeLayouted
list? If so, maybe flag the source (Applications
, Workspaces
) before determining whether to apply a layout.
Add an option to display a pop-up menu for the currently-selected (eg. focused) window when pressing a hotkey.
The menu will show all the applicable layouts for that window, which can then be selected to quickly apply.
Implement the following shortcuts to allow the activation of the specified main window's tabs via keyboard.
Applications
Workspaces
Monitor
There are already icons for http
, https
, and audio
.
Allow parameters to be specified for an Application.
Since moving to an ultrawide monitor, power cycling the monitor (either manually or via Windows' display sleep), the positions of application windows changes when the monitor comes back on.
This is apparently due to a combination of using DisplayPort along with Windows getting the size of the "simulated" monitor incorrect. It's a whole thing of a monitor disappearing from Windows and Windows itself then has to add a transient (SIMULATED_
/NOEDID_
) monitor in the meantime.
The purpose of this task issue is to remember the positions before the monitor goes off, and then restore those positions when the monitor comes back on.
While the Close button-dropdown gives options to Close
and Restore Original Layout and Close
for the selected Workspace/Application, they need to actually be implemented.
Allow an Application's window to be "pinned" so that it is always sitting on the currently-active virtual desktop, always in view.
Double-clicking an Application within the Workspaces area that isn't enabled doesn't run it; this needs the same change as the Applications area did to allow it to be run regardless of state.
Due to the migration to .NET 5 (?), launching an Application
that isn't a physical file (eg. a URL) doesn't work due to a FileNotFound error.
The Group
property wasn't reinstated during the non-Metro UI rewrite.
When selecting a Workspace via the Systray icon, an outdated way of executing a Workspace is called; extract out the code within tbrWorkspaces_List_Execute_LaunchAndLayout_Click
and call that.
Dragging and dropping a file into the Application's ListView should auto-create a new Application item and auto-populate it with the dropped file.
The relevant ListView/TreeView show an icon for files (either physical or ethereal (eg. a URL)); if a file is determined to be physical but doesn't exist, then maybe show an X as the icon to denote that it doesn't exist.
When Windows Workspaces has been started, it should apply Application layouts to any matched windows that are open.
Create a ContextMenuStrip
that is used across both lvwApplications
and tvwWorkspaces
lists for Applications.
The user interface explicitly states Executable next to the textbox that contains the application that should be launched.
Instead, either change to something else more appropriate or somehow let the user know that they can put more than just an exe/cmd/bat/etc in there; for example, inserting a URL will launch the system's default browser with that address. Possibly port the Browsers
class over from BiQubic.Framework
to Hiroix.Framework
to allow the browser to be manually selected on a per-Application basis.
Launching non-executables will require the dropping of UrlRef
to support non-urls.
Due to the heavy caching of Application.Image
(in #10) to prevent hitting the disk for an executable image, there needs to be a Refresh Caches addition within Settings to allow the user to force a refresh.
When dragging and dropping the target window dropper onto a window, the Executable
field should be automatically filled-in; this requires finding the process for a window handle.
Windows doesn't seem to have hotkeys to go to a specific, numbered virtual desktop and can only go left/right. Add configurable shortcuts that'll allow going directly to a specific virtual desktop.
The WindowsList
form is designed with the Metro
UI style but that style is being removed from Hiroix.Framework
and so the Windows List needs to be recreated using the standard Windows UI elements.
Clicking on Settings - Interface - Refresh Image Cache
calls RefreshImageCache
and should refresh all cached Application executable icon images; the first click seems to work (haven't actually truly tested it yet due to requiring setting up for testing) but subsequent clicks cause a large majority of the icons to be the same.
Could be an issue with removing/adding images to the ImageList
component - not sure yet; not really a priority right now.
After invoking the Quick Menu, opening the Settings window causes it to disappear(?) and the main window can't be interacted with as, presumably, the Settings window is still considered open.
Requires implementing via COM support and so I'm somewhat putting it off as it needs a lot implementing before the implemented code even be tested.
When setting an Application's Executable
, the Application's ListViewItem/TreeNode doesn't display an image that represents that file.
If an Application's Executable
property references a valid executable, obtain the executable's icon and display it within any relevant UI elements.
Performing a full run/layout of an Application via the Applications tab runs the executable but doesn't lay it out, saying the window wasn't found and then pending.
There's space in certain areas (eg. WorkspaceEditor
) to display information on the purpose of that section to help guide the user.
If ShellListen
is set to Auto
(and disabled due to no Applications being defined/enabled) and a Workspace is executed, watching will begin so that the newly-opened Applications can be laid out; once done, watching is disabled.
If it turns out that any Workspace Applications are never laid out (eg. their window didn't open), then watching will be enabled indefinitely until WW is restarted or the user disables it themselves.
Add, say, a time-out so that pending Applications are removed from the watch list.
A maximised window and a minimised (iconified) window cannot just be positioned/sized, unlike what a lot of applications do (eg. Steam); their actual min/max states need to be stored and override any positional and dimensional values.
Couldn't originally think of a name for the hotkey-invoked menu, but now Actions Quick Menu seems like a reasonable choice.
It would probably be best to rewrite how pending layouts should be processed to instead use a single collection and also include metadata on the layout, somewhat alluded to in this comment.
It won't be quite as quick but it'll be aggressively inlined and increase code reuse.
Dropping a file onto the Application editor should auto-populate the Executable field with that file.
For each control within a container, ensure it has a unique mnemonic (or accelerator key) within that container.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.