Example #1
0
 public HooksHelper(DesktopWindowsManager desktopWindowsManager)
 {
     DesktopWindowsManager = desktopWindowsManager;
 }
        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();
        }