Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

10,614

Downloads of v 0.9.0:

457

Last Update:

24 Jan 2021

Package Maintainer(s):

Software Author(s):

  • ShankarBUS

Tags:

uwp fluent-design xaml winui modern flyouts replacement foss

ModernFlyouts

This is not the latest version of ModernFlyouts available.

  • 1
  • 2
  • 3

0.9.0 | Updated: 24 Jan 2021

Downloads:

10,614

Downloads of v 0.9.0:

457

Maintainer(s):

Software Author(s):

  • ShankarBUS

ModernFlyouts 0.9.0

This is not the latest version of ModernFlyouts available.

  • 1
  • 2
  • 3

This Package Contains an Exempted Check

Not All Tests Have Passed


Validation Testing Passed


Verification Testing Exemption:

Requires Windows 10

Details

Scan Testing Successful:

No detections found in any package files

Details
Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

To install ModernFlyouts, run the following command from the command line or from PowerShell:

>

To upgrade ModernFlyouts, run the following command from the command line or from PowerShell:

>

To uninstall ModernFlyouts, run the following command from the command line or from PowerShell:

>

Deployment Method:

NOTE

This applies to both open source and commercial editions of Chocolatey.

1. Enter Your Internal Repository Url

(this should look similar to https://community.chocolatey.org/api/v2/)


2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Copy Your Script

choco upgrade modernflyouts -y --source="'INTERNAL REPO URL'" --version="'0.9.0'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:


choco upgrade modernflyouts -y --source="'INTERNAL REPO URL'" --version="'0.9.0'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Install modernflyouts
  win_chocolatey:
    name: modernflyouts
    version: '0.9.0'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


chocolatey_package 'modernflyouts' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '0.9.0'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller modernflyouts
{
    Name     = "modernflyouts"
    Version  = "0.9.0"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'modernflyouts':
  ensure   => '0.9.0',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',
}

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Package Approved

This package was approved as a trusted package on 24 Jan 2021.

Description

A modern replacement for existing flyouts in Windows

Overview

Default Flyout vs New Flyout:

Overview

This application will replace the default audio/airplane/brightness flyouts found in Windows shown when the volume or brightness changes or when airplane mode key is pressed with a new modern UI. The project also includes a flyout for lock keys (caps lock, scroll lock, num lock & insert key).

> Note : The native flyout is not permanently closed but will be hidden when this flyout is shown
> Thus, users have the freedom to choose between the windows default one, this modern one or none.

Features

  • Fluent UI
  • Follows system Light/Dark theme
  • Media session controls have additional features such as Shuffle, Repeat, Stop and Timeline Info
  • AirplaneMode, LockKeys, and Brightness Module
  • Each Module can be disabled separately
  • Can Choose either Windows Default Flyout, ModernFlyouts or None
  • TopBar can be unpinned
  • Draggable and autosaves the position
  • Alignable to a default position (can be modified in the settings)
  • Smooth Animations & Transitions

Screenshots

Audio Flyout

i

i

i

i

i

i

i

i

i

i

i

i

i

i

i

i

i

i

i

i

i


legal\LICENSE.txt
MIT License

Copyright (c) 2020 Shankar

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
legal\VERIFICATION.txt
VERIFICATION
Verification is intended to assist the Chocolatey moderators and community
in verifying that this package's contents are trustworthy.

Package can be verified like this:

1. Go to https://github.com/ShankarBUS/ModernFlyouts/releases/v0.9.0, and download from there.

   AnyArch: https://github.com/ModernFlyouts-Community/ModernFlyouts/releases/download/v0.9.0/32669SamG.ModernFlyouts_0.9.0.0_neutral___pcy8vm99wrpcg.Msixbundle

   to download the MSIX. You may wish to rename the files.

2. You can use one of the following methods to obtain the SHA512 checksum:
   - Use powershell function 'Get-FileHash'
   - Use Chocolatey utility 'checksum.exe'

   checksum: cd4ceea99d30ecd031d5cd54b209476a875cef8d99d80b1a570e6734cfbc0a0475366075569dc89d06acca2dcbef830204b2529f5b50bbd954b7328f0f7e48fd

File 'LICENSE.txt' obtained from:
   https://github.com/ShankarBUS/ModernFlyouts/blob/v0.9.0/LICENSE
tools\32669SamG.ModernFlyouts_0.9.0.0_neutral___pcy8vm99wrpcg.Msixbundle
md5: 1FC82418471F2DA5F4B5A56671588E96 | sha1: 8D347963BD566B7D14EFC370BD0F25B38486348A | sha256: B56A4DBE70D6AE59913526A64C26173CA6777890470BF159C42CCEC4298E6EF0 | sha512: CD4CEEA99D30ECD031D5CD54B209476A875CEF8D99D80B1A570E6734CFBC0A0475366075569DC89D06ACCA2DCBEF830204B2529F5B50BBD954B7328F0F7E48FD
tools\chocolateyinstall.ps1
$ErrorActionPreference = 'Stop';

$ToolsDir        = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)";
$FileName        = $(Join-Path $ToolsDir 32669SamG.ModernFlyouts_0.9.0.0_neutral___pcy8vm99wrpcg.Msixbundle);
$Version         = "0.9.0";
$AppxPackageName = "32669SamG.ModernFlyouts";
$WindowsVersion  = [Environment]::OSVersion.Version;

if ($WindowsVersion.Major -ne "10") {
  throw "This package requires Windows 10.";
};
#The .msixbundle format is not supported on Windows 10 version 1709 and 1803. https://docs.microsoft.com/en-us/windows/msix/msix-1709-and-1803-support
$IsCorrectBuild=[Environment]::OSVersion.Version.Build;
if ($IsCorrectBuild -lt "18362") {
  throw "This package requires at least Windows 10 version 1903/OS build 18362.x.";
};

Write-Host -ForegroundColor green "Adding certificate to the system's trusted store"
certutil -addstore -f "TrustedPeople" $(Join-Path $ToolsDir ModernFlyouts.Package_0.5.0.0_AnyCPU.cer);

if ((Get-AppxPackage -name $AppxPackageName).Version -Match $Version) {
  if($env:ChocolateyForce) {
    # you can't install the same version of an appx package, you need to remove it first
    Write-Host Removing already installed version first. ;
    Get-AppxPackage -Name $AppxPackageName | Remove-AppxPackage;
  } else {
    Write-Host The $Version version of Files is already installed. If you want to reinstall use --force ;
    return;
  };
};

Add-AppxPackage -Path $FileName;
tools\chocolateyuninstall.ps1
Get-AppxPackage -Name "32669SamG.ModernFlyouts" | Remove-AppxPackage
tools\ModernFlyouts.Package_0.5.0.0_AnyCPU.cer
 

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Add to Builder Version Downloads Last Updated Status
ModernFlyouts 0.10.0-beta1 1481 Wednesday, October 27, 2021 Approved
ModernFlyouts 0.9.3 2316 Thursday, April 22, 2021 Approved
ModernFlyouts 0.9.2-beta1 183 Saturday, April 10, 2021 Approved
ModernFlyouts 0.9.1 645 Saturday, March 13, 2021 Approved
ModernFlyouts 0.9.0 457 Sunday, January 24, 2021 Approved
ModernFlyouts 0.8.5 243 Wednesday, December 16, 2020 Approved
ModernFlyouts 0.8.1 149 Saturday, November 28, 2020 Approved
ModernFlyouts 0.7.8.0 110 Wednesday, November 25, 2020 Approved
ModernFlyouts 0.7.5.0 121 Monday, November 23, 2020 Approved
ModernFlyouts 0.7.1 102 Monday, November 23, 2020 Approved
ModernFlyouts 0.7.0 132 Saturday, November 7, 2020 Approved
ModernFlyouts 0.6.8 106 Saturday, November 7, 2020 Approved
ModernFlyouts 0.6.5 144 Saturday, November 7, 2020 Approved
ModernFlyouts 0.6.0 98 Saturday, November 7, 2020 Approved
ModernFlyouts 0.5.0 107 Saturday, November 7, 2020 Approved
ModernFlyouts 0.3.0 154 Friday, October 16, 2020 Approved

Hi everyone!

To start off 2021 [cough cough 2020 - 1 cough cough], we are releasing the much expected v0.9 update. Thanks to everyone who has made and is continuing to make this project great and sustain!

For this release, I would like to give a big shout out to our good friend @ADeltaX, one of our core team member and a legend who has made contributions which we considered impossible. And as always, a "bIg ThAnKs" (lol no, he sucks!) to @ShankarBUS, co-owner and the "founder" (cough cough rebranded AudioFlyout cough cough) without whom this project would not be possible (nah I'm just lying).

And a huge huge thanks to our contributors!

This release includes code from a few new names, and I must extend our gratitude to them as well.

And finally, thanks to all our 65 thousand users, your support and feedback has been invaluable.

This year is looking to be exciting with all the new features planned and v1.0 release on the horizon.

Now to business, you’ve heard me blabbing on for long enough, this update is quite extensive and includes the following changes:

Release Notes:

Bug Fixes

  • Fixed #29 - Bug: Media Sessions are not updating in Windows 10 2004. This bug is caused by an issue in a Windows 10 WinRT API called GlobalSystemMediaTransportControlsSessionManager. Its SessionsChanged event didn't get raised since Windows 10 2004 which they fixed in a later insider build. A huge thanks to @ADeltaX!

  • Fixed #32 - Bug: ModernFlyouts gets hidden behind other topmost windows and not shown in Lockscreen. This issue happens due to the restrictions laid down by Windows. Windows doesn't allow regular top-most top-level windows to be shown on top of several other windows (some full-screen apps, Start menu, Always-On-Top Task Manager and the lock screen). We had to do some dark magic to get this thing to show on-top of every window which the native flyout could. Thanks to @ADeltaX for discovering the CreateWindowInBand private API and for getting the dll injection to work properly.

  • Fixed #184 - Bug: Win32 apps' information are not shown in the media session controls. Another issue caused by the Windows 10 WinRT API GlobalSystemMediaTransportControlsSessionManager.

  • Fixed #305 - Bug: Pressing and holding caps lock toggles flyout twice.. Fixed as a part of #306 by a community member @Renzo904. Thank you @Renzo904! ❤❤❤

  • Fixed #312 - Bug: Use mousewheel turn up volume will stuck at some value. Fixed as a part of #313. Thanks again @Renzo904!

What's New

  • Resolved #327 - Feature request: Multi-monitor support. Now, you can select which monitor the flyout auto align to or be moved to (based on relative position).

  • Resolved #74 - Feature Request: Offer some sensible default positions. From now on, there are options to auto place the flyout to your desired alignment on your desired monitor.

  • Resolved #71 - Feature Request: Add the ability to change whether the Media controls appears below or above the Volume controls and and the ability to control the expand direction. Two new options called "Content stacking direction" and "Expand direction" (expand animation direction, to be precise) have been added.

  • Resolved #135 - Feature Request: On Computers with multiple monitors, have a setting to change which monitor the flyout appears on. Related to #327.

  • Resolved #136 - Feature Request: Split the Media session Flyouts and volume flyouts as it was pre 0.5

  • Resolved #97 - Feature proposal: Add support for seeking or changing the progress of the media playback. The timeline info progress bar has now been replaced by a slider. This change allows you to seek the playback position easily from ModernFlyouts without having to open the source application.

  • Resolved #114 - Timeline info suggestion. The timeline info controls have been moved into the main flyout instead of being in a separate flyout.

  • Resolved #224 - Feature Request: Option to toggle the album art background for media controls. Fixed as a part of #315 by another community member @fheck. Thanks to you too @fheck! ❤❤❤.

  • Resolved #183 - Feature Request: Move flyout default position setting to personalisation page from general

  • Resolved #69 (noice) - Support for DPI Awareness

  • Resolved #361 - Fixed an issue where Spotify's thumbnail were scaled improperly. We had to crop the extra padding and their branding from the thumbnails provided by Spotify.

  • Reworked topbar animations.

Known issues

  • Tooltips gets hidden behind the main flyout. I know! I worked 3 weeks with this! I AM fully aware of this

  • Flyout bounces indefinitely (lol XD XD hilarious) on hover sometimes when the topbar is set to auto-hide and the flyout is auto aligned to bottom.

  • Users can't specify how close the flyout can get to the screen bounds (or can't set margin, to be precise) when it's auto placed. The ability has already been added internally but due to time limitations this feature couldn't make it to this release.

Our struggles for v0.9

NowPlayingSessionManager

INowPlayingSessionManager (INPSM) is a private Windows 10 API (since 1511) which is also the core API used by the native flyout and a Windows 10 WinRT API called GSMTC (GlobalSystemMediaTransportControlsSessionManager) (since Windows 10 1809). We were previously using GSMTC for our media controls. But it lead to some dead ends like #29 & #184. In order to overcome the issues laid down by the GSMTC APIs, @ADeltaX suggested to use a private API found in Windows 10 reserved for internal usage called INowPlayingSessionManager. But there were plenty of problems while doing so. Since INPSM is reserved for internal usage by Microsoft, they didn't care about breaking and altering it in every Windows 10 build.

@ADeltaX had to do all the hard work to get it running across all Windows 10 versions properly.

He wrote a wrapper called NPSMLib which will execute OS specific functions and work on all Windows 10 versions from 1511 to the latest insider builds.

He made a standalone Nuget package called NPSMLib so that others could be benefited too.

If you're interested in the NPSMLib, please check out its GitHub repository.

Above Lockscreen & Topmost Flyout

Some users were struggling with the flyout getting hidden behind some full-screen apps, Start Menu, Always-on-top Task Manager & the lock screen. While the native flyout had no problems with being topmost, we had no options other than doing some black magic.

@ADeltaX discovered and documented a private Windows API called CreateWindowInBand which he made use of in his AudioFlyout and MobileShell.

This CreateWindowInBand API is also reserved for internal usage by Microsoft and has plenty of restrictions in order to prevent it from being used by 3rd party applications. The CreateWindowInBand works fine if we target the normal window band but for higher bands MS has laid some serious restrictions.

> CreateWindowInBand/Ex works ONLY if you pass ZBID_DEFAULT or ZBID_DESKTOP as dwBand argument. Also ZBID_UIACCESS is permitted only if the process has UIAccess token (obtainable, for example, by setting uiAccess=true in app.manifest, more info here). Any other ZBID will fail with 0x5 (ACCESS DENIED).

> For CreateWindowInBand/Ex, to be able to use more ZBIDs, the program must have a special PE header, named ".imrsiv" ( bss_seg), flagged with IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY and be signed with a Microsoft certificate "Microsoft Windows".

Quoted from ADeltaX's blog

So, in order to use the CreateWindowInBand API, we need the executable to be either

  • an UIAccess enabled process which indeed requires it to be signed by a proper certificate (could be obtained but costs a lump amount of money).

  • an immersive process and be signed with a Microsoft certificate "Microsoft Windows".

Both of them won't happen obviously. This is where the black magic kicks in.

So, what we need is a surrogate host which has the ability to be an immersive process and be signed with a Microsoft certificate "Microsoft Windows" and won't do anything other than hosting our application. And guess what? @ADeltaX strikes again! He discovered the proper host for this purpose which is called as the "RuntimeBroker" (an immersive, MS signed surrogate application found inside C:\Windows\System32\). He had to get 4 architecture specific RuntimeBroker executables from 4 different Windows 10 OSes (x86, x64, ARM and ARM64). He renamed it to Bro_(arch).exe for fun.

Using RuntimeBroker to host and execute our application was not a joke. It required us to do dll injection and host the .NET 5 CoreCLR inside of it. For further information see this comment - https://github.com/ModernFlyouts-Community/ModernFlyouts/issues/32#issuecomment-735454172.

I can assure you this procedure is completely safe and secure. It won't affect your system and infringe your privacy. We guarantee you on that.

Somehow, we made it to work properly. We can't thank @ADeltaX enough for all his help ❤. Attributing him is the only thing we can do in return.

Final Words

I @ShankarBUS, the author and lead developer of this project will be leaving this team and this project in the hands of the other 3 core team members @Samuel12321, @Cyberdroid1 and @ADeltaX.

This will be the last release from myside.

Before leaving, I would like to give huge shout-outs to

  • @ADeltaX, for AudioFlyout and every single help from him.

  • @Samuel12321 (co-owner, publisher and maintainer), for publishing this application to Microsoft Store, WinGet, dealing with users and helping me maintain this repo since its early stages.

  • @Cyberdroid1, for his ideas, suggestions, motivation, help and enthusiasm for this project.

  • And finally all the community members (either on Discord, Telegram or GitHub), for all the contributions, motivations, suggestions, ideas and help and everything!

It means a lot to me.

My final words: Change da world… my final message. Goodb ye.


This package has no dependencies.

Discussion for the ModernFlyouts Package

Ground Rules:

  • This discussion is only about ModernFlyouts and the ModernFlyouts package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or ModernFlyouts, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus