public SystrayContext(bool standalone = false) { Logger.Information($"starting (standalone = {standalone})"); Standalone = standalone; Logger.Information($"inizializing transparent form"); TransparentForm form = new TransparentForm(); form.AmethystSysTrayReconnect += Form_AmethystSysTrayReconnect; form.AmethystSystrayHotKey += Form_AmethystSystrayHotKey; MainForm = form; Logger.Information($"inizializing context menu"); MenuItem versionMenuItem = new MenuItem("Amethyst Windows"); versionMenuItem.Enabled = false; MenuItem separatorMenuItem = new MenuItem("-"); MenuItem openMenuItem = new MenuItem("Open", new EventHandler(App_Open)); MenuItem exitMenuItem = new MenuItem("Exit", new EventHandler(App_Exit)); openMenuItem.DefaultItem = true; Logger.Information($"inizializing notify icon"); NotifyIcon = new NotifyIcon(); NotifyIcon.DoubleClick += new EventHandler(App_Open); NotifyIcon.Icon = AmethystWindowsSystray.Properties.Resources.SystrayIcon; NotifyIcon.ContextMenu = new ContextMenu(new MenuItem[] { versionMenuItem, separatorMenuItem, openMenuItem, exitMenuItem }); NotifyIcon.Visible = true; Logger.Information($"connecting to UWP"); App_Connect(); Logger.Information($"generating DWM"); DWM = new DesktopWindowsManager(); DWM.Changed += Handlers_Changed; Logger.Information($"getting layouts"); DWM.LoadLayouts(); Logger.Information($"setting hooks"); hooksHelper = new HooksHelper(DWM); hooksHelper.setWindowsHook(); hooksHelper.setKeyboardHook(form.Handle); Logger.Information($"getting windows"); DWM.GetWindows(); Logger.Information($"drawing"); DWM.Draw(); Logger.Information($"setting virtual desktop change listener"); IDisposable listener = VirtualDesktop.RegisterListener(); VirtualDesktop.CurrentChanged += VirtualDesktop_CurrentChanged; Logger.Information($"setting virtual desktops"); int virtualDesktopsExisting = VirtualDesktop.Count; int virtualDesktopsToCreate = Properties.Settings.Default.VirtualDesktops - virtualDesktopsExisting; if (virtualDesktopsExisting < Properties.Settings.Default.VirtualDesktops) { for (int i = 1; i <= virtualDesktopsToCreate; i++) { VirtualDesktop.Create(); } } Logger.Information($"refreshing UWP"); App_Refresh(); App_SendPadding(); App_SendFilters(); }
private void Connection_RequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args) { AppServiceDeferral deferral = args.GetDeferral(); if (args.Request.Message.ContainsKey("refresh")) { App_Refresh(); } if (args.Request.Message.ContainsKey("redraw")) { DWM.Draw(); } if (args.Request.Message.ContainsKey("padding_read")) { App_SendPadding(); } if (args.Request.Message.ContainsKey("padding_set")) { args.Request.Message.TryGetValue("padding_set", out object message); int newPadding = int.Parse(message.ToString()); DWM.Padding = newPadding; Properties.Settings.Default.Padding = newPadding; Properties.Settings.Default.Save(); } if (args.Request.Message.ContainsKey("filters_set")) { args.Request.Message.TryGetValue("filters_set", out object message); List <List <string> > receivedFilters = JsonConvert.DeserializeObject <List <List <string> > >(message.ToString()); List <Pair <string, string> > parsedFilters = new List <Pair <string, string> >(); foreach (List <string> f in receivedFilters) { parsedFilters.Add(new Pair <string, string>( f[0], f[1] )); } DWM.ConfigurableFilters = parsedFilters; Properties.Settings.Default.Filters = JsonConvert.SerializeObject(parsedFilters); Properties.Settings.Default.Save(); DWM.ClearWindows(); DWM.GetWindows(); DWM.Draw(); } deferral.Complete(); }