summaryrefslogtreecommitdiff
path: root/Applications/Terminal
AgeCommit message (Collapse)Author
2019-12-20Build: clean up build system, use one shared Makefilejoshua stein
Allow everything to be built from the top level directory with just 'make', cleaned with 'make clean', and installed with 'make install'. Also support these in any particular subdirectory. Specifying 'make VERBOSE=1' will print each ld/g++/etc. command as it runs. Kernel and early host tools (IPCCompiler, etc.) are built as object.host.o so that they don't conflict with other things built with the cross-compiler.
2019-12-09LibGUI: Make GMenu inherit from CObjectAndreas Kling
This is primarily to make it possible to pass a GMenu* where a CObject* is expected.
2019-12-02Terminal: Ignore SIGCHLD with SA_NOCLDWAITAndreas Kling
Otherwise we'll accumulate a bunch of dead Terminal children if you open and close more terminal windows.
2019-11-20Terminal+LibVT: Switch Terminal to using explicit copy/paste actionsAndreas Kling
Instead of implicitly copying whatever you select, and pasting when you middle-click, let's have traditional copy and paste actions bound to Ctrl+Shift+C and Ctrl+Shift+V respectively.
2019-11-20Terminal: Add action to open a new terminal with Ctrl+Shift+NAndreas Kling
2019-11-13Terminal+HackStudio: Fix leaking PTM fd to child processesSergey Bugaev
The pseudoterminal *master* fd is not supposed to be inherited, so make sure to open it with O_CLOEXEC.
2019-10-22LibVT+Terminal: Give TerminalWidget a hook for EOF on the ptyAndreas Kling
Instead of quitting the application immediately when the pty gives an EOF, fire an on_command_exit hook so the TerminalWidget client can decide for himself what to do.
2019-10-21LibVT+Terminal: Don't set window title directly from TerminalWidgetAndreas Kling
Instead, have TerminalWidget provide an on_title_change hook. This allows embedders to decide for themselves what to do if we receive a "set terminal title" escape sequence.
2019-10-21LibVT: Make TerminalWidget's automatic size policy updates optionalAndreas Kling
When embedding a TerminalWidget, you might not want it to automatically update its own size policy based on the exact terminal buffer size. This behavior is now passed as a flag to the TerminalWidget constructor which makes it behave nicely both inside HackStudio and in Terminal.
2019-10-21LibVT: Move TerminalWidget from the Terminal app to hereAndreas Kling
It would be nice to be able to reuse this widget in other apps. :^)
2019-10-19Terminal: Make Shift+PgUp/PgDown scroll the terminal up/down one pageAndreas Kling
I keep doing this out of habit, expecting it to scroll, and now it actually will scroll. :^)
2019-10-02Terminal: Remove crashy assertion about line lengthAndreas Kling
If we resize/maximize the window, we might end up with some lines in history that had a different length than the current terminal width. That's okay, so let's not crash because of it. Fixes #620.
2019-09-28Terminal: Add underline supportSergey Bugaev
2019-09-22LibCore: Remove ObjectPtr in favor of RefPtrAndreas Kling
Now that CObject is fully ref-counted, just use RefPtr everywhere! :^)
2019-09-21LibGUI: Convert custom widgets and subclasses to ObjectPtrAndreas Kling
2019-09-21LibGUI: Convert GRadioButton to ObjectPtrAndreas Kling
2019-09-21LibGUI: Convert GWindow to ObjectPtrAndreas Kling
2019-09-21LibCore: Remove CTimer::create() overloads in favor of construct()Andreas Kling
2019-09-21LibGUI: Convert GWidget to ObjectPtrAndreas Kling
2019-09-21LibGUI: Convert GSlider to ObjectPtrAndreas Kling
2019-09-21LibGUI: Convert GGroupBox to ObjectPtrAndreas Kling
2019-09-21LibCore: Convert CTCPServer to ObjectPtrAndreas Kling
Also get rid of the custom CNotifier::create() in favor of construct().
2019-09-21LibGUI: Convert GScrollBar to ObjectPtrAndreas Kling
2019-09-20LibCore: Convert CNotifier to ObjectPtrAndreas Kling
2019-09-20LibCore: Convert CTimer to ObjectPtrAndreas Kling
2019-09-16Terminal: Scroll cursor into view when typing (#568)Jesse
When the user has scrolled up and begins typing, the scrollbar will automatically return them to the current cursor position so that they can see what they're typing.
2019-09-14LibGUI: Simplify GCommonActions a bitAndreas Kling
Use the same callback signature as GAction so we can just forward it to GAction instead of chaining callbacks.
2019-09-06AK: Rename <AK/AKString.h> to <AK/String.h>Andreas Kling
This was a workaround to be able to build on case-insensitive file systems where it might get confused about <string.h> vs <String.h>. Let's just not support building that way, so String.h can have an objectively nicer name. :^)
2019-09-05Terminal: Add some basic emoji supportSergey Bugaev
This is not as perfect as it is elsewhere in the system, as we cannot really change how terminal "thinks about" characters and bytes. What we can do though, and what this commit does, is to *render* emojis, but make it seem as if they take up all the space, and all the columns their bytes would take if they were all regular characters.
2019-09-05Terminal: Added GCommonActionsrhin123
2019-09-02Terminal: Use GAboutDialog :^)Andreas Kling
2019-09-02Terminal: Add -e (execute) command line optionConrad Pankoff
This allows a user to specify a command to run after opening the terminal program. By default it will still spawn an interactive shell.
2019-08-29Terminal: Use a gear icon for the "Settings" menuAndreas Kling
2019-08-25Terminal: Fixed bounding issue when clearing the selection on typerhin123
We were checking the columns of the whole selection instead of the the specfic line were modifying. Because of this, the selection remained if the selection's column on another line was less than the cursor.
2019-08-25Terminal: Clear selection if we type behind/inside itrhin123
2019-08-22Terminal: Allow selecting words by double-clicking themAndreas Kling
Bonus feature: also allow selecting the whitespace in-between words by double-clicking that. :^)
2019-08-20Terminal: Allow scrolling through terminal history with the mouse wheelAndreas Kling
Fixes #470.
2019-08-19Terminal: Implement basic history scrollbackAndreas Kling
This code needs some optimization work to reduce the amount of repaints but the history feature basically works, which is cool :^) Fixes #431.
2019-08-15Terminal: Mark window as alpha-less when starting up with 100% opacityAndreas Kling
WindowServer was led to believe that the Terminal window had an alpha channel that had to be respected by the compositor. This caused us to always consider it as non-opaque when culling dirty rects in compose.
2019-08-13Terminal: Only repaint the lines that actually changedAndreas Kling
This optimization was broken since who-knows-when. Now we once again do our best to only repaint the lines that had the "dirty" flag set. This dramatically reduces the amount of work done by an idle Terminal since the cursor blinking won't redraw the whole window anymore. :^)
2019-08-13Terminal: Clip to the paint event rectAndreas Kling
We should try to avoid painting any more than what we're asked to.
2019-08-13Terminal: Rename Terminal => TerminalWidgetAndreas Kling
This makes it a bit less confusing which is what between TerminalWidget and VT::Terminal.
2019-08-13LibVT: Rename VT::BufferPosition to VT::Position and move to own fileAndreas Kling
2019-08-12LibVT: Factor out terminal emulation from Terminal to make it reusableAndreas Kling
Now that we're bringing back the in-kernel virtual console, we should move towards having a single implementation of terminal emulation. This patch rips out the emulation code from the Terminal application and turns it into the beginnings of LibVT. The basic design idea is that users of VT::Terminal will implement and provide a VT::TerminalClient subclass to handle presentation-specific things. We'll need to iterate on this, but it's a start. :^)
2019-08-06Terminal: Fix trying to free() a stack variableSergey Bugaev
GWindow::~GWindow() deletes the main widget, assuming it was allocated with new; this is what all other applications do, so heap-allocate the terminal widget as well even though it's not necessary in this case.
2019-08-04Terminal: Paint bold text with a bold font.Andreas Kling
This was really straightforward since all the necessary pieces were already in place. This patch just passes a bold font to draw_glyphs() for buffer cells with the bold attribute set. :^)
2019-08-03LibCore: Make get_current_user_home_path() return String & close passwdAndreas Kling
This API was returning a "const char*" and it was unclear who took care of the underlying memory. Returning a String makes that obvious. Also make sure we close the /etc/passwd file when we're done with it.
2019-07-28WindowServer+LibGUI: Pass window icons as shared buffers rather than paths.Andreas Kling
Now that we support more than 2 clients per shared buffer, we can use them for window icons. I didn't do that previously since it would have made the Taskbar process unable to access the icons. This opens up some nice possibilities for programmatically generated icons.
2019-07-25LibCore: Introduce a C_OBJECT macro.Andreas Kling
This macro goes at the top of every CObject-derived class like so: class SomeClass : public CObject { C_OBJECT(SomeClass) public: ... At the moment, all it does is create an override for the class_name() getter but in the future this will be used to automatically insert member functions into these classes.
2019-07-24AK: Make HashMap::get(Key) return an Optional<Value>.Andreas Kling
This allows HashMap::get() to be used for value types that cannot be default constructed (e.g NonnullOwnPtr.)