Exemple #1
0
 public void TogglePinWindow()
 {
     try
     {
         if (IsPinnedApplication)
         {
             return;                      // don't pin a window of an already pinned app
         }
         if (!IsPinnedWindow)
         {
             VirtualDesktop.PinWindow(Handle);
             PinWatcher.WatchWindow(this);
             AppModel.PinnedWindows.Add(this);
         }
         else
         {
             VirtualDesktop.UnpinWindow(Handle);
             AppModel.PinnedWindows.Remove(this);
         }
     }
     catch (Exception ex)
     {
         Log.LogEvent("Window", $"Handle: {Handle}\nCaption: {GetWindowText()}", ex);
     }
 }
Exemple #2
0
        private void Startup(object app, EventArgs evt)
        {
            // avoid multiple startup
            Application.Idle -= Startup;

            // run pre-start checks
            if (!Utils.EnsureMinimumOSVersion() ||
                !Utils.EnsureSingleInstance())
            {
                Application.Exit();
                return;
            }

            TrayIcon = new NotifyIcon()
            {
                Visible          = true,
                Text             = $"FreeVD {AppModel.Version}",
                ContextMenuStrip = new ContextMenuStrip()
            };
            TrayIcon.ContextMenuStrip.Items.AddRange(new ToolStripItem[]
            {
                new ToolStripMenuItem("Switch Desktop"),
                new ToolStripMenuItem("All Windows Here", null, (obj, args) => VirtualDesktop.Current.GatherWindows()),
                new ToolStripSeparator(),
                new ToolStripMenuItem("Settings", null, (obj, args) => OpenSettings()),
                new ToolStripMenuItem("Exit", null, (obj, args) => Application.Exit())
            });
            SetIcon(VirtualDesktop.Current);

            // events
            TrayIcon.MouseDoubleClick += (obj, args) =>
            { if (args.Button == MouseButtons.Left)
              {
                  OpenSettings();
              }
            };
            TrayIcon.ContextMenuStrip.Opening += (obj, args) => ConfigureDesktopsMenu();

            // keep icon in sync with desktop
            VirtualDesktop.CurrentChanged += (obj, args) => SetIcon(args.NewDesktop);

            // remove icon when exiting
            Application.ApplicationExit += (obj, args) => TrayIcon.Visible = false;

            // watch pinned apps/windows
            PinWatcher.Initialize();

            // open settings if app was started again
            Utils.ListenForAppStarts(OpenSettings);
        }