summaryrefslogtreecommitdiff
path: root/Servers
AgeCommit message (Collapse)Author
2020-02-06LibAudio: Put all classes in the Audio namespace and remove leading AAndreas Kling
2020-02-05LibC: Add posix_openpt(), grantpt() and unlockpt()Andreas Kling
This makes getting a pseudoterminal pair a little bit more portable. Note that grantpt() and unlockpt() are currently no-ops, since we've already granted the pseudoterminal slave to the calling user. We also accept O_CLOEXEC to posix_openpt(), unlike some systems. :^)
2020-02-05LibIPC: Put all classes in the IPC namespace and remove the leading IAndreas Kling
2020-02-05TTYServer: Include AK/LogStream.h for dbg()joshua stein
2020-02-05WindowServer: Remove unused s_checkbox_or_icon_paddingjoshua stein
2020-02-04WindowServer: Fix the drain mouse mechanismLiav A
Now we actually check if the Mouse packet relative flag is enabled or not. In addition to that, we have debug messages for mouse point changes.
2020-02-04WindowServer: Preliminary absolute mouse positioning supportSergey Bugaev
2020-02-02LibCore: Put all classes in the Core namespace and remove the leading CAndreas Kling
I've been wanting to do this for a long time. It's time we start being consistent about how this stuff works. The new convention is: - "LibFoo" is a userspace library that provides the "Foo" namespace. That's it :^) This was pretty tedious to convert and I didn't even start on LibGUI yet. But it's coming up next.
2020-02-02WindowServer: Fix for Changing Screen Resolution Resets.Hüseyin ASLITÜRK
Fixes #816.
2020-02-01WindowServer: make menus wrap verticallyOliver Kraitschy
This commit adds vertical wrap to menus. The first item is focused if Key_Down is pressed on the last item and the last item is focused if Key_up is pressed on the first item.
2020-01-26LookupServer: Don't cache already-expired DNS answersAndreas Kling
2020-01-26LookupServer: Cache DNS answers for TTL secondsAndreas Kling
We now keep DNS answers around in a cache for TTL seconds after getting them the first time. The cache is capped at 256 responses for now. Suggested by @zecke in #10.
2020-01-26LookupServer: Rename "custom_hosts" => "etc_hosts"Andreas Kling
This makes it more obvious that these mappings come from /etc/hosts.
2020-01-26LookupServer: Rename setting "DNS/IPAddress" => "DNS/Nameserver"Andreas Kling
2020-01-26LookupServer: Use CUdpSocket instead of the POSIX APIAndreas Kling
LibCore's UDP socket is a bit more comfortable to work with. :^)
2020-01-26LookupServer: Add missing copyright headersAndreas Kling
2020-01-26LookupServer: Retry with 0x20 randomization turned off on EREFUSEDAndreas Kling
Apparently some authoritative servers don't handle 0x20 randomization well and may send EREFUSED. Retry with randomization turned off then. Reference: https://github.com/dns-violations/dns-violations/blob/master/2017/DVE-2017-0006.md More work towards #10.
2020-01-26LookupServer: Verify that DNS response questions match the requestAndreas Kling
To protect against DNS spoof attacks, we now check that the questions in incoming responses match the questions in the request we sent out. Suggested by @zecke in #10.
2020-01-26LookupServer: Randomize the 0x20 bit in DNS request ASCII charactersAndreas Kling
This adds a bit of extra entropy to DNS requests, making it harder to spoof a valid response. Suggested by @zecke in #10.
2020-01-26LookupServer: Randomize DNS request ID'sAndreas Kling
Suggested by @zecke in #10.
2020-01-26LookupServer: Minor overhaulAndreas Kling
- Break out request building into a DNSRequest class. - Break out response parsing into a DNSResponse class. A DNSRequest contains one or more DNSQuestion objects. A DNSResponse contains all the DNSQuestions asked, and a DNSAnswer object for each answer.
2020-01-25WindowServer: Don't allow minimize/maximize of windows while modal upAndreas Kling
While one window is blocked by another modal one, just ignore events on the window frame, and also ignore set_minimized() and set_maximized(). The only thing you're allowed to do with a blocked window is moving it. Fixes #1111.
2020-01-25WindowServer: Robustify WSWindow<->WSClientConnection link a bitAndreas Kling
WSWindow now detaches from WSClientConnection when being destroyed. Because of this, we can no longer rely on WSWindow::client() to tell us whether a window is internal to WindowServer or not. So instead we now have WSWindow::is_internal() which checks for client_id == -1. Note that WSWindow now also gets a copy of its client_id when constructed, since we can no longer rely on client() being valid after destruction has started. This allows various automatic mechanisms (e.g what happens in response to window removal) to skip over windows that are being destroyed. Fixes #387.
2020-01-25WindowServer: Tear down WSClientConnection asynchronouslyAndreas Kling
If something goes wrong when trying to message a windowing client, we now tear it down *on next event loop* instead of immediately. This avoids having to deal with disconnected windows suddenly disappearing from window lists while looping over them.
2020-01-24Meta: Claim copyright for files created by meSergey Bugaev
This changes copyright holder to myself for the source code files that I've created or have (almost) completely rewritten. Not included are the files that were significantly changed by others even though it was me who originally created them (think HtmlView), or the many other files I've contributed code to.
2020-01-22LookupServer: Lock unveil() after initialization.Brian Gianforcaro
Once LookupServer is initialized it should never need access to any any paths for the lifetime of the process. Lock the veil post initialization.
2020-01-21AudioServer: Drop "rpath" and "wpath" pledgesAndreas Kling
Once the event loop is constructed, we will have opened /dev/audio for output and no more filesystem lookups need to happen.
2020-01-21WindowServer: unveil("/bin", "x") so we can start applicationsAndreas Kling
Without this, we can't start programs via the system menu. This begs the question: should WindowServer really be allowed to fork and exec in the first place?
2020-01-20WindowServer: Use unveil()Andreas Kling
WindowServer needs persistent access to a few things: - /res (for themes, fonts, cursors, apps, wallpapers, etc.) - /etc/passwd (for username lookup, not sure this is actually needed..) - /home/anon/WindowManager.ini (FIXME: this should not be hard-coded..) These things are unveiled temporarily, and then dropped: - /tmp (for setting up sockets) - /dev (for opening input and framebuffer devices) This leaves WindowServer running with a very limited view of the file system, how neat is that!
2020-01-20WindowServer: Simplify WSMenu MouseWheel eventShannon Booth
A mouse move event needs to do a bit more work than what a mouse wheel event does. Mouse wheel just needs to update the hovered item, and update for a new hovered item. This also stops us from calling redraw() twice on a wheel event.
2020-01-20WindowServer: Stop infinite menu movement cycleShannon Booth
While I really enjoyed having an infinite cycle when I implemented menu keys (and seeing it wizz around and around :D), menu key movement should be consistent between menus - and an inifinite cycle does not make much sense for a scrollable menu.
2020-01-19WindowServer: Allow scrolling of menus that don't fit on screenAndreas Kling
Menus now have a scroll offset (index based, not pixel based) which is controlled either with the mouse wheel or with the up/down arrow keys. This finally allows us to browse all of the fonts that @xTibor has made avilable through his serenity-fontdev project: https://github.com/xTibor/serenity-fontdev I'm not completely sure about the up/down arrows. They feel like maybe they occupy a bit too much vertical space. Also FIXME: this mechanism probably won't look completely right for menus that have separators in them. Fixes #1043.
2020-01-19WindowServer: More natural mouse menu navigationShannon Booth
Use an imaginary triangle between the top and bottom of the submenu of a hovered item to determine whether the mouse is moving towards the submenu. If it is, we do not update the hovered item. This allows the submenu to stay open, making for much easier menu navigation. Closes #1094
2020-01-18WindowServer: Print the error when failing to open /dev/fb0Sergey Bugaev
2020-01-18Meta: Add license header to source filesAndreas Kling
As suggested by Joshua, this commit adds the 2-clause BSD license as a comment block to the top of every source file. For the first pass, I've just added myself for simplicity. I encourage everyone to add themselves as copyright holders of any file they've added or modified in some significant way. If I've added myself in error somewhere, feel free to replace it with the appropriate copyright holder instead. Going forward, all new source files should include a license header.
2020-01-18WindowServer: Stop tracking hovered menu independently from the index (#1093)shannonbooth
Tracking the hovered menu item independently from the index of the currently hovered item is error prone and bad code. Simplify WSMenu by only tracking the index of the currently hovered item. Fixes #1092
2020-01-18WindowServer: Fix windowswitcher not closing, make system menu a toggleShannon Booth
We were swallowing the keyevent on a Logo key down even if we were not opening the logo. This is incorrect, and was preventing the windowswitcher from closing. We also make the logo button toggle the system menu, as this behaviour is closer to how you would normally expect this button to work. Closes #1090
2020-01-18WindowServer: Add toggle_menu helper functionShannon Booth
2020-01-17Kernel: Add "accept" pledge promise for accepting incoming connectionsAndreas Kling
This patch adds a new "accept" promise that allows you to call accept() on an already listening socket. This lets programs set up a socket for for listening and then dropping "inet" and/or "unix" so that only incoming (and existing) connections are allowed from that point on. No new outgoing connections or listening server sockets can be created. In addition to accept() it also allows getsockopt() with SOL_SOCKET and SO_PEERCRED, which is used to find the PID/UID/GID of the socket peer. This is used by our IPC library when creating shared buffers that should only be accessible to a specific peer process. This allows us to drop "unix" in WindowServer and LookupServer. :^) It also makes the debugging/introspection RPC sockets in CEventLoop based programs work again.
2020-01-15WindowServer: Do not open system menu after window tilingShannon Booth
2020-01-13WindowServer: Add "thread" pledge since we need it for wallpapersAndreas Kling
Longer-term we should come up with a design where WindowServer doesn't have to decode untrusted image files.
2020-01-13LookupServer: Use pledge()Brian Gianforcaro
2020-01-12Kernel: Require "tty" for ioctl() on TTY and MasterPTYAndreas Kling
SystemServer now pledges "tty" since it's used when spawning services.
2020-01-12WindowServer: Send key events to menu manager is there is a current menuShannon Booth
If there is a current menu, we now redirect all key events from window manager to the menu manager. This allows us to properly navigate a menu even when there is a current menu open. Menu key navigation is now a lot more pleasant to use :^) The action of pressing escape to close a menu has also been moved to its proper home in menu manager in this commit.
2020-01-12WindowServer: Fix non-submenus being closed when set as current menuShannon Booth
set_current_menu() was indiscriminately closing all menus when the current menu is not a submenu. We should only close menus not in lineage to the one being closed.
2020-01-12WindowServer: Fix incorrect current menu when switching to new itemShannon Booth
We were forgetting to update the current menu when switching to a new item. We also rename the function from implying that only a redraw is happening, as is actually not the case. It is now more correctly named: update_for_new_hovered_item()
2020-01-12WindowServer: Actually don't bring up system menu during move/resizeAndreas Kling
It was still possible to pop up the system menu by letting go of the mouse button before letting go of the Logo key. This patch fixes that.
2020-01-12Kernel: Add "video" pledge for accessing framebuffer devicesAndreas Kling
WindowServer becomes the only user.
2020-01-12WindowServer: Don't show system menu on Logo KeyUp during move/resizeAndreas Kling
2020-01-11Kernel: fork()ed children should inherit pledge promises :^)Andreas Kling
Update various places that now need wider promises as they are not reset by fork() anymore.