summaryrefslogtreecommitdiff
path: root/Userland/Services
AgeCommit message (Collapse)Author
2022-08-14SystemServer: Unlink before binding a new socketLucas CHOLLET
Prevent "Address already in use" issues when restarting a service.
2022-08-09WindowServer: Let WindowManager set serverside effectsthankyouverycool
Menu and Window animations can now be disabled and the geometry overlay made conditional. Shadow options are dependent on the current theme actually supplying bitmaps, but they provide a fast way to toggle those that do without having to edit theme files.
2022-08-09LibGUI+WindowServer: Create IPC calls for passing SystemEffectsthankyouverycool
SystemEffects are sent to the WindowManager through set_system_effects() and broadcast to Desktop clients with update_system_effects(). WindowManager is reponsible for saving, loading and rebroadcasting effects from WindowServer.ini on config changes.
2022-08-09LibGUI+WindowServer: Add a SystemEffects wrapper and helpersthankyouverycool
SystemEffects provides a tidy way to work with system-wide visual options passed through IPC.
2022-08-05LibJS: Let Shape store a Realm instead of a GlobalObjectAndreas Kling
This is a cautious first step towards being able to create JS objects before a global object has been instantiated.
2022-08-02LibHTTP+WebServer: Add querystring support0xbigshaq
Split the path from querystring when determining the requested resource.
2022-08-02WindowServer+LibGUI: Remove awkward roundtrip for set wallpaper responsenetworkException
Previously we would wait for a separate message confirming that a wallpaper got set instead of just calling a synchronous api. I'm guessing that this was a limitation of the IPC system when WindowServer got ported to using it. This patch removes the SetWallpaperFinished message and updates the set_wallpaper api to synchronously return a success boolean.
2022-08-01Userland+Base: Make the window titlebar font configurable separatelyAndreas Kling
Instead of defaulting to "bold variant of the system default font", let's allow the user to set any font they want as the titlebar font.
2022-07-27LaunchServer: Let open_file_url use app defaultsdemostanis
Before, programs using open_file_url (such as Terminal) would fail to open any file if its extension (or mime type) wasn't specified in LaunchServer.ini. This patch now permits it.
2022-07-27LaunchServer+LibDesktop: Open from mime typedemostanis
Before, LaunchServer would only open files based on their extension. This wouldn't work if the file had the wrong one.
2022-07-27WindowServer: Ensure windows are wide enough to show title buttons :^)Sam Atkins
Previously, windows without a defined minimum size (or one produced from the minimum sizes of their contents) would be shrunk down to 0 x 0, which makes the title buttons stick out the side and become impossible to interact with. This patch uses the theme metrics to calculate a minimum size that is as small as possible while still keeping the title buttons and app icon usable. This is combined with the minimum size requested by the app itself. Switching themes automatically updates the calculated minimum sizes for all existing windows. As noted, if the new theme has narrower title buttons then the old minimum is kept, but this shouldn't be noticeable unless you're looking for it.
2022-07-23Kernel+Userland: Add ioctl to set process ownership of DisplayConnectorLiav A
Now that the infrastructure of the Graphics subsystem is quite stable, it is time to try to fix a long-standing problem, which is the lack of locking on display connector devices. Reading and writing from multiple processes to a framebuffer controlled by the display connector is not a huge problem - it could be solved with POSIX locking. The real problem is some program that will try to do ioctl operations on a display connector without the WindowServer being aware of that which can lead to very bad situations, for example - assuming a framebuffer is encoded at a known resolution and certain display timings, but another process changed the ModeSetting of the display connector, leading to inconsistency on the properties of the current ModeSetting. To solve this, there's a new "master" ioctl to take "ownership" and another one to release that ownership of a display connector device. To ensure we will not hold a Process object forever just because it has an ownership over a display connector, we hold it with a weak reference, and if the process is gone, someone else can take an ownership.
2022-07-23Kernel+Userland: Rename FB.h => Graphics.hLiav A
This header file represents the entire interface between the kernel and userland, and as such, no longer should be called FB.h but something that represents the whole graphics subsystem.
2022-07-23Userland: Remove stale remainders of old framebuffer devicesLiav A
2022-07-21Keymap+WindowServer: Add context menu to keymap appletTimur Sultanov
Adding a context menu which lists configured keymaps and allows setting the active keymap
2022-07-21SystemServer: Create /tmp/semaphore on startupIdan Horowitz
This directory will store all LibPthread named semaphores
2022-07-19LaunchServer+SystemServer: Move the portal to a user-specific directoryLucas CHOLLET
Various changes are needed to support this: - The directory is created by Core::Account on login (and located in /tmp). - Service's sockets are now deleted on exit (to allow re-creation) - SystemServer needs to handle SIGTERM to correctly destroy services.
2022-07-19LoginServer: Correctly retrieve SystemServer's exit codeLucas CHOLLET
The returned value of `waitpid` is the PID of the process and not the exit code.
2022-07-15Taskbar: Center buttons again by fixing marginsFrHun
2022-07-14NetworkServer: Use sv suffixes to avoid strlen at runtimeMaciej
2022-07-14NetworkServer: Disable interface if Enabled = falseMaciej
We now remove default route and set IP address to 0.0.0.0 (Kernel interprets this as "link down") for all disabled interfaces, so that a reboot is no longer needed.
2022-07-14NetworkServer: Kill DHCPServer as the first thing doneMaciej
The DHCPServer running while we setup interfaces might manage to setup its own config before we kill it.
2022-07-13NotificationServer: Move notifications down if hoveredAtharva Kulkarni
Currently in case of multiple notifications, the notifications are drawn on top of each other when expanded. The change moves the notificaiton below other notifications
2022-07-12Everywhere: Replace single-char StringView op. arguments with charssin-ack
This prevents us from needing a sv suffix, and potentially reduces the need to run generic code for a single character (as contains, starts_with, ends_with etc. for a char will be just a length and equality check). No functional changes.
2022-07-12Everywhere: Add sv suffix to strings relying on StringView(char const*)sin-ack
Each of these strings would previously rely on StringView's char const* constructor overload, which would call __builtin_strlen on the string. Since we now have operator ""sv, we can replace these with much simpler versions. This opens the door to being able to remove StringView(char const*). No functional changes.
2022-07-12Everywhere: Split Error::from_string_literal and Error::from_string_viewsin-ack
Error::from_string_literal now takes direct char const*s, while Error::from_string_view does what Error::from_string_literal used to do: taking StringViews. This change will remove the need to insert `sv` after error strings when returning string literal errors once StringView(char const*) is removed. No functional changes.
2022-07-12Everywhere: Explicitly specify the size in StringView constructorssin-ack
This commit moves the length calculations out to be directly on the StringView users. This is an important step towards the goal of removing StringView(char const*), as it moves the responsibility of calculating the size of the string to the user of the StringView (which will prevent naive uses causing OOB access).
2022-07-10Kernel+SystemServer: Make KCOVDevice a character deviceLiav A
This device should not be a block device, as in Serenity, block devices represent an interface to either disk partitions or storage devices.
2022-07-09LibCore+Userland: Use StringViews when calling Core::System::openkleines Filmröllchen
For some reason we used raw char pointers sometimes, which caused at least one heap buffer overflow detected in fuzzing.
2022-07-09NetworkServer: Kill running DHCPServer before starting our ownMaciej
We cannot run two DHCPServers at once, let's just kill the one that was started previously.
2022-07-09NetworkServer: Clear default gateway route entry before addingMaciej
2022-07-08Userland: Add `/usr/local/sbin` to `PATH` by defaultTim Schumacher
`e2fsprogs` adds its tools there.
2022-07-07WebSocket: Change target name to deconflict with LibWebSocket on LagomAndrew Kaster
When compiling with Lagom, we give both LibWebSocket and the WebSocket IPC service the Lagom:: prefix as an alias, but strip the Lib from all library target names before applying the prefix. This creates a conflict when external projects used the aliased name between the server and the library. Give WebSocket a name that deconflicts it, but keep the binary name the same, /bin/WebSocket.
2022-07-06Meta: Build select Services in LagomAndrew Kaster
Add overrides for serenity_bin and serenity_lib to allow the actual CMakeLists.txt from Userland to be used to build as many services as possible without adding more clutter to Meta/Lagom/CMakeLists.txt
2022-07-06LookupServer: Use _POSIX_HOST_NAME_MAX instead of HOST_NAME_MAXTimon Kruiper
HOST_NAME_MAX is not defined on the BSDs, including macOS. Use _POSIX_HOST_NAME_MAX instead, which is defined on all the platforms.
2022-07-06LookupServer: Use designated initializers for sockaddr_inAndrew Kaster
At least macOS has a non-standard sin_len field at the front of the struct that Linux and Serenity do not. On BSDs, the sin_len field must be initialized to the size of the structure. Co-Authored-By: Timon Kruiper <timonkruiper@gmail.com>
2022-07-06RequestServer: Only attach SIGINFO signal handler if SIGINFO is definedAndrew Kaster
2022-07-06AK: Use an enum instead of a bool for String::replace(all_occurences)DexesTTP
This commit has no behavior changes. In particular, this does not fix any of the wrong uses of the previous default parameter (which used to be 'false', meaning "only replace the first occurence in the string"). It simply replaces the default uses by String::replace(..., ReplaceMode::FirstOnly), leaving them incorrect.
2022-07-05WebContent: Invalidate document style when changing the page's paletteLuke Wilde
This makes the page automatically update to reflect the system theme when in "Color Scheme > Follow System Theme" mode without having to manually cause a style update.
2022-07-05Browser+WebContent: Fix inspecting non-visible nodesMacDue
I already fixed the crash from this in #14470, but didn't fully fix the issue. Currently the browser just avoids sending the inspect_dom_node() IPC call for non-visible nodes. The main problem with this is it means the browser keeps displaying the overlay for the previously selected node. This commit fixes the crash in the WebContent side, so the IPC call can still be made and the selection correctly updated.
2022-07-04NetworkServer: Enable DHCP on interfaces that are not listed in configMaciej
2022-07-02LookupServer: Try other available DNS nameservers on network errorsIdan Horowitz
We were accidentally short-circuting DNS lookup on network errors when contacting the first DNS server, instead of trying the other available options.
2022-06-30FileSystemAccessServer: Call window stealing functions syncMacDue
These functions were changed to synchronous in #13870 but the async_ versions were still being called. This led to frequent crashes when loading local files in Browser.
2022-06-28LibGUI: Use new layout system for basic widgetsFrHun
2022-06-28NotificationServer: Remove usages of deprecated implicit ui conversionsFrHun
2022-06-28Applications: Remove usages of deprecated implicit conversionsFrHun
These deprecated conversions are currently in place to make the system compile, but they are to be removed soon. This prepares that.
2022-06-27LibHTTP+RequestServer: Recognize more HTTP methodsLuke Wilde
Previously it would default to GET for all of these and cause the Discord API to return Method Not Allowed errors for certain endpoints.
2022-06-27Browser+LibWeb+WebContent: Allow Browser to load local filesLucas CHOLLET
To achieve this goal: - The Browser unveils "/tmp/portal/filesystemaccess" - Pass the page through LoadRequest => ResourceLoader - ResourceLoader requests a file to the FileSystemAccessServer via IPC - OutOfProcessWebView handles it and sends a file descriptor back to the Page.
2022-06-27WindowServer: Make window stealing related functions synchronousLucas CHOLLET
This allows us to make sure that those operations are performed in the right order. Affected functions are: - add_window_stealing_for_client - set_window_parent_from_client - remove_window_stealing_for_client - remove_window_stealing
2022-06-27FileSystemAccessServer: Manage concurrent file requestsLucas CHOLLET
Before this patch, when you called FileSystemAccessServer::Client::try_* twice, the second call used the same variable to store the promise. This "race condition" is now solved using a HashMap, to store multiple parallel requests.