簡體   English   中英

Mac OS X上的Mono調整大小終端

[英]Mono resize terminal on Mac OS X

在Windows中, 公共靜態void SetWindowSize(int width,int height)可以正常工作。

對於單聲道,不支持此方法。

在Mac OS X下,是否可以通過某些DllImport做到這一點?

這是適用於優勝美地的最終解決方案:

感謝apple.stackexchange的RobertN和Chris Page: https ://apple.stackexchange.com/questions/33736/can-a-terminal-window-be-resized-with-a-terminal-command/47841#47841 ? newreg = 7290606aabbc45468a3f3ee640cd1d09

using System;
using System.Runtime.InteropServices;

namespace Demo.Native.ResizeTerm
{
    class MainClass
    {
        [DllImport ("libc")]
        private static extern int system (string exec);


        public static void Main (string[] args)
        {
            system(@"printf '\e[8;50;100t'");
            Console.WriteLine ("We will be 50 lines and 100 columns in Terminal.app now");
            Console.ReadKey ();
        }
    }
}

更新:我忽略了“調整大小”來自XQuartz(xserver / xterm)軟件包的事實,Apple不再直接提供或維護該軟件包。 有關信息,請參見XQuartz項目。 請參閱Swell的答案,因為它使用了術語大小轉義序列(所有調整大小實際上都在做)。

您可以使用系統調用來“調整大小”(有關詳細信息,請使用man調整大小 )。 這是所有(?)xterm和shell(bash / tsh / csh / ...)的標准配置

假設您沒有使用ncurses,但是如果您正在使用ncurses並設置了調整大小處理程序,則將獲得resize事件,就像用戶使用鼠標調整終端大小一樣。

using System;
using System.Runtime.InteropServices;

namespace Demo.Native.ResizeTerm
{
    class MainClass
    {
        [DllImport ("libc")]
        private static extern int system (string exec);


        public static void Main (string[] args)
        {
            system("resize -s 50 100 > /dev/null");
            Console.WriteLine ("We will be 50 lines and 100 columns in Terminal.app now");
            Console.ReadKey ();
        }
    }
}

我將此示例添加到了CursesSharp存儲庫中,該鏈接是github的源鏈接: https : //github.com/sushihangover/CursesSharp/blob/368906549512446dc5e97f8c9214c482d6847aac/CursesSharp.Demo/Demo.Native.Native.ResizeTerm/Program.cs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM