diff --git a/#124.ico b/#124.ico
new file mode 100644
index 0000000..863cbf8
Binary files /dev/null and b/#124.ico differ
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..22d4cf0
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2011, 2012 NOVALISTIC
+Copyright (c) 2019 Richard Gráčik - Morc
+
+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.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8445ecb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,23 @@
+# Touchbar
+
+A WPF application, written in C# that mimics the macOS Volume/Brightness HUD GUI interface.
+It's based on the [WPFDraggableFrame sample application](https://github.com/NOVALISTIC/WPFDraggableFrame) by [@NOVALISTIC](https://github.com/NOVALISTIC).
+It's verified working on Windows Vista, Windows 7, Windows 8 and 8.1. It also works on both 10 and 11 albeit with graphical bugs due to Aero being removed in these versions of Windows.
+
+Don't judge the codebase. It's quite a bit sketchy and messy, basically done as best as my 15 year old mind could do back then.
+
+## Screenshots
+
+### Windows Vista
+![volume control](https://cdn.discordapp.com/attachments/363965764987912194/1137849632727253032/image.png)
+
+### Windows 8.1
+![volume control](https://cdn.discordapp.com/attachments/363965764987912194/1137857268155678791/Snimka_obrazovky_8.png)
+![brightness control](https://cdn.discordapp.com/attachments/363965764987912194/1137857268432515133/Snimka_obrazovky_7.png)
+
+### Windows 11
+![volume control](https://cdn.discordapp.com/attachments/363965764987912194/1137846928579764335/image.png)
+![brightness control](https://cdn.discordapp.com/attachments/363965764987912194/1137847006879023244/image.png)
+
+All code in this application is distributed under the original MIT license, which can be found
+in [LICENSE.md](LICENSE.md).
\ No newline at end of file
diff --git a/Touchbar.sln b/Touchbar.sln
new file mode 100644
index 0000000..fb39f5d
--- /dev/null
+++ b/Touchbar.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28803.156
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Touchbar", "WPFDraggableFrame\Touchbar.csproj", "{9C4B28BF-26A7-4968-816A-17572F188611}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documents", "Documents", "{278FEAC5-C803-4DD1-9D6E-7455C17DA045}"
+ ProjectSection(SolutionItems) = preProject
+ license.txt = license.txt
+ readme.txt = readme.txt
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9C4B28BF-26A7-4968-816A-17572F188611}.Debug|x86.ActiveCfg = Debug|x86
+ {9C4B28BF-26A7-4968-816A-17572F188611}.Debug|x86.Build.0 = Debug|x86
+ {9C4B28BF-26A7-4968-816A-17572F188611}.Release|x86.ActiveCfg = Release|x86
+ {9C4B28BF-26A7-4968-816A-17572F188611}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {8AE9A7C9-9803-4E87-A5DE-269664DA52CF}
+ EndGlobalSection
+EndGlobal
diff --git a/WPFDraggableFrame/0.ico b/WPFDraggableFrame/0.ico
new file mode 100644
index 0000000..cc3aed8
Binary files /dev/null and b/WPFDraggableFrame/0.ico differ
diff --git a/WPFDraggableFrame/1.ico b/WPFDraggableFrame/1.ico
new file mode 100644
index 0000000..f61b939
Binary files /dev/null and b/WPFDraggableFrame/1.ico differ
diff --git a/WPFDraggableFrame/2.ico b/WPFDraggableFrame/2.ico
new file mode 100644
index 0000000..c2bd70d
Binary files /dev/null and b/WPFDraggableFrame/2.ico differ
diff --git a/WPFDraggableFrame/3.ico b/WPFDraggableFrame/3.ico
new file mode 100644
index 0000000..068a740
Binary files /dev/null and b/WPFDraggableFrame/3.ico differ
diff --git a/WPFDraggableFrame/4.ico b/WPFDraggableFrame/4.ico
new file mode 100644
index 0000000..863cbf8
Binary files /dev/null and b/WPFDraggableFrame/4.ico differ
diff --git a/WPFDraggableFrame/App.xaml b/WPFDraggableFrame/App.xaml
new file mode 100644
index 0000000..ddd05f7
--- /dev/null
+++ b/WPFDraggableFrame/App.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/WPFDraggableFrame/App.xaml.cs b/WPFDraggableFrame/App.xaml.cs
new file mode 100644
index 0000000..52935b5
--- /dev/null
+++ b/WPFDraggableFrame/App.xaml.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Windows;
+
+namespace WPFDraggableFrame
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
\ No newline at end of file
diff --git a/WPFDraggableFrame/DwmApiInterop.cs b/WPFDraggableFrame/DwmApiInterop.cs
new file mode 100644
index 0000000..397ab9a
--- /dev/null
+++ b/WPFDraggableFrame/DwmApiInterop.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Security;
+
+namespace Touchbar
+{
+ public struct DwmBlurbehind
+ {
+ public int dwFlags;
+ public bool fEnable;
+ public string hRgnBlur;
+ public bool fTransitionOnMaximized;
+ }
+ public static class DwmApiInterop
+ {
+ public const int DWM_BB_TRANSITIONMAXIMIZED = 0x00000004;
+ public const int DWM_BB_ENABLE = 0x00000001;
+ public const int DWM_BB_BLURREGION = 0x00000002;
+
+ public static bool IsCompositionEnabled()
+ {
+ bool isEnabled = false;
+ NativeMethods.DwmIsCompositionEnabled(ref isEnabled);
+ return isEnabled;
+ }
+
+ public static int ExtendFrameIntoClientArea(IntPtr hWnd, ref DwmBlurbehind blurBehind)
+ {
+ return NativeMethods.DwmEnableBlurBehindWindow(hWnd, ref blurBehind);
+ }
+
+ }
+
+ [SuppressUnmanagedCodeSecurity]
+ internal static class NativeMethods
+ {
+ [DllImport("dwmapi.dll")]
+ internal static extern void DwmIsCompositionEnabled(ref bool isEnabled);
+
+ [DllImport("dwmapi.dll")]
+ internal static extern int DwmEnableBlurBehindWindow(IntPtr hWnd, ref DwmBlurbehind blurBehind);
+
+ }
+}
\ No newline at end of file
diff --git a/WPFDraggableFrame/MainWindow.xaml b/WPFDraggableFrame/MainWindow.xaml
new file mode 100644
index 0000000..17f6918
--- /dev/null
+++ b/WPFDraggableFrame/MainWindow.xaml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WPFDraggableFrame/MainWindow.xaml.cs b/WPFDraggableFrame/MainWindow.xaml.cs
new file mode 100644
index 0000000..ae0077e
--- /dev/null
+++ b/WPFDraggableFrame/MainWindow.xaml.cs
@@ -0,0 +1,232 @@
+using AudioSwitcher.AudioApi;
+using AudioSwitcher.AudioApi.CoreAudio;
+using System;
+using System.Linq;
+using System.Management;
+using System.Timers;
+using System.Windows;
+using System.Windows.Interop;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+
+namespace Touchbar
+{
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+
+ #region Aeroify
+
+ private IntPtr hwnd;
+ private HwndSource hsource;
+
+ private void Window_SourceInitialized(object sender, EventArgs e)
+ {
+ try
+ {
+ if ((hwnd = new WindowInteropHelper(this).Handle) == IntPtr.Zero)
+ {
+ throw new InvalidOperationException("Could not get window handle for the main window.");
+ }
+
+ hsource = HwndSource.FromHwnd(hwnd);
+
+ AdjustWindowFrame();
+ }
+ catch (InvalidOperationException)
+ {
+ FallbackPaint();
+ }
+ }
+
+ private void AdjustWindowFrame()
+ {
+ if (DwmApiInterop.IsCompositionEnabled())
+ {
+ ExtendFrameIntoClientArea(4, 4, (int)this.Height - 40, 15);
+ }
+ else
+ {
+ FallbackPaint();
+ }
+ }
+
+ private void ExtendFrameIntoClientArea(int left, int right, int top, int bottom)
+ {
+ var settings = new DwmBlurbehind { dwFlags = DwmApiInterop.DWM_BB_ENABLE, fEnable = true, fTransitionOnMaximized = false, hRgnBlur = null };
+ int hresult = DwmApiInterop.ExtendFrameIntoClientArea(hwnd, ref settings);
+
+ if (hresult == 0)
+ {
+ hsource.CompositionTarget.BackgroundColor = Colors.Transparent;
+ Background = Brushes.Transparent;
+ }
+ else
+ {
+ throw new InvalidOperationException("Could not extend window frames in the main window.");
+ }
+ }
+
+ private void FallbackPaint()
+ {
+ Background = Brushes.White;
+ }
+
+ #endregion
+
+ #region definitions and functions
+ //definitions
+ //brightness
+ public ManagementObjectSearcher brightness = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM WmiMonitorBrightness");
+ private int tempBrightness = 0;
+ private int brightnessMaximum = 0;
+ BitmapImage brightnessIcon = new BitmapImage(new Uri("pack://application:,,,/Touchbar;component/brightness.ico"));
+ //volume
+ public CoreAudioController Controller { get; } = new CoreAudioController();
+ public CoreAudioDevice audioDevice
+ {
+ get
+ {
+ return Controller
+ .GetPlaybackDevices(DeviceState.Active)
+ .FirstOrDefault(o => o.IsDefaultDevice);
+ }
+ }
+ private int tempVolume = 0;
+ BitmapImage mutedAudio = new BitmapImage(new Uri("pack://application:,,,/Touchbar;component/0.ico"));
+ BitmapImage noAudio = new BitmapImage(new Uri("pack://application:,,,/Touchbar;component/1.ico"));
+ BitmapImage minAudio = new BitmapImage(new Uri("pack://application:,,,/Touchbar;component/2.ico"));
+ BitmapImage medAudio = new BitmapImage(new Uri("pack://application:,,,/Touchbar;component/3.ico"));
+ BitmapImage maxAudio = new BitmapImage(new Uri("pack://application:,,,/Touchbar;component/4.ico"));
+ //other
+ Timer detectionTimer = new Timer(100);
+ Timer minimizeTimer = new Timer(2000);
+ private static bool isRun = false;
+ private static readonly object syncLock = new object();
+ private SolidColorBrush green = (SolidColorBrush)new BrushConverter().ConvertFrom("#FF01D328");
+
+ //functions
+ private void detect(object source, ElapsedEventArgs e)
+ {
+ //muted audio detection, icon and progressbar change
+ if (audioDevice.IsMuted)
+ {
+ lock (syncLock)
+ {
+ if (!isRun)
+ {
+ this.Dispatcher.Invoke(new Action(() => barLevel.Maximum = 100));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Value = (int)audioDevice.Volume));
+ this.Dispatcher.Invoke(new Action(() => icon.Source = mutedAudio));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Foreground = Brushes.Red));
+ show();
+ isRun = true;
+ }
+ }
+ }
+ else
+ {
+ if (isRun)
+ {
+ isRun = false;
+ this.Dispatcher.Invoke(new Action(() => barLevel.Maximum = 100));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Value = (int)audioDevice.Volume));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Foreground = green));
+ show();
+ setVolIcon();
+ }
+ }
+
+ //volume detection
+ if (!(tempVolume == (int)audioDevice.Volume))
+ {
+ this.Dispatcher.Invoke(new Action(() => barLevel.Maximum = 100));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Value = (int)audioDevice.Volume));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Foreground = green));
+ show();
+ setVolIcon();
+ }
+
+ //brightness detection
+ try
+ {
+ foreach (ManagementObject queryObj in brightness.Get())
+ {
+ if (!(tempBrightness == Int32.Parse(queryObj["CurrentBrightness"].ToString())))
+ {
+ this.Dispatcher.Invoke(new Action(() => barLevel.Maximum = brightnessMaximum));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Foreground = green));
+ this.Dispatcher.Invoke(new Action(() => barLevel.Value = Int32.Parse(queryObj["CurrentBrightness"].ToString())));
+ this.Dispatcher.Invoke(new Action(() => icon.Source = brightnessIcon));
+ show();
+ }
+ tempBrightness = Int32.Parse(queryObj["CurrentBrightness"].ToString());
+ }
+ }
+ catch (ManagementException ex)
+ {
+ MessageBox.Show("An error occurred while querying for WMI data: " + ex.Message);
+ }
+ tempVolume = (int)audioDevice.Volume;
+ }
+
+ private void show()
+ {
+ this.Dispatcher.Invoke(new Action(() => this.Show()));
+ minimizeTimer.Enabled = true;
+ }
+
+ private void minimize(object source, ElapsedEventArgs e)
+ {
+ this.Dispatcher.Invoke(new Action(() => this.Hide()));
+ minimizeTimer.Enabled = false;
+ }
+
+ //volume icon changer
+ private void setVolIcon()
+ {
+ this.Dispatcher.Invoke(new Action(() => barLevel.Foreground = green));
+ if ((int)audioDevice.Volume >= 66)
+ {
+ this.Dispatcher.Invoke(new Action(() => icon.Source = maxAudio));
+ }
+ else if ((int)audioDevice.Volume >= 33)
+ {
+ this.Dispatcher.Invoke(new Action(() => icon.Source = medAudio));
+ }
+ else if ((int)audioDevice.Volume >= 1)
+ {
+ this.Dispatcher.Invoke(new Action(() => icon.Source = minAudio));
+ }
+ else if ((int)audioDevice.Volume == 0)
+ {
+ this.Dispatcher.Invoke(new Action(() => icon.Source = noAudio));
+ }
+ }
+
+ private void Window_Loaded(object sender, RoutedEventArgs e)
+ {
+ //brightness max level detection
+ try
+ {
+ foreach (ManagementObject queryObj in brightness.Get())
+ {
+ brightnessMaximum = Int32.Parse(queryObj["Levels"].ToString());
+ }
+ }
+ catch (ManagementException ex)
+ {
+ MessageBox.Show("An error occurred while querying for WMI data: " + ex.Message);
+ }
+ //enabling detection timer
+ detectionTimer.Elapsed += new ElapsedEventHandler(detect);
+ detectionTimer.Enabled = true;
+ minimizeTimer.Elapsed += new ElapsedEventHandler(minimize);
+ minimizeTimer.Enabled = true;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/WPFDraggableFrame/Properties/AssemblyInfo.cs b/WPFDraggableFrame/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..927a03c
--- /dev/null
+++ b/WPFDraggableFrame/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Touchbar")]
+[assembly: AssemblyDescription("On Screen Display Aero compatible replacement for Windows 7")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Morc")]
+[assembly: AssemblyProduct("Touchbar")]
+[assembly: AssemblyCopyright("Copyright © 2019 Morc")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+//In order to begin building localizable applications, set
+//CultureYouAreCodingWith in your .csproj file
+//inside a . For example, if you are using US english
+//in your source files, set the to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/WPFDraggableFrame/Properties/Resources.Designer.cs b/WPFDraggableFrame/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..38f9381
--- /dev/null
+++ b/WPFDraggableFrame/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Touchbar.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Touchbar.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/WPFDraggableFrame/Properties/Resources.resx b/WPFDraggableFrame/Properties/Resources.resx
new file mode 100644
index 0000000..29dcb1b
--- /dev/null
+++ b/WPFDraggableFrame/Properties/Resources.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/WPFDraggableFrame/Properties/Settings.Designer.cs b/WPFDraggableFrame/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..b87042b
--- /dev/null
+++ b/WPFDraggableFrame/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Touchbar.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/WPFDraggableFrame/Properties/Settings.settings b/WPFDraggableFrame/Properties/Settings.settings
new file mode 100644
index 0000000..8f2fd95
--- /dev/null
+++ b/WPFDraggableFrame/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WPFDraggableFrame/Touchbar.csproj b/WPFDraggableFrame/Touchbar.csproj
new file mode 100644
index 0000000..7b9003d
--- /dev/null
+++ b/WPFDraggableFrame/Touchbar.csproj
@@ -0,0 +1,153 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {9C4B28BF-26A7-4968-816A-17572F188611}
+ WinExe
+ Properties
+ Touchbar
+ Touchbar
+ v4.0
+ Client
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ x86
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ x86
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ WPFDraggableFrame.App
+
+
+
+ ..\packages\AudioSwitcher.AudioApi.3.0.0\lib\net40\AudioSwitcher.AudioApi.dll
+
+
+ ..\packages\AudioSwitcher.AudioApi.CoreAudio.3.0.0.1\lib\net40\AudioSwitcher.AudioApi.CoreAudio.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+
+ MainWindow.xaml
+ Code
+
+
+
+
+ Code
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/WPFDraggableFrame/Touchbar.csproj.user b/WPFDraggableFrame/Touchbar.csproj.user
new file mode 100644
index 0000000..9c755a1
--- /dev/null
+++ b/WPFDraggableFrame/Touchbar.csproj.user
@@ -0,0 +1,13 @@
+
+
+
+ publish\
+
+
+
+
+
+ en-US
+ false
+
+
\ No newline at end of file
diff --git a/WPFDraggableFrame/app.config b/WPFDraggableFrame/app.config
new file mode 100644
index 0000000..f04d0d1
--- /dev/null
+++ b/WPFDraggableFrame/app.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WPFDraggableFrame/brightness.ico b/WPFDraggableFrame/brightness.ico
new file mode 100644
index 0000000..18d40a0
Binary files /dev/null and b/WPFDraggableFrame/brightness.ico differ
diff --git a/WPFDraggableFrame/packages.config b/WPFDraggableFrame/packages.config
new file mode 100644
index 0000000..2bb30e7
--- /dev/null
+++ b/WPFDraggableFrame/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/AudioSwitcher.AudioApi.3.0.0/.signature.p7s b/packages/AudioSwitcher.AudioApi.3.0.0/.signature.p7s
new file mode 100644
index 0000000..1c40584
Binary files /dev/null and b/packages/AudioSwitcher.AudioApi.3.0.0/.signature.p7s differ
diff --git a/packages/AudioSwitcher.AudioApi.3.0.0/AudioSwitcher.AudioApi.3.0.0.nupkg b/packages/AudioSwitcher.AudioApi.3.0.0/AudioSwitcher.AudioApi.3.0.0.nupkg
new file mode 100644
index 0000000..9348b4d
Binary files /dev/null and b/packages/AudioSwitcher.AudioApi.3.0.0/AudioSwitcher.AudioApi.3.0.0.nupkg differ
diff --git a/packages/AudioSwitcher.AudioApi.3.0.0/lib/net40/AudioSwitcher.AudioApi.dll b/packages/AudioSwitcher.AudioApi.3.0.0/lib/net40/AudioSwitcher.AudioApi.dll
new file mode 100644
index 0000000..1c8d20c
Binary files /dev/null and b/packages/AudioSwitcher.AudioApi.3.0.0/lib/net40/AudioSwitcher.AudioApi.dll differ
diff --git a/packages/AudioSwitcher.AudioApi.4.0.0-alpha5.deleteme b/packages/AudioSwitcher.AudioApi.4.0.0-alpha5.deleteme
new file mode 100644
index 0000000..e69de29
diff --git a/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/.signature.p7s b/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/.signature.p7s
new file mode 100644
index 0000000..f20c873
Binary files /dev/null and b/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/.signature.p7s differ
diff --git a/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1.nupkg b/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1.nupkg
new file mode 100644
index 0000000..904dd9f
Binary files /dev/null and b/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1.nupkg differ
diff --git a/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/lib/net40/AudioSwitcher.AudioApi.CoreAudio.dll b/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/lib/net40/AudioSwitcher.AudioApi.CoreAudio.dll
new file mode 100644
index 0000000..74d453f
Binary files /dev/null and b/packages/AudioSwitcher.AudioApi.CoreAudio.3.0.0.1/lib/net40/AudioSwitcher.AudioApi.CoreAudio.dll differ
diff --git a/packages/Microsoft.Bcl.Build.1.0.14.deleteme b/packages/Microsoft.Bcl.Build.1.0.14.deleteme
new file mode 100644
index 0000000..e69de29
diff --git a/packages/Microsoft.Bcl.Build.1.0.14/tools/Microsoft.Bcl.Build.Tasks.dll b/packages/Microsoft.Bcl.Build.1.0.14/tools/Microsoft.Bcl.Build.Tasks.dll
new file mode 100644
index 0000000..054e776
Binary files /dev/null and b/packages/Microsoft.Bcl.Build.1.0.14/tools/Microsoft.Bcl.Build.Tasks.dll differ