Mono winforms app fullscreen in Ubuntu?

前端 未结 10 2330

Just wondering if there\'s a known way of getting a Mono System.Windows.Forms application to go fullscreen on Ubuntu/Gnome.

Mono is 2.4.2.3 Ubuntu is 9.10

Doing

相关标签:
10条回答
  • 2021-02-08 11:59

    YMMV. http://fixunix.com/xwindows/91585-how-make-xlib-based-window-full-screen.html

    0 讨论(0)
  • 2021-02-08 12:00

    I have been suffered by this problem 2 days and finally i got the solution: click the 1st icon on left tool bar and search compizconfig program. Go to preference-> unity and you will see there is a tick for unity plugin on the left side. Remove that tick and you will see the top menu bar disappeared. Though this thread is very old but I still hope I can help anyone who gets this problem and seek for help.

    0 讨论(0)
  • 2021-02-08 12:01

    _NET_WM_STATE_FULLSCREEN will just get rid of the borders. The GNOME panel will still appear.

    According to the following post, the secret is to get rid of the minimum/maximum sizes so that the window manager does the resizing itself:

    http://linux.derkeiler.com/Mailing-Lists/GNOME/2010-01/msg00035.html

    Here is some documentation on the native spec:

    http://standards.freedesktop.org/wm-spec/wm-spec-latest.html

    http://www.x.org/docs/ICCCM/icccm.pdf

    To talk directly to the X Window System you have to pinvoke into XLib. In order to send something like _NET_WM_STATE_FULLSCREEN you have to have a pointer to the window and also to the display.

    I am not sure how to find the display but I can help with a pointer to the window. When running on X, the property Form.Handle should be a pointer to the X window.

    0 讨论(0)
  • 2021-02-08 12:03

    The following worked:

    (Inspiration was taken from here: https://bugzilla.xamarin.com/show_bug.cgi?id=40997)

    1) sudo apt-get install wmctrl

    2) In your code:

    Form form = new MainWindow();
    form.FormBorderStyle = FormBorderStyle.None;
    form.WindowState = FormWindowState.Maximized;
    
    form.Load += (s, e) => {
        Process process = new Process {
            StartInfo = new ProcessStartInfo {
                FileName = "wmctrl",
                Arguments = $"-r :ACTIVE: -b add,fullscreen",
                CreateNoWindow = true
            }
        };
        process.Start();
        process.WaitForExit();
    };
    
    Application.Run(form);
    
    0 讨论(0)
提交回复
热议问题