Beispiel #1
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            terminalView = new TerminalView(View.Frame);
            var t    = terminalView.Terminal;
            var size = new UnixWindowSize();

            GetSize(t, ref size);

            pid = Pty.ForkAndExec("/bin/bash", new string [] { "/bin/bash" }, Terminal.GetEnvironmentVariables(), out fd, size);
            DispatchIO.Read(fd, (nuint)readBuffer.Length, DispatchQueue.CurrentQueue, ChildProcessRead);


            terminalView.UserInput += (byte [] data) => {
                DispatchIO.Write(fd, DispatchData.FromByteBuffer(data), DispatchQueue.CurrentQueue, ChildProcessWrite);
            };
            terminalView.Feed("Welcome to XtermSharp - NSView frontend!\n");
            terminalView.TitleChanged += (TerminalView sender, string title) => {
                View.Window.Title = title;
            };
            terminalView.SizeChanged += (newCols, newRows) => {
                UnixWindowSize nz = new UnixWindowSize();
                GetSize(t, ref nz);
                var res = Pty.SetWinSize(fd, ref nz);
                Console.WriteLine(res);
            };
            View.AddSubview(terminalView);
        }
Beispiel #2
0
        void HandleSizeChanged(int newCols, int newRows)
        {
            UnixWindowSize newSize = new UnixWindowSize();

            GetUnixWindowSize(terminalView.Frame, terminalView.Terminal.Rows, terminalView.Terminal.Cols, ref newSize);
            var res = Pty.SetWinSize(shellFileDescriptor, ref newSize);

            // TODO: log result of SetWinSize if != 0

            UpdateScroller();
        }
Beispiel #3
0
        /// <summary>
        /// Notifies the subshell that the size has changed
        /// </summary>
        public override void NotifySizeChanged(int newCols, int newRows, nfloat width, nfloat height)
        {
            UnixWindowSize newSize = new UnixWindowSize();

            GetUnixWindowSize(newCols, newRows, width, height, ref newSize);

            if (IsRunning)
            {
                var res = Pty.SetWinSize(shellFileDescriptor, ref newSize);
                // TODO: log result of SetWinSize if != 0
            }
            else
            {
                initialSize = newSize;
            }
        }