summaryrefslogtreecommitdiff
path: root/Terminal
AgeCommit message (Collapse)Author
2019-02-06Clean up LDFLAGS a bit.Andreas Kling
While working on the ELF loader I was trying to keep binaries as simple as possible so I could understand them easily. Now that the ELF loader is mature and working fine, we can move closer towards ld defaults.
2019-02-06Clean up some uninteresting log spam.Andreas Kling
2019-02-05Add a simple close button ("X") to windows.Andreas Kling
Clicking the button generates a WindowCloseRequest event which the client app then has to deal with. The default behavior for GWindow is to close() itself. I also added a flag, GWindow::should_exit_event_loop_on_close() which does what it sounds like it does. This patch exposed some bugs in GWindow and GWidget teardown.
2019-02-04Terminal: Fix broken parsing of background color escape.Andreas Kling
2019-02-04Terminal: Avoid dirtying lines when clearing them has no visual effect.Andreas Kling
2019-02-03Get nyancat nyanning in Serenity.Andreas Kling
I found a cute program that renders an animated nyancat in the terminal. This patch adds enough hackery to get it working correctly. :^)
2019-02-03Terminal: Add limited support for 'M' escape sequence (delete line.)Andreas Kling
2019-02-03Terminal: Constrain the cursor inside the terminal rect.Andreas Kling
2019-02-02Add basic automatic dependency management to Makefiles.Andreas Kling
2019-02-01Terminal: Draw the cursor by reversing foreground/background color.Andreas Kling
This makes the cursor pleasantly see-through.
2019-01-31Big, possibly complete sweep of naming changes.Andreas Kling
2019-01-30Terminal: Oops, escape sequences for the left and right keys were swapped.Andreas Kling
2019-01-30Add support for keyboard arrow keys.Andreas Kling
Also have them send the appropriate escape sequences in Terminal. Basic history browsing now works in bash. How nice! :^)
2019-01-30Terminal: Implement 'J' escape "clear from cursor to end of screen."Andreas Kling
2019-01-30Let the slave PTY keep the master PTY alive.Andreas Kling
This ownership model is a bit confusing. There's a retain cycle between MasterPTY and SlavePTY, but it's broken when the SlavePTY is closed, meaning that there are no more FileDescriptors referring to it.
2019-01-30Deallocate PTY's when they close.Andreas Kling
This required a fair bit of plumbing. The CharacterDevice::close() virtual will now be closed by ~FileDescriptor(), allowing device implementations to do custom cleanup at that point. One big problem remains: if the master PTY is closed before the slave PTY, we go into crashy land.
2019-01-28LibC: Move Stopwatch thingy into a <serenity.h> header.Andreas Kling
This thing is extremely useful for performance testing so let's put it here.
2019-01-26Refactor GUI rendering model to be two-phased.Andreas Kling
Instead of clients painting whenever they feel like it, we now ask that they paint in response to a paint message. After finishing painting, clients notify the WindowServer about the rect(s) they painted into and then flush eventually happens, etc. This stuff leaves us with a lot of badly named things. Need to fix that.
2019-01-25Terminal: Support setting the window title using Xterm escape sequences.Andreas Kling
Use this in the /bin/sh prompt to keep the window title in sync with the shell's working directory. :^)
2019-01-25Terminal: Tweak dark blue color.Andreas Kling
2019-01-25Terminal: Redraw entire line if any of its characters are dirty.Andreas Kling
This means we only have to do one fill_rect() per line and the whole process ends up being ~10% faster than before. Also added a read_tsc() syscall to give userspace access to the TSC.
2019-01-25Kernel: Fix incorrect EFAULTs when syscall would write into COW pages.Andreas Kling
2019-01-25Terminal: Use a more reasonable data structure for the emulation buffer.Andreas Kling
2019-01-24Let userland retain the window backing store while drawing into it.Andreas Kling
To start painting, call: gui$get_window_backing_store() Then finish up with: gui$release_window_backing_store() Process will retain the underlying GraphicsBitmap behind the scenes. This fixes racing between the WindowServer and GUI clients. This patch also adds a WSWindowLocker that is exactly what it sounds like.
2019-01-24Terminal: Turn ctrl+character into the appropriate ^character.Andreas Kling
2019-01-23Terminal: Various improvements to terminal emulation.Andreas Kling
2019-01-23Terminal: Add support for some more escape sequences.Andreas Kling
2019-01-23Terminal: Fix crash when scrolling contents while cursor is on first row.Andreas Kling
2019-01-20WindowServer: Only blit dirty rect of windows to back buffer.Andreas Kling
Previously we'd blit every pixel in every window that intersected any dirty rect to the back buffer. With this patch, we limit ourselves to blitting the pixels inside the actual dirty rects. There's still a lot of optimizations to make in this code.
2019-01-20Make it possible for userspace to alter window title/geometry.Andreas Kling
I'm not in love with this syscall API but it allows me to make progress.
2019-01-19Make a SharedGraphics directory for classes shared between Kernel and LibGUI.Andreas Kling
2019-01-18Make it possible to invalidate only a portion of a window.Andreas Kling
Use this in Terminal to only invalidate rows where anything changed.
2019-01-17Add WindowActivated and WindowDeactivated events.Andreas Kling
Use this to implement different looking Terminal cursors depending on the window active state.
2019-01-17Terminal: Tighten the glyph rects.Andreas Kling
This makes the cursor look a bit nicer.
2019-01-17Terminal: Draw the terminal cursor.Andreas Kling
2019-01-16Move some more classes to the new coding style.Andreas Kling
2019-01-16Add a PTY multiplexer (/dev/ptmx) device.Andreas Kling
When you open /dev/ptmx, you get a file descriptor pointing to one of the available MasterPTY's. If none are available, you get an EBUSY. This makes it possible to open multiple (up to 4) Terminals. :^) To support this, I also added a CharacterDevice::open() that gets control when VFS is opening a CharacterDevice. This is useful when we want to return a custom FileDescriptor like we do here.
2019-01-16Get rid of Vnode concept.Andreas Kling
We already have an abstraction between Process and Inode/CharacterDevice/FIFO and it's called FileDescriptor. :^)
2019-01-16Implement basic support for POSIX-style select().Andreas Kling
Now we can block on both the PTY *and* the GUI event stream in Terminal.
2019-01-15Terminal: optimize repaints a bunch.Andreas Kling
We track dirty character cells + pending whole-terminal scrolls. This drastically reduces the number of pixels pushed.
2019-01-15Make it possible for a process to switch controlling terminals.Andreas Kling
Via the TIOCSCTTY and TIOCNOTTY ioctls.
2019-01-15Minor Terminal tweaks.Andreas Kling
2019-01-15Terminal: Add some inset and line spacing.Andreas Kling
This is starting to feel vaguely usable! :^)
2019-01-15Terminal: basic ANSI color support.Andreas Kling
2019-01-15Add very basic KeyDown events to the GUI event stream.Andreas Kling
The Terminal program now hosts an interactive shell. :^)
2019-01-15Add basic PTY support.Andreas Kling
For now, there are four hard-coded PTYs: /dev/pt{m,s}[0123] Use this in the Terminal to open a pty pair and spawn a shell.
2019-01-15Add Terminal/.gitignoreAndreas Kling
2019-01-15Factor out individual glyph drawing into Painter::draw_glyph().Andreas Kling
2019-01-15Start working on a graphical Terminal program.Andreas Kling