This page is the reference for every setting in Nightjar for Android, Android TV and Fire TV, followed by Nightjar for Windows and Linux. Both clients use the same sections, Video, Display & image, Controls, Audio, Streaming, App, Advanced and Debug at the end for settings whose default is right for nearly everyone, and the same layers of values: the main settings, a named profile, this PC and this game.
Each row shows its current value; the explanation appears with the setting or behind its info or Help button. Search matches titles, explanations and section names, including everything in Advanced. Selecting a result opens its section, and Back returns first to the search, then to the section where you started. Changes save automatically. Nightjar shows only the options the device supports.
On a TV, and on screens at least 840 dp wide, Settings uses two panes: sections on the left, the selected section on the right. Moving the D-pad or controller over a section shows it on the right at once; Center or Right moves into it, Left or Back returns to the list, and Back from the list leaves Settings. Touching a section shows it without moving focus. The list starts with Search settings, a focusable row (also on phones with a controller attached); results fill the right pane. On a TV, focus starts on Controls, never on the toolbar. Links from other screens open the setting they name, selected and, with two panes, focused.
Profiles, Controller buttons, Keyboard shortcuts, GPU driver and Latency benchmark put the first focus on their content when a remote, controller or keyboard drives them. Every focused button or row shows the same amber outline.
Defaults are those of a fresh installation, before any preset or PC override. Changes to stream settings apply from the next stream; the stream menu holds the controls that can change during a session.
The tables between the markers below are generated by generate-settings.py from preferences.xml, the English strings and arrays, and the Java defaults and preset values. Regenerate them after changing preferences instead of editing rows by hand; the documentation checks detect stale output.
These tables include every preference, including actions, grouped as the Settings screens show them. On/Off choices have no units; action rows have no stored default. Device capability checks can hide or disable a row.
Tier: Main rows show when a section opens; More rows fold behind the section's last row, More … settings, and search still finds them (res/values/settings_tiers.xml).
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Resolutionlist_resolution |
Main | This screen's native resolution; follows the screen used for each stream | 360p (640 × 360 pixels); 480p (854 × 480 pixels); 720p (1280 × 720 pixels); 1080p (1920 × 1080 pixels); 1440p (2560 × 1440 pixels); 4K (3840 × 2160 pixels) | Choose Custom to enter a fixed width and height (64–16384 pixels each) for every stream without a resolution override. Named profiles, PC and game overrides retain their priority. Custom dimensions stay fixed when the screen changes. Raise for detail; lower for less network and decoding load. The picker also includes screen and standard sizes; larger fixed presets stay listed while chosen. Changing resolution preserves an explicitly chosen bitrate. |
Frame ratelist_fps |
Main | Screen maximum (rounded, 1–1000 FPS) | 30 FPS; 60 FPS; 90 FPS; 120 FPS | Raise for smoother motion on a fast screen. Open the list and choose Show all frame rates to include rates the screen may not support (possible stutter; compare rendered FPS in the overlay), or Show supported frame rates only to go back. Stored as checkbox_unlock_fps. The screen's own refresh rate is added as Screen refresh rate. Changing resolution or FPS preserves an explicitly chosen bitrate. |
Automatic bitrateautomatic_bitrate |
Main | No stored default | On; Off | On until you move the bitrate slider: the bitrate is the default for the resolution, frame rate and codec, and follows them when they change. Turn it on again to go back to that default; turn it off to keep the bitrate shown when those change. Stored as bitrate_user_set (inverted) with seekbar_bitrate_kbps. |
Bitrateseekbar_bitrate_kbps |
Main | Calculated for the native resolution and screen maximum FPS; with PyroWave, PyroWave's own (about 400 Mbps at 1080p60, at most 900 Mbps or 90% of a known wired link, never below its minimum); follows changes until bitrate is chosen explicitly | 0.5 Mbps–2000 Mbps; step 0.5 Mbps; buttons 1 Mbps; presets 10 Mbps, 20 Mbps, 40 Mbps, 80 Mbps, 150 Mbps, 280 Mbps | Raise for image quality on a stable link; lower for network loss. The slider is logarithmic; the buttons make fine adjustments. |
Lower bitrate when the network is busycheckbox_auto_bitrate |
Main | Off | On; Off | Off by default. Lowers the bitrate when the connection, decoder or device heat can't keep up and raises it again when things recover, never above Bitrate and never below a built-in floor (2 Mbps, or more for large streams). The host's own adjustment stands down while it runs. This is the default for every PC; the stream menu's Turn on or Turn off Lower bitrate when the network is busy saves a choice for one PC, and changing this switch makes every PC follow it again. Needs a host that reports its stream bitrate and accepts bitrate changes (Rubylight). A Sunshine-based PC with its own automatic bitrate runs that instead, following the network reports Nightjar sends every three seconds. |
Bitrate on mobile datalist_mobile_bitrate_kbps |
Main | Off | Off; 3 Mbps; 5 Mbps; 10 Mbps; 15 Mbps; 20 Mbps; 30 Mbps; 50 Mbps | Choose a cap for streams that start on mobile data or on Wi-Fi that Android marks as metered, such as a phone's hotspot. It caps the bitrate from every layer, including profiles, PC and game values; Off uses the same bitrate on every network. Read once at stream start. See named profiles. |
Video codecvideo_format |
Main | Automatic (recommended) | Automatic (recommended); Prefer AV1; Prefer HEVC; H.264; PyroWave (needs PC support) | Start with Automatic. Choose a specific codec to compare decoder performance; Prefer AV1 and Prefer HEVC fall back when the PC or device lacks them. PyroWave requires a host that supports it (Rubylight, or Vibepollo with PyroWave available) and Vulkan capabilities; on a PC whose host has none, that PC uses the setting for all PCs or Automatic instead. |
HDRcheckbox_enable_hdr |
Main | Off | On; Off | Enable with an HDR screen, a compatible decoder and HDR configured on the host display. HDR10 works with any host that streams HDR; HDR10+, HLG and Dolby Vision are used where the screen, the decoder and the PC support them (Rubylight 3.0). Availability is device-filtered. |
More settingsmore_video |
Main | Closed | Action | Shows or hides the Video rows that are not main, such as automatic quality and 10-bit SDR. Settings search and links find them while it is closed. |
Sharper colored textsharp_color |
More | Off | Off; On | Off by default. On streams full color detail (4:4:4) so colored text and thin lines stay crisp: native 4:4:4 where this device decodes it and the PC encodes it, else packed full chroma where both offer it (New streaming engine, HEVC or AV1), else neither, and the app says once per PC why not. HDR keeps priority: packed full chroma runs with HDR only where both sides have a 10-bit packed mode. Hidden while the codec is PyroWave, whose own 4:4:4 choice applies. Stored as checkbox_yuv444 and experimental_packed_444, both written; either one on from an older version reads as Automatic. The decision is nightjar-core's, the same as desktop Nightjar's. |
Less color bandingcheckbox_enable_sdr_10bit |
More | Off | On; Off | Enable if you see banding in gradients and the screen has no HDR, or HDR is off. Streams SDR in 10-bit HEVC or AV1 and needs a Main10 decoder on this device and a PC that offers 10-bit; otherwise the stream is 8-bit and the app says so. The PC's display must be in SDR: with HDR on it, the stream is HDR. Not used with PyroWave. Takes effect on the next stream. |
Frame Warpcheckbox_frame_warp |
More | Off | On; Off | Off by default. Turn on to see a mouse or right-stick camera turn on the next refresh of this screen: each picture is shifted by the turn the PC has not drawn yet, and the game's HUD stays in place. Needs the New streaming engine and a host that offers Frame Warp (Rubylight); the host learns each game first, so the overlay reads learning until it locks. It draws through Vulkan (Android 10 and a GPU with Vulkan 1.1) or else OpenGL ES without upscaling, which adds a render pass; PyroWave streams draw it in their own renderer, with their upscaling and HDR. Off for HDR without Vulkan and for Full chroma, with a message. The shift is a translation: right for a turn, approximate near the edges at wide fields of view, and not used for movement. |
Automatic qualityadaptive_quality_mode |
More | Off | Off; Preserve motion; Preserve detail; Extend battery life | Off by default. Motion preserves FPS first, Detail preserves resolution first, and Battery also reduces work on healthy links. Lowers resolution or frame rate when the network, slow decoding or heat keep the stream from running well; not available with PyroWave. The stream menu can override the mode per PC. |
Minimum resolutionadaptive_quality_min_resolution |
More | 720p | 360p; 540p; 720p; 1080p; 1440p | Sets the smallest short edge for automatic quality, with the aspect ratio preserved. The selected starting resolution is the ceiling; a minimum above that ceiling is clamped down. Shown while Automatic quality is not Off. |
Minimum frame rateadaptive_quality_min_fps |
More | 30 FPS | 30 FPS; 45 FPS; 60 FPS; 90 FPS; 120 FPS | Sets the lowest FPS automatic quality may request, including Battery mode. Recovery increases one step after 30 healthy seconds; reductions are at least 15 seconds apart. Shown while Automatic quality is not Off. |
Thermal protectioncheckbox_thermal_protection |
More | Off | On; Off | Turn on only if the device throttles or gets uncomfortably hot while streaming. When the device reports heat, Lower bitrate when the network is busy halves the bitrate in steps and automatic quality lowers the resolution, and PyroWave stops forcing the top clocks. Off by default, because most phones and TV sticks run hot in normal use. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Video sizecheckbox_stretch_video |
Main | Fit | Fit; Fill (crop); Stretch; 1:1 pixels | How the stream fills a screen of another shape: Fit shows all of it with bars, Fill (crop) fills the screen and cuts off the edges that do not fit, Stretch fills it and distorts shapes, 1:1 pixels shows the stream at its own size, centred. The key is the older Stretch switch, still written (on only for Stretch) so older versions behave sensibly; the mode itself is stored as video_scaling. Also in the stream menu. See video scaling. |
Orientationstream_orientation |
Main | Automatic | Automatic; Landscape; Portrait; Rotate with device | Automatic uses landscape on phones and any orientation on tablets, squarish screens, windows and external displays. Landscape and Portrait lock the screen; Rotate with device follows it within the system rotation lock. A host streaming from its virtual display starts the stream in the screen's shape, and with Rotate with device asks for the turned size while the stream runs where the host takes in-stream reconfigure. Other hosts keep the stream's size and Video size fits it into the turned screen. Hidden on TVs. See orientation. |
Variable refresh ratecheckbox_vrr |
Main | Off | Off; On; Fastest | Off by default. On and Fastest enable Android's automatic ARR policy, override pacing to Lowest latency and disable the lower refresh rate; hosts that support VRR are asked for it too. On (Real VRR) shows each frame at its host timestamp plus a steady delay, so the screen refreshes in step with the game rather than the network: the delay covers the frames that arrive together, a frame later than that is shown when it is ready, and the frames behind a late one keep the game's spacing. It adds that delay (about 1 to 4 ms in desktop Nightjar's measurements); choose Fastest, which shows each frame the moment it arrives, for the lowest latency. With On, hosts that announce clock sync (Rubylight) add the host-to-present latency to the performance overlay; PyroWave streams follow the choice too. Offered only on Android 16 with a screen that has ARR; elsewhere it is greyed and reads as Off, here and in PC, game and profile settings, and the saved choice is kept. Stored as checkbox_vrr (On for On and Fastest) and checkbox_real_vrr (Real VRR: On for On, Off for Fastest, on by default; Off keeps it); a PC, game or profile value sets both. Desktop Nightjar's Variable refresh rate (vrr and present_at_host_times) is the same setting. |
More settingsmore_display |
Main | Closed | Action | Shows or hides the Display & image rows that are not main: refresh, image and PC display settings. Settings search and links find them while it is closed. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Show frames at the PC’s frame timescheckbox_host_frame_times |
More | Off | On; Off | Shown with Variable refresh rate off. Enable for even motion on a fixed refresh when the network or decoder adds jitter. Each MediaCodec frame is released at its host timestamp plus a delay covering about 97% of recent frames, on the screen's vsync grid; later frames are shown at once. Adds that delay (usually a few milliseconds) and replaces Frame pacing. Hosts that announce clock sync (Rubylight) add the host-to-present latency to the performance overlay. PyroWave streams are not affected. Shown while Variable refresh rate is Off. |
Frame pacingframe_pacing |
More | Lowest latency | Lowest latency; Balanced; Balanced with FPS limit; Smoothest video (more delay) | Use Lowest latency for response, Balanced for cadence, Balanced with FPS limit to cap pacing, or Smoothest video to retain frames at the cost of delay. Greyed out while Host frame times or Variable refresh rate is on. Shown while Variable refresh rate is Off. |
Keep only the newest framecheckbox_drop_late_frames |
More | On | On; Off | Enable with Balanced pacing to discard older queued outputs. Favors response over smoothness. Shown beside Frame pacing only while it is Balanced. |
Allow lower refresh ratecheckbox_reduce_refresh_rate |
More | Off | On; Off | Enable to allow a lower screen refresh for power savings. Shown while Variable refresh rate is Off. |
Match the screen to the game’s frame ratecheckbox_content_rate_frame_rate |
More | Off | On; Off | Enable on a screen with several refresh modes, with Allow lower refresh rate (or a Balanced with FPS limit or Smoothest video pacing) on. Once the game's frame rate has held steady for two seconds, Android is told that rate and may move the screen to a mode that divides it evenly, for example 60 Hz for a 60 fps game in a 120 fps stream. Only seamless changes are requested (Android 11 or newer), at most one every two seconds, and never below the rate Allow lower refresh rate off keeps. Needs a host that announces clock sync (Rubylight); has no effect with Variable refresh rate, a TextureView or PyroWave. Shown while Allow lower refresh rate is On. |
Take back display queue delaycheckbox_display_queue_recovery |
More | On | On; Off | On by default. With Lowest latency or Balanced pacing on a fixed refresh, where the device reports when frames are shown: when the screen keeps frames waiting a whole refresh longer than the stream's own level for 3 s, one frame is skipped and the wait is checked after; skips that change nothing turn it off for the stream. The log's Display queue: lines show each step. Turn it off to compare a stray skip against the added wait. Hidden while Show frames at the PC’s frame times is on: frames are scheduled then and nothing is skipped. Android only: desktop has no compositor display queue. Shown while Variable refresh rate is Off. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Upscalingupscaling_mode |
More | Off | Off; Smooth; Sharp (FSR); Sharp, Snapdragon (SGSR) | Choose a stream resolution below the screen size for SDR upscaling. Smooth is bilinear; Sharp (FSR) and Sharp, Snapdragon (SGSR) add edge sharpening. PyroWave uses SGSR for both FSR and SGSR selections. HDR and 10-bit streams use direct output; the row says so. |
Upscaling sharpnessupscaling_sharpness |
More | 50% | 0%–100%; step 1% | Reduce for halos or ringing; raise for soft edges. Applies on the next stream. At 0%, FSR skips extra sharpening; SGSR still reconstructs edges. Shown only with Sharp (FSR) or Sharp, Snapdragon (SGSR). |
Video positionvideo_alignment |
More | Center | Center; Top | Top places a Fit or 1:1 picture at the top of the screen, leaving the space below for the soft keyboard or the lower half of a half-folded phone. No effect on Fill and Stretch, which cover the whole screen. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Virtual displaycheckbox_virtual_display |
More | Off | On; Off | Enable to request a host display matching the stream. Requires host support and a ready display driver. |
PC render resolutionseekbar_virtual_display_scale |
More | 100% | 50%–200%; step 5% | Change the PC's render resolution relative to the stream. Desktop text size stays as set on the host. Shown while Virtual display is On. |
PC display scalinglist_virtual_display_dpi |
More | PC’s own | PC’s own; 100%; 125%; 150%; 175%; 200%; 225%; 250%; 300%; 350%; 400%; 450%; 500% | Raise for larger text and interface on the virtual display, for example on a small screen; the resolution does not change. PC's own keeps the scale set on the PC. Rubylight PCs read it; other hosts ignore it. |
Display arrangementhost_display_location |
More | No stored default | Action | How the PC places the streamed display beside its own screens, for every PC; a PC's own choice in its menu wins. Keep PC display primary preserves the monitor's primary role; make virtual display primary moves it to the stream. Needs host support. Stored as host_display_location, and per PC as before. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Touch modecheckbox_touchscreen_trackpad |
Main | Trackpad | Trackpad; Direct mouse; Multi-touch; Local cursor; Touch off; Trackpad (touchpad gestures) | Use Trackpad for relative cursor movement, Trackpad (touchpad gestures) for the same with a physical touchpad’s gestures (tap-and-a-half drag, flick momentum), Direct mouse to point at a screen location, Multi-touch for host touch input, Local cursor for a pointer drawn on this device with no round trip, or Touch off to ignore fingers while playing with a controller (Back still opens the stream menu). Unsupported native touch falls back to Direct mouse. The picker's Help explains each mode. See touch modes. |
Mouse modecheckbox_absolute_mouse_mode |
Main | Captured | Captured; Desktop pointer | Captured by default, for game mouse look. Desktop pointer moves the PC's pointer like a desktop mouse, with acceleration. Available on Android 8+ except devices using the separate raw pointer path. Stored as the switch checkbox_absolute_mouse_mode (on: Desktop pointer). |
Controllerscontrollers |
Main | A player each | Off; One player; A player each | A player each by default: each controller is its own player and the PC sees controllers as they connect. One player makes every controller player 1 and keeps one controller present on the PC, for games that need one before any connects. Off sends no controller to the PC. Stored as checkbox_send_controllers and checkbox_multi_controller; an older store with the multiple controllers switch off reads as One player. |
Controller buttonscontroller_button_mapping |
Main | No stored default | Action | Open Controller buttons, press a digital button and choose its output or Nothing, and choose what the controller connects as (Automatic, Xbox without motion or touchpad, PlayStation or Nintendo). Mappings default to the original button and Connect as to Automatic; both are saved per controller model and apply next stream. |
Controller testcontroller_test |
Main | No stored default | Action | Open Controller test to see buttons, sticks, triggers and the D-pad live and to try rumble, lights, motion sensors and the touchpad where the controller has them. Works with a D-pad or controller alone; hold B or Back for one second to leave. Leaving stops rumble and restores the lights. See controller test. |
Show on-screen controlscheckbox_show_onscreen_controls |
Main | Off | On; Off | Enable a touchscreen gamepad. The group is hidden on devices without a touchscreen. |
Keyboard follows text fieldscheckbox_keyboard_follows_text_fields |
Main | On | On; Off | Opens the on-screen keyboard when a text field in the stream gets focus, with the field's type (numbers, no suggestions for passwords), and closes it when the field loses focus. Needs a host that sends text field notices; an attached hardware keyboard keeps typing instead. |
Clipboard synccheckbox_clipboard_sync |
Main | Off | On; Off | Off by default. Turn on to share copied text both ways while streaming. Android lets the app read the clipboard only while the stream is in front, so copies made in other apps go when you return. Needs a host that offers clipboard sync and lets this device read and write its clipboard. It carries text only: copy a PC image from the stream menu, and send large copies with Send clipboard to host. |
More settingsmore_input |
Main | Closed | Action | Shows or hides the Controls rows that are not main, such as dead zones, mouse emulation, USB controllers, trackpad and keyboard settings. Settings search and links find them while it is closed. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Nintendo button layoutcheckbox_flip_face_buttons |
More | Off | On; Off | Enable to swap A/B and X/Y on physical and on-screen gamepads. |
Buttons to leave the streamlist_gamepad_quit_combo |
More | Off | Off; Select+LB+RB+Y; Start+LB+RB+A; Start+LB+RB+B; LB+RB+X+Y; LB+RB+A+B | Off by default: Start+Select+LB+RB opens the stream menu, where Disconnect leaves. Choose a combination to leave the stream straight from the controller, for example on a TV; the stream ends once every button of it is let go, so none stays held on the PC. Pick one a game doesn't use. The stream menu's Controller mouse switch turns the controller mouse on or off whether or not holding Start does. |
Stick dead zoneseekbar_deadzone |
More | 7% | -20%–20%; step 1% | Raise to suppress stick drift; lower for small movements. Games can add their own deadzone on top. |
Trigger dead zoneseekbar_trigger_deadzone |
More | 2% | 0%–30%; step 1% | Raise if a resting trigger presses by itself; lower so light presses register. 0% sends every press. Games can add their own deadzone on top. |
Gyroscope Mappinggyro_mapping_profiles |
More | No stored default | Action | Choose a connected controller to use Automatic, Identity, Flydigi XYZ or a custom gyroscope profile. Custom profiles save independent axis mappings, inversion, and horizontal/vertical sensitivity from 0.10x to 3.00x. Changes apply on the next stream. |
Motion controlscheckbox_gamepad_motion_sensors |
More | On; Off on Android 12 (API 31) | On; Off | Enable for controller gyro/accelerometer input on Android 12+. Fresh Android 12 (API 31) installations override this to Off because of an OS sensor bug. |
Use device motion sensorscheckbox_gamepad_motion_fallback |
More | Off | On; Off | Enable to use this device's motion sensors when a controller lacks them. Player 1 also switches to them when the controller's gyroscope reports only zeros for a second. Hidden if the device has neither gyro nor accelerometer. |
Turn off vibrationcheckbox_disable_rumble |
More | Off | On; Off | Enable to stop every vibration the host asks for: controller and trigger rumble, USB DualSense waveform haptics and Vibrate device for rumble. Checked once at stream start. |
Vibrate device for rumblecheckbox_vibrate_fallback |
More | Off | On; Off | Enable to feel host rumble on this device when the controller has no rumble motors. |
Device vibration strengthseekbar_vibrate_fallback_strength |
More | 100% | 1%–200%; step 1% | Adjust device rumble strength; 100% is normal strength. Shown while Vibrate device for rumble is On. |
Controller mouse modecheckbox_mouse_emulation |
More | On | On; Off | Leave on to toggle controller mouse mode by holding Start. |
Stick for scrollinganalog_scrolling |
More | Right analog stick | Both sticks move the mouse; Right analog stick; Left analog stick | Choose which stick scrolls in controller mouse mode. The other moves the pointer; with None, both move it. Shown while Controller mouse mode is On. |
Precise controller mousecheckbox_mouse_emulation_fixed_step |
More | Off | On; Off | Enable for precise pointing in controller mouse mode: hold X while moving the stick to move a fixed step; Y doubles the step from 1 to 128 pixels, then wraps to 1. Shown while Controller mouse mode is On. |
Controller touchpad as mousecheckbox_gamepad_touchpad_as_mouse |
More | Off | On; Off | Enable to always move the host pointer with the controller touchpad instead of forwarding native touchpad input. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Hold Guide to open the stream menulist_guide_menu_hold |
More | 1 s | Off; 0.5 s; 1 s; 1.5 s; 2 s | 1 s by default: holding a controller's Guide (Home/PS) that long opens the stream menu, also with Back button as Guide on. A shorter press still goes to the PC as Guide, and pressing another button while Guide is down sends Guide at once, so chords such as Guide+RB work as before. Turn it off if a game or the PC needs a long Guide press. Desktop has the same setting. Applies from the next stream. |
Back opens the stream menucheckbox_back_opens_menu |
More | Off | On; Off | Enable for a handheld's dedicated physical Back key, such as on AYN Thor, to open the stream menu instead of being forwarded as a controller button. Off preserves its existing mapping. Select/Start, mouse right-click and Keyboard Back sends Windows key keep their behavior. Applies from the next stream. |
Back button as Guidecheckbox_back_as_guide |
More | Off | On; Off | Enable so Back on any controller sends Guide (Home/PS), as does a handheld's system button that acts as Back, such as the Retroid Pocket's: a built-in Back key and a Back the firmware injects. A controller whose Select is Back sends Guide instead; only a pad that uses Back as Start keeps it. Back opens the stream menu takes priority; Android's Back gesture and the controller menu chord still open the stream menu. Android only: desktop controllers report a real Guide button. Applies from the next stream. |
Floating menu buttoncheckbox_floating_menu_button |
More | Off | On; Off | Off by default. Shows a round button over the stream that opens the stream menu with a tap; drag it to move it, and it keeps its place across sessions and rotations. Show menu button under the menu's More turns it on or off during a stream. Not shown on TVs. Android only: the desktop client opens the menu from the pointer and keys. See the stream menu. |
Y in the stream menulist_stream_menu_button_y |
More | Default | Default; Off; Keyboard; PC keyboard; Mouse; Overlay; Shortcuts; Microphone; Touch mode; On-screen controls; Quality; Video output; Zoom; Send clipboard; Get clipboard; PC commands; Diagnostics; Session and graphics; Disconnect; Quit game | Default runs Keyboard, as the tile's corner shows. Choose what the button runs while the stream menu's first page is open, or Off. A way out such as Disconnect also runs from the button and asks first, Disconnect too, so a stray press never ends the stream; it shows the button's letter. |
X in the stream menulist_stream_menu_button_x |
More | Default | Default; Off; Keyboard; PC keyboard; Mouse; Overlay; Shortcuts; Microphone; Touch mode; On-screen controls; Quality; Video output; Zoom; Send clipboard; Get clipboard; PC commands; Diagnostics; Session and graphics; Disconnect; Quit game | Default runs Mouse. See Y in the stream menu. |
LB in the stream menulist_stream_menu_button_lb |
More | Default | Default; Off; Keyboard; PC keyboard; Mouse; Overlay; Shortcuts; Microphone; Touch mode; On-screen controls; Quality; Video output; Zoom; Send clipboard; Get clipboard; PC commands; Diagnostics; Session and graphics; Disconnect; Quit game | Default runs Shortcuts. See Y in the stream menu. |
RB in the stream menulist_stream_menu_button_rb |
More | Default | Default; Off; Keyboard; PC keyboard; Mouse; Overlay; Shortcuts; Microphone; Touch mode; On-screen controls; Quality; Video output; Zoom; Send clipboard; Get clipboard; PC commands; Diagnostics; Session and graphics; Disconnect; Quit game | Default runs Overlay. See Y in the stream menu. |
Keyboard shortcutskeyboard_shortcuts_editor |
More | No stored default | Action | Create, edit or delete up to 32 named keyboard chords; they show as tiles in the stream menu and on the extra keyboard toolbar. Import/export JSON files to transfer them; importing asks before replacing the saved list. See custom keyboard shortcuts. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Mouse speedseekbar_mouse_speed |
More | 100% | 25%–400%; step 1% | Adjust physical relative mouse movement; 100% is normal speed. |
Mouse back/forward buttonscheckbox_mouse_nav_buttons |
More | Off | On; Off | Enable to send mouse Back/Forward buttons. Disable if it interferes with right-click. |
Trackpad speedseekbar_trackpad_speed |
More | 100% | 25%–400%; step 1% | Adjust Trackpad movement; 100% is normal speed. |
Local cursor speedseekbar_local_cursor_speed |
More | 100% | 25%–400%; step 1% | Adjust Local cursor movement; at 100% the drawn pointer moves as far as your finger. |
Pointer accelerationcheckbox_trackpad_acceleration |
More | Off | On; Off | Enable so slow finger movement aims precisely and fast swipes cover more distance. Trackpad and Local cursor; applies from the next stream. |
Acceleration strengthlist_trackpad_acceleration_curve |
More | Medium | Gentle; Medium; Strong | Choose how strongly fast swipes are sped up. Shown while Pointer acceleration is On. |
Glide after a flickcheckbox_trackpad_momentum |
More | Off | On; Off | Enable so the pointer keeps gliding after a quick flick. A new touch, a mode change, the stream menu, picture-in-picture and disconnecting stop it at once. Trackpad and Local cursor. |
Glide distancelist_trackpad_momentum_glide |
More | Medium | Short; Medium; Long | Choose how far the pointer glides. Shown while Glide after a flick is On. |
Trackpad arealist_trackpad_area |
More | Full screen | Full screen; Right half; Left half; Bottom half; Top half | Limit where Trackpad and Local cursor gestures may start, for example to rest a thumb on one side; touches that start elsewhere are ignored. |
Three-finger taplist_three_finger_tap |
More | System keyboard | System keyboard; Middle click; Keyboard & mouse; Off; PC keyboard | Choose System keyboard (default), PC keyboard, Keyboard & mouse, Middle click or Off. Works in Trackpad, Direct mouse and Local cursor modes. |
Four-finger taplist_four_finger_tap |
More | Off | System keyboard; Middle click; Keyboard & mouse; Off; PC keyboard | Choose Keyboard & mouse, System keyboard, PC keyboard, Middle click or Off (default). Four fingers never also trigger the three-finger action. |
Finger taps in Multi-touchcheckbox_multi_touch_finger_taps |
More | Off | On; Off | Off by default. In Multi-touch, three- and four-finger taps normally reach the PC as touches. Turn on to use them for the finger-tap actions instead; a tap counts only when all fingers land together, and the touches the PC already had are cancelled when it starts. |
Trackpad sensitivity Xseekbar_trackpad_sensitivity_x |
More | 100% | -200%–200%; step 10% | Adjust the horizontal speed of a physical touchpad, such as a keyboard cover's, on top of Mouse speed; 100% is normal speed. Use a negative value to flip the direction. Touchscreen modes use Trackpad speed. |
Trackpad sensitivity Yseekbar_trackpad_sensitivity_y |
More | 100% | -200%–200%; step 10% | Adjust the vertical speed of a physical touchpad, such as a keyboard cover's, on top of Mouse speed; 100% is normal speed. Use a negative value to flip the direction. Touchscreen modes use Trackpad speed. |
Trackpad scroll speedseekbar_trackpad_scroll_speed |
More | 50% | 10%–300%; step 10% | Adjust how far two fingers scroll on a physical touchpad or in the Trackpad (touchpad gestures) touch mode; 50% is the default. Lower it if scrolling is too sensitive. |
Swap trackpad X and Ycheckbox_trackpad_swap_axis |
More | Off | On; Off | Enable if a physical touchpad moves the pointer sideways when you swipe up or down. Swaps X and Y before Trackpad Sensitivity applies. Touchscreen modes are not affected. |
Touchpad gestures on the PCcheckbox_native_touchpad |
More | Off | On; Off | Enable to send a physical touchpad's fingers, such as a keyboard cover's, to a PC that takes them, so the PC's own touchpad gestures (two-finger scroll, three- and four-finger swipes) work there. Needs New streaming engine and a PC that takes touchpad fingers; otherwise the touchpad moves the mouse as before and the stream says so once. Off by default. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Stream hotkeysstream_hotkeys |
More | No stored default | Action | Open to change, turn off or reset Nightjar's own key combinations in a stream (the same ones as desktop Nightjar): the stream menu (Ctrl+Alt+Shift+Tab), Disconnect, Release input, the performance overlay, the PC keyboard and the local cursor. Change records 2 to 4 keys, Ctrl, Alt or Shift and one other key; a combination that types, belongs to Windows or another hotkey has is refused. See stream hotkeys. |
Send system keyscheckbox_capture_system_keys |
More | On | On; Off | On by default. Esc, Alt+Tab, the Windows key and similar go to the PC while input is captured, and an external keyboard's Back key (the Esc key of many Android keyboards) sends Esc on Android 10 and newer; a built-in keyboard's Back stays Back. Android hands Alt+Tab and the Windows key to apps only on Android 16 QPR2 and newer (keyboard capture) and on many Samsung devices; elsewhere, and for Home, power and volume, Android keeps them. Keyboard Back sends Windows key and Back opens the stream menu take priority for keyboard Back. The stream menu's hotkey (Ctrl+Alt+Shift+Tab by default) and Android's Back gesture open the stream menu. Matches desktop's Send system keys. Applies from the next stream. |
System keys only in full screencheckbox_system_keys_fullscreen_only |
More | Off | On; Off | Off by default; usable while Send system keys is on. While the stream is in split screen, a freeform window or picture-in-picture, the system keys and a keyboard's Back as Esc stay with Android; in full screen they go to the PC again. Keys held at the change are released. Matches desktop's System keys only in full screen. Applies from the next stream. Shown while Send system keys is On. |
Keyboard Back sends Windows keycheckbox_back_as_meta |
More | Off | On; Off | Enable to send the Windows key from a physical keyboard's Back key. Android's Back gesture and TV remotes keep their local navigation; the controller menu chord remains available. See keyboard options. |
Right Alt as Windows keycheckbox_right_alt_as_meta |
More | Off | On; Off | Enable on a Mac host so Right Alt acts as Command (the Windows key). Left Alt is unchanged; leave off if you type with AltGr. |
Keyboard layoutlist_pc_keyboard_layout |
More | Automatic | Automatic; English (US); German (QWERTZ) | Pick the legends of the on-screen PC keyboard. Automatic follows the system language (German or English). Keys send positions, so the PC's Windows layout decides the character: set both alike. |
Keyboard sizeseekbar_pc_keyboard_size |
More | 50% | 30%–70%; step 5% | How much of the screen height the PC keyboard may take, 30-70%. Smaller leaves more of the stream visible; larger gives bigger keys. |
Keyboard opacityseekbar_pc_keyboard_opacity |
More | 90% | 30%–100%; step 5% | How opaque the PC keyboard is, 30-100%. Lower shows more of the stream behind it. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Controller stylelist_osc_style |
More | Classic | Classic; Modern | Pick Modern for analog sticks that follow your thumb, face buttons you can press two at a time and a layout you edit in place (stream menu → Edit controller layout), kept for all games or for one game. Classic keeps the original controller and its layout. Both send the same gamepad. Shown while Show on-screen controls is On. |
Modern controller stickslist_osc_stick_mode |
More | Floating | Floating; Fixed | Floating centers a stick where your thumb lands, so you need not hit it exactly; pick Fixed if you prefer to aim at the drawn stick. Shown only with Controller style Modern. Shown while Show on-screen controls is On. |
Modern controller stick deadzoneseekbar_osc_stick_deadzone |
More | 8% | 0%–30%; step 1% | Raise if a resting thumb drifts the camera or character; lower for finer aim. 8% suits most phones. Shown only with Controller style Modern. Shown while Show on-screen controls is On. |
Vibrate on presscheckbox_vibrate_osc |
More | On | On; Off | Vibrate when you press on-screen controls: the modern controller (not the classic one), the WASD stick (a light tick for W, A, S or D, a firmer click for a diagonal), the PC keyboard and the trackpads. Press feedback follows the phone's touch feedback setting. With on-screen controls on, a game's rumble also vibrates the phone when no physical controller takes it. Shown while Show on-screen controls is On. |
Only show L3 and R3checkbox_only_show_L3R3 |
More | Off | On; Off | Enable when another controller supplies everything except stick clicks. |
On-screen controls as their own playercheckbox_onscreen_own_player |
More | Off | On; Off | Enable to map the on-screen controls apart from physical controllers, for example with a Steam layout: they are controller 1 on the PC and physical controllers, built-in ones too, count from 2. Needs Controllers On, and has no effect with Only show L3 and R3. The gamepad controls of a game's own touch layout follow it only while Show on-screen controls is on; without it they keep sharing controller 1 with the first controller. Read once at stream start. Shown while Show on-screen controls is On. |
Show Guide buttoncheckbox_show_guide_button |
More | On | On; Off | Enable to expose the virtual Guide/Home button. Shown while Show on-screen controls is On. |
Show Touchpad buttoncheckbox_show_touchpad_button |
More | Off | On; Off | Off by default. Adds a Touchpad button to the on-screen controller (below Home in Modern, between Guide and Start in Classic) that clicks the touchpad of a PlayStation controller on the PC. While it is on, player 1 (the on-screen controller, or a handheld's built-in controls) connects as a PlayStation controller, so the PC gets a DualSense or DualShock 4 with the host on Automatic. Shown while Show on-screen controls is On. |
Steam Controller controlscheckbox_osc_steam_controls |
More | Off | On; Off | Enable when the PC's controller type is the Steam Controller and your controller lacks its trackpads, back buttons or grip touch, for example to finish Steam Input's calibration. Adds both trackpads, L4, R4, L5, R5 and grip touch toggles to the on-screen controls, classic or modern; they join controller 1. With the PC's Automatic controller type the trackpads can make the PC pick a PlayStation controller. Read once at stream start. Shown while Show on-screen controls is On. |
Opacityseekbar_osc_opacity |
More | 90% | 0%–100%; step 1% | Lower to see more of the game beneath the controls. Shown while Show on-screen controls is On. |
Reset controls layoutreset_osc |
More | No stored default | Action | Confirm to restore virtual button sizes and positions, for the classic and the modern controller, including layouts kept for one game. This layout is kept separately from a global settings reset. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
USB controller drivercheckbox_usb_driver |
More | On | On; Off | Leave on for built-in Xbox USB support. Android requests USB access when needed. |
Always use the USB drivercheckbox_usb_bind_all |
More | Off | On; Off | Enable to prefer the app's built-in Xbox USB driver even when Android already recognizes the controller. Shown while USB controller driver is On. |
USB DualSense drivercheckbox_usb_dualsense |
More | Off | On; Off | Enable for direct USB DualSense/Edge input, feedback and adaptive triggers. Accept the explanation and Android USB permission during a stream; Bluetooth retains Android's input path. |
USB DualSense audio and hapticscheckbox_usb_dualsense_haptics |
More | Off | On; Off | Enable alongside the USB DualSense driver for native waveform feedback. Hosts that support it (Rubylight) also forward controller speaker, headset and microphone audio. Microphone streaming needs its separate setting and Android permission; the controller mute button follows the stream mute. Reconnect after changing this option. USB only. Shown while USB DualSense driver is On. |
USB Switch Pro drivercheckbox_usb_switch_pro |
More | Off | On; Off | Enable to read a wired Nintendo Switch Pro Controller directly: calibrated sticks, Home and Capture, motion, rumble, player lights and battery. Accept Android's USB permission during a stream; Bluetooth and Joy-Con keep Android's input path. See Switch Pro over USB. |
Forward USB devicescheckbox_usb_forwarding |
More | Off | On; Off | Off by default. Adds USB devices to the stream menu, which hands a device plugged into this one (a drawing tablet, a security key) to the PC until you detach or unplug it or the stream ends. Needs the New streaming engine and a PC that offers USB forwarding (Rubylight 3.0); hubs and controllers the drivers above take are not listed. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Channelslist_audio_config |
Main | Stereo | Stereo; 5.1 Surround Sound; 7.1 Surround Sound; 7.1.4 Surround Sound | Choose 5.1, 7.1 or 7.1.4 for a matching audio output and host configuration; use stereo for headphones or two speakers. 7.1.4 needs Android 12L or newer, a 12-channel output and a Rubylight 3.0 PC; it is hidden for an output with fewer channels, and other PCs and outputs get 7.1. |
Play audio on the PC toocheckbox_host_audio |
Main | Off | On; Off | Enable to hear audio on the PC as well as Android. |
Send microphone to the PCcheckbox_enable_mic |
Main | Off | On; Off | Enable to talk in games and chat apps on the PC. Asks for microphone access; if it is not allowed, the setting stays off. The PC hears it as its streaming microphone. Mute it from the stream menu; the overlay shows whether it is sending. |
Microphone buttoncheckbox_mic_button |
Main | On | On; Off | Leave on for a round button on the stream that mutes and unmutes with one tap; drag it anywhere and it stays there. Shown only while the PC takes the microphone. Turn off to mute from the stream menu only; the menu's Input section can show or hide it during a stream. Shown while Send microphone to the PC is On. |
More settingsmore_audio |
Main | Closed | Action | Shows or hides the Audio rows that are not main: microphone processing, audio effects and passthrough. Settings search and links find them while it is closed. |
Echo cancellationlist_mic_echo_cancel |
More | Automatic | Automatic; On; Off | Leave on Automatic: it cancels echo with the speaker and turns off with headphones or a Bluetooth headset, following a switch during the stream. Pick On if the PC hears its own game sound through a headset. Shown while Send microphone to the PC is On. |
Noise suppressioncheckbox_mic_noise_suppression |
More | On | On; Off | Enable to filter fans and other steady noise out of the microphone. Shown while Send microphone to the PC is On. |
Automatic gaincheckbox_mic_auto_gain |
More | Off | On; Off | Enable when your voice swings between quiet and loud. Some devices level speech on their own. Shown while Send microphone to the PC is On. |
Microphone gainseekbar_mic_gain |
More | 100% | 25%–400%; step 5% | Raise if the PC hears you too quietly, lower if it hears you too loudly. Applied before sending; loud peaks are rounded off rather than clipped. 100 % leaves the sound as it is. Shown while Send microphone to the PC is On. |
Mute audiocheckbox_mute_audio |
More | Off | On; Off | Enable to stream without sound on this device, for example while the PC plays it (see Play audio on the PC too) or the device sits in a quiet place. Audio passthrough is not asked for. Applies to the next stream. |
Allow system audio effectscheckbox_enable_audiofx |
More | Off | On; Off | Enable for Android equalizers or effects. Can add delay and changes the audio output path. |
Audio passthroughcheckbox_audio_passthrough |
More | Off | On; Off | Enable for a receiver, soundbar or TV that decodes Dolby Digital or Dolby Digital Plus, or takes multichannel PCM as is. Asks a Rubylight PC for a format the audio output reports it plays, and keeps Opus otherwise. Dolby comes in 32 ms frames, so sound arrives later than Opus. Android 10 and later with the New streaming engine; hidden elsewhere. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Performance overlaycheckbox_enable_perf_overlay |
Main | Off | Off; Compact; Statistics; Debug | Choose Compact, Statistics or Debug while diagnosing frame rate, network loss or delay; Off hides the overlay. Compact is one line: rendered FPS, network round trip (RTT) and frame loss behind a green, amber or red dot. Statistics summarizes the stream with a status line of lasting facts. Debug shows detailed measured stages and is always available. Stored as checkbox_enable_perf_overlay (On for any choice but Off) and performance_overlay_mode (compact, statistics or debug; Off keeps the last mode). Can also be changed in the stream menu → Display → Overlay and diagnostics; Copy stats includes Debug details. |
Overlay positionperformance_overlay_position |
Main | Top left | Top left; Top right; Bottom left; Bottom right | Choose the corner the performance overlay starts in. It moves to a free corner when on-screen controls would cover it, and always stays inside the camera cutout. Right-hand corners align the text to the right. Can also be changed in the stream menu → Display → Overlay and diagnostics → Position, which takes effect at once. |
Recover interrupted streamscheckbox_auto_reconnect |
Main | On | On; Off | On by default. Resume the same running game after transport failures or returning from screen lock, up to five attempts within one minute. Back or leaving during a retry cancels it. Graceful termination, pairing, permissions and decoder failures stay manual; recovery never launches or replaces a game. Installs that stored the old default (off) were switched on once; turning it off again is kept. |
Connection testnetwork_tests |
Main | No stored default | Action | Opens a saved PC's Connection test on that PC's settings; with several saved PCs it asks which one first. Hidden until a PC is saved. Desktop has a Connection test row too, which measures the download speed. Stores nothing. |
More settingsmore_streaming |
Main | Closed | Action | Shows or hides the Streaming rows that are not main, such as picture-in-picture, network grace and client roaming. Settings search and links find them while it is closed. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Keep streaming when the network changescheckbox_client_roaming |
More | On | On; Off | On by default. When this device changes networks, the stream moves to the new address instead of waiting for the old one. Needs the New streaming engine and a PC that offers client roaming (Rubylight 3.0); other PCs keep the network grace period. |
Continue on mobile datacheckbox_roaming_metered |
More | Off | On; Off | Off by default. Lets client roaming move the stream onto mobile data or another metered network. Leave off unless you want streams to keep running on mobile data; streaming uses a lot of data. |
Wait through network dropoutslist_network_grace |
More | Off (10 seconds) | Off (10 seconds); 15 seconds; 20 seconds; 30 seconds; 60 seconds | Off by default: the stream ends after 10 seconds without contact. 15, 20, 30 or 60 seconds keeps it open through a Wi-Fi roam, a short dropout or a VPN moving between Wi-Fi and mobile data; the picture freezes until the network returns. Longer waits only help if the host waits too, so raise its own client timeout. When the wait runs out the stream ends with a message saying so, and Recover interrupted streams, if on, then reconnects. See network drops. |
Group incoming video packetscheckbox_receive_coalescing |
More | On | On; Off | On by default. With the New streaming engine, the network stack hands over several video packets in one read (UDP GRO), which saves work at high bitrates. Turn it off if the picture turns blocky or black at some bitrates, which a network adapter that merges packets wrongly can cause. Applies to the next stream. |
Play over the internetcheckbox_internet_play |
More | On | On; Off | On by default. Away from home, Nightjar reaches a PC that offers Play over the internet (Rubylight with the option on) without port forwarding: it tries the local network, then the PC's IPv6 address, then a forwarded port, and only then a direct internet path that both sides punch through their routers, found through a public peer-to-peer directory that holds only encrypted notes (see Privacy). Connect once on the PC's network so it can give this device its key. At home nothing changes: the local network answers first. The host list shows the path in use. Turn it off to never look up or punch a path. |
Hide connection warningscheckbox_disable_warnings |
More | Off | On; Off | Enable to hide stream connection warnings once your connection is tuned. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Dual screen modecheckbox_dual_screen |
More | Off | On; Off | Enable on a device with a second screen to stream the same game to both: the second screen gets a stream of its own at its own resolution, while sound, controllers and microphone stay with the first and a touch mode change on either screen applies to both. The second stream is the same device as the first, so the PC pairs once. It needs a Rubylight host that supports it, which decides which of its screens each stream shows. Applies to the next stream. |
Second screen resolutionlist_resolution_screen2 |
More | Second screen’s own size | Second screen’s own size; 360p; 480p; 720p; 1080p; 1440p; 4K | The resolution of the second screen's stream in Dual screen mode, apart from the first screen's: the second screen's own full size, or a standard size. Applies to the next stream. Shown while Dual screen mode is On. |
Picture in picturecheckbox_enable_pip |
More | Off | On; Off | Enable to keep a small video window when leaving the app. Input and overlay are hidden there; requires device support. |
Ready the decoder for foldingcheckbox_covering_decoder_size |
More | Off | On; Off | Off by default, under Streaming's More rows, after Dual screen. Sizes the decoder up front for the largest picture a fold or turn can bring, to save the decoder restart and key frame on the first one. On foldables whose two screens are separate displays it changes nothing. |
Input-only on any PCcheckbox_input_only_any_host |
More | Off | On; Off | Enable to add Input-only to a game's menu on PCs whose host has no Input-only mode of its own (Sunshine, GameStream, Apollo with its input-only mode off). The PC still streams video and audio at 640x360, 30 FPS and 500 kbps, about 0.7 Mbit/s with overhead; Nightjar discards both. Hosts with their own mode keep using their Input-only tile. See Input-only on any PC. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Themecheckbox_always_dark |
Main | System | System; Dark; OLED black | Choose System to follow the system theme, Dark for the dark grey theme on app screens, menus and dialogs even when the system uses a light theme (as most TVs do), or OLED black for pure black backgrounds. Applies immediately and stays separate from stream profiles. Stored as two switches, checkbox_always_dark and checkbox_oled_black; OLED black sets both, System clears both. High contrast keeps the app black whatever is chosen here. |
Languagelist_languages |
Main | System default | System default; English; Deutsch; Español; Français; Italiano; Polski; Português (Brasil); Tiếng Việt; Türkçe; Русский; Українська; 日本語; 한국어; 简体中文; 繁體中文 | Choose the interface language. Android 13+ uses the system per-app language setting. |
When Nightjar openslist_open_on_start |
Main | Home | Home; Show my PCs; Continue my last game; A chosen game | Home by default. Home opens the games to continue, your library across PCs and the PCs (it appears once a paired PC has supplied its app list); Show my PCs opens the list of PCs. Continue my last game and A chosen game count down 3 seconds into that game on a cold start from the launcher or at sign-in; A chosen game is offered once a game was chosen from its menu. Cancel, B, Back and Esc stop the countdown; an offline PC is woken. If the last automatic start failed or its stream died within 10 seconds, the next one is skipped and says so. A running game is never replaced without asking; a game playing on another device stops the start, and so does a network still away after a minute. Stored as list_open_on_start and checkbox_console_home, read as one choice (nightjar-policy's StartScreen). |
Quick resumecheckbox_quick_resume |
Main | Off | On; Off | Enable to go straight back into the running game when you tap its PC, skipping the library. Use the PC's menu for the library while a game runs. Off keeps the tap opening the library. |
PIN lockpin_lock |
Main | No stored default | Action | Off until a PIN is set. Asks for a PIN to open Nightjar or to start a stream. A forgotten PIN can only be reset by clearing Nightjar's app data in Android's settings, which also removes paired PCs. |
Helphelp |
Main | No stored default | Action | Open the bundled help: connecting a PC, pairing, controls and the stream menu, common fixes and problem reports. Works offline; each topic links to these documents for detail. |
Report a problemreport_problem |
Main | No stored default | Action | Preview the explanation and share a redacted event/crash report through Android's share sheet, or send it to a PC with file transfer (Send to PC). |
Check for updates nowcheck_updates_now |
Main | No stored default | Action | Look for a newer release now, even if the automatic check ran recently. A release you skipped is shown again. Hidden when the app was installed from Google Play. |
More settingsmore_app |
Main | Closed | Action | Shows or hides the App rows that are not main, such as small icons, automatic update checks, about, reset and accessibility. Settings search and links find them while it is closed. |
Check for updates automaticallycheckbox_check_updates |
More | On | On; Off | Leave on to look for a newer release on GitHub when the PC list opens, at most every 12 hours; you choose whether to install it. Hidden when the app was installed from Google Play, which updates it. |
Use small box artcheckbox_small_icon_mode |
More | On below 500 dp smallest screen width; Off on TVs and larger screens | On; Off | Enable to fit more games in the library grid. |
Aboutabout_app |
More | No stored default | Action | View the installed app version and open Source and licenses. |
Reset all settingsreset_all |
More | No stored default | Action | Confirm to reset global preferences. Keeps pairing, PC profiles, controller mappings, control layout and language. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Text and button sizelist_ui_scale |
More | 100% | 85%; 100%; 115%; 130%; 150% | Raise for large, readable menus on a TV or a small phone; lower to fit more on screen. Scales the whole app layout, not the stream, and the system font size still applies on top. Applies immediately and stays separate from stream profiles. |
Interface layoutlist_ui_mode |
More | Automatic | Automatic; TV; Handheld | Automatic follows the device. Choose TV on a handheld or phone that is connected to a TV (a Retroid Pocket docked over HDMI, for example) to get the TV layouts with focus, a remote or gamepad and larger rows; choose Handheld to get the touch layouts on a TV. The stream is not changed. Applies immediately and stays separate from stream profiles. |
High contrastcheckbox_high_contrast |
More | Off | On; Off | Enable for a black background, body-coloured secondary text and outlines (7:1 against the background) and a 4 dp focus ring on every app screen. The stream is unchanged. Applies immediately and stays separate from stream profiles. |
Reduce motionlist_reduce_motion |
More | Follow system | Follow system; Reduce; Full | Follow system reduces motion when Android's animation scale is 0 or animators are off. Reduce always swaps the focus zoom and sheet slide for a plain ring; Full always animates. Applies immediately and stays separate from stream profiles. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
New streaming enginecheckbox_rust_engine |
Main | On | On; Off | On by default. Streams with Nightjar's new engine (written in Rust), including PyroWave and remote monitor sessions. Turn it off to use the classic engine (moonlight-common-c) if a stream fails to start or misbehaves, and report the problem. Hosts older than GFE 3.22, and hosts that report no codec support, use the classic engine automatically. Installs that stored the old default were switched on once; turning it off again is kept. Applies from the next stream. |
Low-latency decodinglow_latency_decoding |
Main | On (not stored: on while Android low-latency mode, Chipset low-latency mode, Phone performance hints are all on) | On; Off | Leave on. Sets Android low-latency mode, Chipset low-latency mode and Phone performance hints together; turn off only to test a decoding problem. The individual switches are behind Customize; the row says when one is off. |
Customizelow_latency_customize |
Main | Closed | Action | Opens or closes the individual switches under Low-latency decoding: Android low-latency mode, Chipset low-latency mode, Phone performance hints, Decoder performance hints and HEVC low-latency flags. Settings search finds them while it is closed. |
Android low-latency modecheckbox_codec_low_latency |
More | On | On; Off | Leave on for supported Android 11+ decoders. Disable when comparing a decoder freeze or artifact. |
Chipset low-latency modecheckbox_vendor_low_latency |
More | On | On; Off | Leave on for supported chipset decoder keys. Disable to isolate vendor-specific instability. |
Phone performance hintscheckbox_phone_performance_hints |
More | On | On; Off | On by default. On Android 12 and later, reports the decoder thread's work time against the frame time, so Android can raise CPU performance when decoding falls behind. Turn it off only to compare decode times with and without it. |
Decoder performance hintscheckbox_codec_performance |
More | On | On; Off | Leave on for decoder priority/rate hints on Android 6+. Disable to compare heat or battery use. |
HEVC low-latency flagslist_hevc_low_latency_mode |
More | Auto | Auto; On; Off | Auto by default: every HEVC decoder gets the Android and vendor low-latency flags except Amlogic's, which stall the display with them. On gives them to Amlogic decoders too, with a warning in the log. Off omits them on any device and disables HEVC reference-frame invalidation; choose Off if HEVC video stutters or freezes. H.264, AV1 and decoder performance hints keep their own settings. Off is stored in the older switch's key checkbox_disable_hevc_low_latency as true, so older saved values and profiles keep their meaning; this key only tells Auto from On. Applies to the next stream and decoder benchmark; changing it invalidates previous benchmark results. |
Snapdragon GPU drivergpu_driver |
Main | No stored default | Action | Import and select a compatible Snapdragon Vulkan driver for PyroWave. Shown on arm64 Adreno devices only. The system driver remains the default; changes apply to the next stream. |
Boost GPU performance for PyroWavecheckbox_gpu_max_clocks |
Main | Off | On; Off | Off by default. Optionally request higher Adreno GPU clocks during PyroWave streaming to reduce decode time; this can increase power use and heat. Thermal protection remains active. Installs that already stored a choice keep it. Shown on Adreno devices only. |
Compatibility video viewcheckbox_texture_view |
Main | Off | On; Off | Try for black or flickering video or misplaced output. Adds composition work and is disabled for HDR, Less color banding and PyroWave. |
Render through Vulkancheckbox_vulkan_render |
Main | Off | On; Off | Presents H.264, HEVC and AV1 through Vulkan with its own frame pacing, for frame-generation overlays that hook Vulkan. It adds a render pass, so some latency, and needs Android 10 and a GPU with Vulkan 1.1. If it cannot be used (PyroWave, Android 9 or older, no Vulkan support, 4:4:4 video, or it fails to start) the stream uses direct output and a message says why. While it is on, client-side upscaling is off. If it stops working during a stream, the stream ends with a message that names it; turn this switch off to go back. Leave it off unless you need such an overlay. |
More settingsmore_advanced |
Main | Closed | Action | Shows or hides the Advanced rows that are not main: compatibility, More options and Diagnostics. Settings search and links find them while it is closed. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Game optimization hintcheckbox_enable_sops |
More | On | On; Off | Leave on. Tells the PC whether it may optimize a game's settings for this stream. Rubylight only passes the choice on to commands you run on the PC, as SUNSHINE_CLIENT_ENABLE_SOPS; other hosts may change the game's settings themselves. |
Chipset tuningcheckbox_experimental_chipset_tuning |
More | Off | On; Off | Off by default. Sends vdec-lowlatency to MediaTek Dimensity (c2.mtk) decoders and, with decoder performance hints on, asks Samsung Exynos decoders for the operating rate they declare next to the realtime priority hint. Needs vendor low-latency options on and HEVC low-latency flags not disabled. Only the first configure try carries them, so a decoder that rejects them falls back to the normal options. If video stops or stutters, turn it off. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Test the link before startingcheckbox_link_probe |
More | Off | On; Off | Off by default. A new stream at the automatic bitrate first times a short download from a Rubylight PC that offers it and starts at no more than 80 % of the result (never below 2 Mbit/s). Resumes, a bitrate you set and PyroWave are not tested. Off because it started streams lower, with more loss and freezes, in our measurement. |
Show Gyro Diagnosticscheckbox_show_gyro_diagnostics |
More | Off | On; Off | Off by default. Shows controller motion values and troubleshooting controls while streaming. Enable only when investigating gyroscope behavior; recording and CSV sharing are available from the overlay. |
PyroWave frame pacepace_calibration |
More | No stored default | Action | Opens a saved PC's PyroWave frame pace on that PC's settings, where it is measured: the fastest pace at which the PC's PyroWave frames arrive whole. Shown while a paired PC can measure it or has one saved; with several it asks which one first. Stores nothing here. |
Show decode time after streamingcheckbox_enable_post_stream_toast |
More | Off | On; Off | Enable to see the average decode time after a session ends; it is not end-to-end latency. |
Latency benchmarklatency_benchmark |
More | No stored default | Action | Run a 10-second local frame-callback, timer and input-dispatch benchmark without a host. Use Measure input latency in the stream menu for end-to-end timing. |
Export latency CSVexport_latency_csv |
More | No stored default | Action | Choose a destination for the latest local frame-timing CSV. Each row holds the measured stage timings. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Error correctionlist_fec_choice |
Main | PC’s setting | PC’s setting; Automatic; 10 %; 20 %; 30 %; 50 % | PC's setting by default: the PC adds the recovery data its own settings call for. Automatic asks it to follow the losses this device reports; 10, 20, 30 or 50 % fixes the share. Rubylight PCs and Sunshine-based PCs that accept it take this choice; other PCs use their own setting either way. |
Lower bitrate when frames are lostcheckbox_rate_change_bitrate |
Main | Off | On; Off | Off by default, under Debug: turn on to let this device lower or raise the bitrate from its own frame loss and network delay readings, in place of Lower bitrate when the network is busy. Needs the New streaming engine and a host that offers bitrate changes; other streams use Lower bitrate when the network is busy. |
Tell the PC when on Wi-Ficheckbox_tell_host_wireless |
Main | On | On; Off | On by default. Tells a Rubylight PC when this device streams over Wi-Fi, so it paces the stream for Wi-Fi from the start. Other PCs are not told. |
Tell the PC the link speedcheckbox_tell_host_link_speed |
Main | On | On; Off | On by default. Tells a Rubylight PC this device's wired port speed, so it never sends faster than the port can take. Other PCs are not told. |
Prioritize stream trafficcheckbox_network_priority |
Main | On | On; Off | Enable to compare scheduling under load. Requests streaming thread priority on this device. |
Instant mouse and pen inputcheckbox_unbatched_input |
Main | On | On; Off | Enable to bypass display-rate input batching. High-rate input can increase CPU and network load. |
Full color rangecheckbox_full_range |
Main | Off | On; Off | Use when the host and display both send full-range color, for full shadow and highlight detail. |
More settingsmore_debug |
Main | Closed | Action | Shows or hides the Debug rows that are not main. Every Debug row is main today, so it stays hidden. Settings search and links find them while it is closed. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
PyroWave early screen imagecheckbox_pyrowave_preacquire |
More | Off | On; Off | Off by default, under Debug's More rows. PyroWave takes the next screen image before the frame arrives. It measured no faster on our devices; turn it on to compare. |
| Setting / preference key | Tier | Default | Choices and units | When to change or use |
|---|---|---|---|---|
Speed up frame hand-offcheckbox_submit_hint |
More | Off | On; Off | Off by default, under Debug's More rows. Also reports the thread that hands frames to the decoder to Android's performance hints. It measured no faster on our devices; turn it on to compare. |
Video data straight to the decodercheckbox_codec_direct |
More | @bool/default_codec_direct | On; Off | On by default, under Debug's More rows. With the New streaming engine, H.264, HEVC and AV1 frames go into the decoder's buffer in place, one copy fewer. Turn it off if video stops or shows errors on this device. |
Decoder priority for receivingcheckbox_receive_decode_priority |
More | Off | On; Off | Off by default, under Debug's More rows. With Prioritize stream traffic on and the New streaming engine feeding the decoder directly, gives the receive thread the decoder's priority. It measured slower under load on our devices; turn it on to compare. |
Both presets stream at this screen's own resolution and keep the selected codec, HDR and Sharper colored text choices. Named profiles and saved PC and game values take priority. The selected chip says Custom when values do not match a preset.
| Setting | Native (recommended) | Battery saver |
|---|---|---|
| Resolution | This screen's resolution | This screen's resolution |
| Frame rate | Screen maximum (rounded, 1–1000 FPS) | 30 FPS |
| Bitrate | Default for that resolution, frame rate and codec | Default for that resolution, frame rate and codec |
| Variable refresh rate | Off | Off |
| Upscaling | Off | Off |
| Frame pacing | Lowest latency | Balanced with FPS limit |
| Allow lower refresh rate | Off | On |
| Decoder performance hints | On | Off |
| Boost GPU performance for PyroWave | Unchanged | Off |
Native also turns these back on: Android low-latency mode, Chipset low-latency mode, Phone performance hints, Keep only the newest frame, Instant mouse and pen input, Prioritize stream traffic.
Profiles (stream_profiles), under the presets on the Settings overview: Open to create, rename, duplicate or delete named profiles (sets of stream values such as Home 4K120 or Hotel), pick the profile in use, and optionally let the network pick one when a stream starts. A profile sets only the values chosen in it. See named profiles.
Long-press a PC and choose PC settings…; the screen is titled with the PC name. Every value under Video starts as Same as all PCs, which follows the main stream settings and the named profile in use, including later changes. A value that comes from a profile says so, for example from profile Hotel. Pick a value to give this PC its own; pick Same as all PCs again to follow the main settings. Same as all PCs for everything clears every value of this PC. Choose Save to keep the changes; leaving with unsaved changes asks whether to save or discard them.
Implementation: HostStreamSettings.java, validated by HostStreamProfile.java.
| Setting | Values | When to change |
|---|---|---|
| Resolution | Same as all PCs, Screen size (follows this screen), or width and height of 64–16384 pixels | Match a host display or choose a lower decode workload. Use this screen fills in the device's landscape dimensions. |
| Frame rate | Same as all PCs, or 1–1000 FPS with up to two decimal places | Request fractional rates such as 59.94 or 119.88 Hz. Use this screen fills in maximum display refresh; VRR uses the panel maximum. |
| Bitrate | Same as all PCs, or 0.5–2000 Mbps with up to three decimal places | Set this PC's bandwidth budget. The host applies its own ceiling; Nightjar follows the bitrate it reports. |
| Video codec | Same as all PCs, Automatic, Prefer AV1, Prefer HEVC, H.264, PyroWave | Compare codecs on this PC and device. PyroWave is listed only for PCs that can stream it, and says why when this device can't decode it. |
| Upscaling | Same as all PCs, Off, Smooth, Sharp (FSR), Sharp, Snapdragon (SGSR) | Choose a scaler for this PC's lower-resolution SDR stream. |
| Upscaling sharpness | Same as all PCs, or 0–100% | Sharpening strength for the sharp scalers. |
| HDR / Variable refresh rate | Same as all PCs, On, Off | Enable for a compatible host and screen. |
| Frame pacing | Same as all PCs, Lowest latency, Balanced, Balanced with FPS limit, Smoothest video (more delay) | Pick this PC's trade-off between latency and smoothness. Variable refresh rate replaces it with Lowest latency. |
| Sharper colored text | Same as all PCs, On, Off | On streams full color detail (4:4:4) from this PC where it and this device can: native 4:4:4 first, else packed full chroma, as On does in the main settings. |
| RTX HDR / RTX Video | PC’s setting, On, Off | Turn RTX HDR (an SDR game's picture turned into HDR, for HDR streams) or RTX Video (the picture cleaned up and sharpened before it is encoded) on or off for this device's streams from this PC or of one game, over the PC's setting for the game. PC’s setting, the default, sends nothing. Shown only for PCs whose host reports them (NvidiaEnhancements in serverinfo); sent at launch as rlRtxHdr and rlRtxVideo. The desktop app has the same two rows in a PC's and a game's own Video settings. |
| Same as all PCs for everything | Action | Clears every stream value of this PC after a confirmation; Save applies it. |
| Display arrangement (under Display on the PC) | See Display on the PC | Shown for PCs whose host supports display modes. Saved on its own, when you confirm it. |
| Virtual display | Same as all PCs, On, Off | On asks the PC for a display matching this stream. Off leaves it to the PC's display settings. Shown for PCs whose host has a virtual display. |
| PC render resolution | Same as all PCs, or 50–200% | Change the PC's render resolution relative to the stream. Used with the virtual-display request. |
| PC display scaling | Same as all PCs, PC’s own, or 100–500% in Windows' steps | Larger text and interface on this PC's virtual display; the resolution does not change. Shown only for PCs whose host reads it; on an older host version it is disabled with the reason. |
| Full color range (under Debug, last, after the Connection and PC groups) | Same as all PCs, On, Off | Request full-range color for this PC. |
Between Display on the PC and Debug, the PC's screen also holds its Connection group (Connection test, PyroWave frame pace for PCs that offer it, Play away from home, Wake-on-LAN, Other wake addresses) and its PC group (Open the PC's web UI, View details, Add games to a launcher, Add to home screen, Rename, Unpair, Remove PC). These are actions, except Other wake addresses: up to eight MAC addresses of the PC's other network adapters, which every wake also targets (Wake a sleeping PC).
A PC keeps only the values that differ from the main settings. The host's device and app policy may override a request. The performance overlay and the log show the PC's own values and the display choice for each stream.
A named profile is a set of stream values with a name, such as Home 4K120, Hotel or Mobile data. Open Settings → Profiles (under the presets) to manage them. Implementation: StreamProfilesActivity.java, stored by StreamProfiles.java and combined by StreamLayers.java.
When a stream starts, each value comes from the first of these layers that sets it:
- This game: the game's own values on this PC (game menu → Stream settings for this game).
- This PC: the PC's own values (PC settings…, see per-PC stream profiles).
- The profile: the profile the network picked, or else the profile in use.
- The main settings: everything under Settings.
On mobile data, Bitrate on mobile data then caps the bitrate, whatever layer set it. A layer that sets nothing leaves every value to the layers below. Profiles, PC and game values apply when a stream starts and never change during it; a reconnect keeps the network, and so the profile, that the stream started with.
Every value screen says where a value it doesn't set comes from: from the main settings, from profile Hotel, set for this PC. The Debug overlay and the Statistics status line show which layers a stream used, for example Settings: profile Hotel, chosen for Mobile data + this game. A profile picked by the network is also announced when the stream starts.
| Control | What it does |
|---|---|
| New profile | Asks for a name (1–32 characters, unique) and opens the new, empty profile. Set only the values it should change. Up to 50 profiles. |
| A profile → Edit values | The same rows as a PC's stream values: resolution, frame rate, bitrate, codec, upscaling and sharpness, HDR, variable refresh rate, frame pacing, sharper colored text and, under Debug at the end, full color range. Unset values say Not set and follow the main settings; Clear every value unsets them all. A profile leaves host display choices to each PC. |
| A profile → Rename / Duplicate / Delete | Duplicate copies the values under a new name. Delete also clears the profile from Profile in use and every network choice; streams use the main settings instead. |
| Profile in use | The profile every stream uses when no network choice applies. None (main settings) uses the main settings. |
| Choose by network | Off by default. On, the network a stream starts on picks the profile below; Ethernet and networks without a choice use the profile in use. |
| Mobile data | Mobile data, and Wi-Fi that Android marks as metered, such as a phone's hotspot. |
| Home Wi-Fi | The Wi-Fi networks listed under Home Wi-Fi. |
| Other Wi-Fi | Every other Wi-Fi, or every Wi-Fi while no home Wi-Fi is listed or the Wi-Fi name can't be read. |
| Home Wi-Fi → Add this Wi-Fi / Type a Wi-Fi name | Lists a home Wi-Fi by name. Select a listed name to remove it. |
| Next stream on this network | What a stream started now would use. |
Android shows the Wi-Fi name only to apps with location access. Nightjar asks for it only when you add the Wi-Fi you're on, after explaining why; typing a name needs no access at that point. Without access, home Wi-Fi can't be recognized when a stream starts: the Wi-Fi counts as other Wi-Fi and the stream says so. Mobile data and metered Wi-Fi are recognized without any permission. Wi-Fi names stay on this device and are never sent or logged; see privacy.
Nothing falls back silently. When the profile picked no longer exists or has a value this version can't read, the main settings apply and the stream says which profile was skipped. When a PC's or a game's stored values can't be read, that layer is skipped with a message and the layers below apply.
Open a game's menu and choose Stream settings for this game. The note under it says how many values the game sets. The screen has the same stream rows as a PC, plus the PC's virtual display rows (Virtual display, PC render resolution, PC display scaling) where the host has them; the display arrangement stays per PC. Values not set come from this PC, the profile and the main settings, in that order. Removing a PC removes its game values too.
A game's screen starts with a Preset row. Each preset sets only the values it names and leaves every other value of the game as it was, including the other two of frame pacing, variable refresh rate and bitrate. Nothing new is stored: the row names the one preset whose values the game holds, and says Custom when none matches, when two presets' values are both present (Smoothness with Quality, for example), and for a game with no values of its own. Resolution, refresh rate, codec and HDR are never touched.
| Preset | Sets | Leaves alone | Trade-off |
|---|---|---|---|
| Competitive | Frame pacing: lowest latency (the app default, set for this game so it holds if the main setting changes) | Variable refresh rate, bitrate | No extra delay. |
| Smoothness | Frame pacing: smoothest video; variable refresh rate off for this game, because it replaces frame pacing | Bitrate | Frames are held back, so latency goes up. |
| Quality | Bitrate: 150% of the PC's bitrate, or of the main settings' if the PC has none, at most the host's maximum (2000 Mbps) | Frame pacing, variable refresh rate | On a weak connection the larger frames can add delay. The bitrate is stored as a number, so a later change to the PC's or main bitrate shows the game as Custom. A named profile or the network never changes the base. |
| Custom | Nothing | Everything | Set each value yourself. |
Presets never change Radeon settings such as Anti-Lag and Chill; set those for a session in the Session and graphics menu.
Settings → Video → Bitrate on mobile data (Off, 3, 5, 10, 15, 20, 30 or 50 Mbps) caps the bitrate of a stream that starts on mobile data or metered Wi-Fi. It is separate from the profiles, so it protects a data plan whatever profile, PC or game value applies. The cap is decided at stream start; switching networks during a stream doesn't change it.
Long-press a PC, choose PC settings…, then Display arrangement under Display on the PC. The dialog is titled Display on and the PC's name. Select a mode and confirm Save display mode to apply it from the next stream. Cancel leaves the saved mode unchanged, and Help explains the modes. The display choice is saved separately from the stream profile, so it stays when you discard the PC's other changes.
Settings → Display & image → PC display → Display arrangement offers the same modes for every PC. A PC without a choice of its own uses it; choosing The PC’s own setting in a PC's dialog clears that PC's choice, so it follows the main settings again. Implementation: HostDisplaySettings.java, stored by HostDisplayChoice.java.
| Choice | Sent to the PC | What the PC does |
|---|---|---|
| The PC’s own setting (initial) | Nothing, or virtualDisplay=1 when Virtual display is on |
Follows Virtual display and the PC's display settings. |
| Exclusive — virtual display only (PC monitors off) | hostDisplay=exclusive, virtualDisplay=1 |
Adds a virtual display and switches the PC's monitors off during the stream. |
| Extend — make virtual display primary | hostDisplay=extended_primary, virtualDisplay=1 |
Adds a virtual display beside the monitors and makes it primary, where games and new windows usually open. |
| Extend — keep PC display primary | hostDisplay=extended, virtualDisplay=1 |
Adds a virtual display beside the monitors; the PC keeps its primary display. |
| Extended and separated — PC stays primary | hostDisplay=extended_isolated, virtualDisplay=1 |
Keeps the PC primary and places the virtual display away from the other displays. |
| Extended and separated — virtual display primary | hostDisplay=extended_primary_isolated, virtualDisplay=1 |
Makes the virtual display primary and places the PC's other displays away from it. |
| Physical display (no virtual display) | hostDisplay=physical |
Streams the PC's monitor, even when the PC or Virtual display would add a virtual display. |
The PC puts its displays back when the stream ends. Separated displays still share the same Windows session; they are not separate user sessions. Only PCs whose host supports display modes (Rubylight 2.2.1 or later) offer the choice, and only those hosts are sent hostDisplay. Other PCs follow Virtual display, which their stream settings show as a switch when the host has a virtual display. Remote Monitor and Remote Input keep the PC's settings.
| Control | Default / persistence | Use |
|---|---|---|
| Touch mode | Trackpad initially; saved globally | Switch Trackpad, Direct mouse, Multi-touch, Local cursor or Touch off immediately. |
| Show on-screen controls / Edit controller layout | Hidden initially; saved control preference/layout | Show the virtual gamepad, move/resize it and save. |
| Overlay visibility / mode / position | Off / Compact / top left initially; saved globally | Show or hide from the menu's top row; choose Off, Compact, Statistics or Debug, pick a corner, or copy detailed stats under Display → Overlay and diagnostics. |
| Set bitrate | Starts from the effective stream configuration; session adjustment | Request 0.5–2000 Mbps, subject to host limits. A manual selection turns off Lower bitrate when the network is busy for the stream. |
| Lower bitrate when the network is busy (turn on or off) | Follows the Lower bitrate when the network is busy setting (off by default); the menu's choice is saved per PC, separately for PyroWave and conventional codecs | Lower bitrate under congestion and recover gradually within the selected and host cap. Needs a host that reports its encoder bitrate (Rubylight); a Sunshine-based PC with its own automatic bitrate runs that instead. Changing the setting in Settings drops every PC's own choice. |
| Keyboard, clipboard and host actions | Actions, not factory preferences | Open the keyboard, transfer text explicitly, view host status, open the host web UI, reconnect, disconnect or quit the game. Host permissions apply. |
Settings → App → Reset all settings asks first, then restores every preference on the Settings screens, together with the values their pickers and the stream menu store (touch mode, video size, overlay mode, the frame-rate and theme choices, and the values behind Sharper colored text, Controllers and When Nightjar opens). It keeps paired PCs, per-PC stream profiles and each PC's own display choice, named profiles and their network choices, game stream settings, controller button mappings, the on-screen layout and the selected app language. Reset a PC profile with Same as all PCs for everything in its own screen, a profile or game with Clear every value, a controller in Controller buttons, and the layout with Reset controls layout.
This section covers the desktop client on Windows, Linux and macOS. Rows that exist on only some of them say so; every other row is on all three. On macOS, Command takes the place of Ctrl in the settings shortcuts below (Command+F, Command+=), and the stream's key combinations use Control and Option in place of Ctrl and Alt.
The desktop client's Settings has the same eight sections as Android, in the same order and with the same labels, Debug last, with Profiles above them. A wide window lists them on the left, with the open section's rows on the right; a narrow one shows them as chips above the rows. Each section shows its main rows first, the same ones as on Android, then More … settings (n), which opens the section's other rows in the same groups as on Android and reads Fewer … settings while open. A section without a main row on this computer (Advanced on most computers) lists its rows straight away. A row that depends on another (Minimum resolution on Automatic quality, for example) is hidden while it doesn't apply and is left out of the count; its value is kept. Search settings at the top (Ctrl+F) finds rows in every section by name, description, section or group, folded rows included; Escape leaves the field, then clears the search. A row changed from its default has Reset beside it, and App → Reset all settings puts every row back to its default after a confirmation. Above the main settings' rows, Presets offers Native (recommended) and Battery saver, as on Android. A preset asks first, then sets the resolution, frame rate, bitrate, variable refresh rate, upscaling and frame pacing; Native also turns Keep only the newest frame, Instant mouse and pen input and Prioritize stream traffic back on. The row reads Custom once any of them is changed.
A PC's, game's or profile's settings show the same rows, except the App section, Graphics card, Renderer, Bitrate on mobile data, Input-only on any PC and the rows that open other pages (Controller buttons, Controller test, Keyboard shortcuts, Stream hotkeys); Debug stays last. Each row has a box, For this PC, For this game or In this profile: ticked, the row keeps its own value and says what it would otherwise be; unticked, it says where its value comes from (From main settings, From profile …, Set for this PC). Choosing another value ticks the box; opening a menu and backing out changes nothing. The section list counts the rows set there, and Clear all for this PC (or game, or profile) at the top unticks every row after a confirmation. A PC's own settings also run Connection test (Streaming) and PyroWave frame pace (Advanced › Diagnostics) on that PC. The layers combine as on Android; see which value a stream uses.
Profiles, above the sections in the main settings, opens the profiles page; while a profile is active, the main settings say so at the top, with Manage profiles:
| Control | What it does |
|---|---|
| Active profile | The profile streams use, or Main settings. While a profile is active, the main settings say so at the top. |
| New profile | Asks for a name and opens the new, empty profile's settings. |
| Choose automatically | Picks a profile when a stream starts, by network: Mobile or metered, Home Wi-Fi and Other Wi-Fi. A network left at Active profile follows the active profile. |
| Home Wi-Fi names | Add a typed name, or Add current Wi-Fi; Remove takes one off. Up to 50 names of up to 32 characters; names are case-sensitive and stay on this device. |
| Mobile data bitrate limit | 0–500000 kbps; 0 means no limit. Caps the bitrate on mobile data and on metered Wi-Fi or Ethernet, after all profile, PC and game values. Video → Bitrate on mobile data sets the same limit. |
| Saved profiles → Edit / More | Edit opens the profile's settings; More holds Rename, Duplicate and Delete. |
Settings are stored in settings.json in %APPDATA%\Nightjar\config on Windows, ~/.config/nightjar on Linux or ~/Library/Application Support/Nightjar on macOS; NIGHTJAR_CONFIG_DIR overrides the folder.
Defaults are those of a fresh installation. Main rows show when a section opens; More rows follow behind More … settings, under the group named in italics, in the order shown.
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Resolution | Main | Native (this display) | Native, 640x360 to 5120x1440 in 16:9, 16:10 and ultrawide sizes, Custom… | The picture size the PC sends. Custom adds a Custom resolution row: width 320–7680 and height 240–4320 pixels. |
| Frame rate | Main | Display (the monitor's refresh rate) | Display, 30, 60, 90, 120, 144, 165, 240 fps, Custom… | Custom adds a Custom frame rate row: 10–500 fps. Fractional refresh rates are followed. |
| Automatic bitrate | Main | On | On, Off | On: Nightjar picks the bitrate for the resolution, frame rate and codec. Off adds a Bitrate row. |
| Bitrate | Main | The recommended bitrate | 0.5–2000 Mbps | With Automatic bitrate off. With PyroWave, a bitrate below PyroWave's minimum is flagged. |
| Lower bitrate when the network is busy | Main | Off | On, Off | Lowers the bitrate under sustained congestion and recovers gradually. Needs a compatible host, as on Android. |
| Bitrate on mobile data | Main | Off | Off, 3, 5, 10, 15, 20, 30, 50 Mbps | Main settings only, shown once this computer was on mobile data or a limit is set. The same limit as the Profiles page's Mobile data bitrate limit; a value set there is listed too. |
| Video codec | Main | Automatic (HEVC, then H.264) | Automatic, H.264, HEVC, AV1, PyroWave 4:2:0, PyroWave 4:4:4 | PyroWave is listed when this computer can render it on the GPU, and streams only from hosts that offer it. |
| HDR | Main | Off | On, Off | 10-bit HDR to an HDR-enabled display; turn HDR on in the operating system first. HDR10 on Windows, plus HLG and Dolby Vision from a Rubylight 3.0 PC. |
| Sharper colored text | More | Off | Off, On | Hidden with PyroWave, whose 4:4:4 is a codec of its own. On streams full color detail (4:4:4) where the PC and this computer can: the codec's own 4:4:4 where this computer decodes it and the PC encodes it, else full chroma packed into HEVC or AV1 where both offer it. HDR takes priority: with HDR on it packs only in a 10-bit mode both share. Switching it asks a PC that refused full chroma before again. |
| Less color banding | More | Off | On, Off | SDR in 10-bit HEVC or AV1. Needs a Main10 decoder; the PC's display must be in SDR. Hidden with PyroWave or with HDR on. |
| Automatic quality | More | Off | Off, Prefer motion, Prefer detail, Save power | Adjusts resolution and frame rate under sustained load; needs a host that supports live stream changes. |
| Minimum resolution | More | 720p | 360p, 540p, 720p, 1080p, 1440p (shortest edge) | Shown with Automatic quality. Never raises the selected size. |
| Minimum frame rate | More | 30 fps | 30, 45, 60, 90, 120 fps | Shown with Automatic quality. |
| HDR brightness follows the desktop | More | Off | On, Off | Linux only, shown with HDR on, for HDR on a Wayland desktop. Off: the stream shows at the absolute brightness the PC sends, as HDR10 defines it; Nightjar describes the picture to the compositor at the display's own reference white, so the compositor need not rescale each frame and can scan it out directly. On: the stream gets brighter or dimmer with the desktop's brightness, as the driver's description had it. NIGHTJAR_WAYLAND_HDR_DESCRIPTION=0 leaves the description to the driver and so always follows the desktop. Android hands HDR to the system and has no such row; Windows maps HDR itself. |
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Window | Main | Borderless | Fullscreen, Borderless, Windowed | Borderless covers the display without changing its mode. |
| Video size | Main | Fit | Fit, Fill (crop), Stretch, 1:1 pixels | |
| Variable refresh rate | Main | On | Off, On, Fastest | Uses G-Sync, FreeSync or HDMI VRR when the display has it on. On is Real VRR: each frame appears in step with the game, after a short steady delay (a little over 1 ms on a clean link, 3 to 4 ms over Wi-Fi), and whole; a frame more than 2 ms later than the typical one is shown when it is ready. Fastest shows each frame the moment it arrives, for the lowest latency; on Windows and Linux such a frame can tear. It is one choice over three values in settings.json (vrr, present_at_host_times, vrr_tear_free). A mix that is neither On nor Fastest, left by the separate switches of Nightjar up to 5.3.0 or written by hand, shows as Custom and works as before until another choice is made. Settings saved before Real VRR became the default had it turned on once. On Windows it needs a system that can present with tearing; where it can't, the row is hidden and the rows that apply without VRR show. |
| Refresh rate: Frame pacing | More | Lowest latency | Lowest latency, Balanced, Balanced with FPS limit, Smoothest video (more delay) | Shown with Variable refresh rate off. Every choice except Lowest latency waits for the display's refresh. |
| Keep only the newest frame | More | On | On, Off | Skips a frame the display can no longer show in time, so the picture never falls behind. |
| V-Sync | More | On | On, Off | Shown with Variable refresh rate off and Lowest latency pacing (the other pacings keep it on): waits for the display's refresh, so there is no tearing. Off accepts tearing: on a Linux Wayland desktop a VRR stream then also shows each picture at once instead of queueing it. |
| Image: Upscaling | More | Bilinear | Bilinear, FSR 1, SGSR 1, AI enhancement | For smaller SDR streams; HDR uses bilinear. AI enhancement is Windows only and listed when the GPU has video super resolution: it uses the GPU's video upscaling for SDR and HDR, and on NVIDIA with an HDR display also turns SDR streams into HDR. |
| Upscaling sharpness | More | 50 % | 0–100 % | Shown for FSR 1 and SGSR 1. |
| Video position | More | Center | Center, Top | Shown for Fit and 1:1 pixels: where the picture sits in the window. The stream menu's Video size keeps it; it has no row there. |
| PC display: Virtual display | More | Off | On, Off | Asks hosts that support it for a separate display matching the stream. |
| PC render resolution | More | 100 % | 50–200 % in 5 % steps | Shown with Virtual display on. The PC renders at this size; the transmitted video keeps its size. |
| PC display scaling | More | PC’s own | PC’s own, 100–500 % in Windows' steps | Text and interface size on the PC's virtual display. In a PC's own settings it is hidden when that PC's host can't apply it. |
| Display arrangement | More | The PC’s own setting | The PC’s own setting, Virtual display only, Extend as primary, Extend, Extend, isolated, Extend as primary, isolated, Physical display | The modes of Display on the PC, in the same order. Applied to normal streams on hosts that support display modes; a PC's own choice wins. |
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Mouse mode | Main | Captured | Captured, Desktop pointer | Captured keeps the pointer in the stream and suits games; Desktop pointer moves like an ordinary mouse and suits remote work. Ctrl+Alt+Shift+M switches during a stream by default. |
| Controllers | Main | A player each | Off, One player, A player each | A player each: every connected controller is a player of its own on the PC. One player: every controller is player 1. Off sends no controller to the PC. |
| Controller buttons | Main | Controller buttons | Main settings only. Opens each controller's button mapping, Connect as (Automatic, Xbox, PlayStation, Nintendo; Xbox sends no motion or touchpad), its own stick and trigger dead zones and axes. | |
| Controller test | Main | Test | Main settings only. Opens the controller page in test mode: the buttons, sticks and triggers a controller sends. | |
| Clipboard sync | Main | Off | On, Off | Shares copied text both ways; see clipboard. |
| Controllers: Nintendo button layout | More | Off | On, Off | Swaps A with B and X with Y. |
| Buttons to leave the stream | More | Start+Select+LB+RB | Start+Select+LB+RB, Select+LB+RB+Y, Start+LB+RB+A, Start+LB+RB+B, LB+RB+X+Y, LB+RB+A+B | Hold the buttons together to leave the stream. The names follow the connected controller (Options+Share+L1+R1 on a PlayStation controller, for example). |
| Stick dead zone | More | 0 % | 0–50 % | For every controller whose Controller buttons page sets none of its own. |
| Trigger dead zone | More | 0 % | 0–30 % | As Stick dead zone, for the triggers. |
| Motion controls | More | On | On, Off | Sends gyro and accelerometer data when a game asks for it. |
| Turn off vibration | More | Off | On, Off | Turns off rumble, trigger rumble and waveform haptics. |
| Controller mouse mode | More | On | On, Off | Hold Start for 750 ms, then release, to drive the PC's pointer with the controller. A and B click, the D-pad scrolls. |
| Stick for scrolling | More | Right | Off, Left, Right | Shown with Controller mouse mode on; the other stick moves the pointer, and Off lets both move it. |
| Precise controller mouse | More | Off | On, Off | Shown with Controller mouse mode on. Hold X for fixed pixel steps; Y doubles the step, from 1 to 128 pixels. |
| Controller touchpad as mouse | More | Off | On, Off | One finger moves, two scroll; press for a left click, with two fingers for a right click. |
| Input in the background | More | Off | On, Off | Keeps controllers working while Nightjar is not focused. |
| Stream menu: Hold Guide to open the stream menu | More | 1 s | Off, 0.5, 1, 1.5, 2 s | A short press still goes to the PC. |
| Back opens the stream menu | More | Off | On, Off | The controller's or handheld's Back or Select button opens the stream menu. |
| Back button as Guide | More | Off | On, Off | Back sends Guide (Home or PS) to the PC. Not while Back opens the stream menu. |
| Y / X / LB / RB in the stream menu | More | Default | Default, Off, Mouse, Overlay, Shortcuts, Microphone, Quality, Send clipboard, Get clipboard, PC commands, Session and graphics, Disconnect, End session, Quit game | What each button runs while the stream menu is open. Default keeps the tile the button marks in the menu. |
| Keyboard shortcuts | More | Change | Main settings only. Key combinations shown as tiles in the stream menu and sent to the PC with one press. | |
| Touch & mouse: Mouse speed | More | 100 % | 25–400 % | Speed of the captured pointer. |
| Mouse back/forward buttons | More | On | On, Off | Sends the mouse's Back and Forward buttons. |
| Touchpad gestures on the PC | More | Off | On, Off | Sends the touchpad's fingers to a PC that takes them; other PCs get a normal pointer. Windows reads precision touchpads, Linux reads the touchpad's evdev device (your user needs the input group), macOS reads the trackpad's touches. |
| Keyboard: Stream hotkeys | More | Change | Main settings only. Nightjar's own key combinations during a stream, such as the ones for the mouse mode and the overlay. | |
| Send system keys | More | On | On, Off | Alt+Tab, the Windows key and similar go to the PC while input is captured. |
| System keys only in full screen | More | Off | On, Off | Shown with Send system keys on. While the stream is in a window, Alt+Tab, the Windows key and similar stay with this computer; they go to the PC in full screen (the Fullscreen and Borderless window modes). |
| Right Alt as Windows key | More | Off | On, Off | Right Alt sends the Windows key, which a Mac uses as Command. |
| USB: USB DualSense audio and haptics | More | Off | On, Off | Waveform haptics, speaker, headset and microphone of a wired DualSense; see USB DualSense audio and haptics. |
| Forward USB devices | More | Off | On, Off | Attaches USB devices to the PC from the stream menu; see USB devices. On Windows a device needs the WinUSB driver. |
The Controllers group, the Stream menu group's controller rows and USB DualSense audio and haptics are shown while Controllers is not Off. On-screen controls are part of the Android app only; the desktop client has none.
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Channels | Main | Stereo | Stereo, 5.1 surround, 7.1 surround, 7.1.4 surround | 7.1.4 is Windows only, offered for a 12-channel output, and needs a Rubylight 3.0 PC. |
| Play audio on the PC too | Main | Off | On, Off | Keeps sound on the PC's speakers while streaming. |
| Send microphone to the PC | Main | Off | On, Off | Sends the default microphone to a host that accepts one. |
| Echo cancellation | More | Automatic | Automatic, On, Off | Shown with Send microphone to the PC on. Windows uses its own echo canceller; Automatic turns it off when sound plays through headphones or a headset. Linux and macOS record from an echo-cancel input when there is one (on Linux, PipeWire's or PulseAudio's echo-cancel module); without one the microphone is sent without echo cancellation and the stream says so. |
| Noise suppression | More | On | On, Off | Shown with Send microphone to the PC on. Filters steady background noise out of the microphone; adds about 7 ms to the microphone's delay. |
| Automatic gain | More | Off | On, Off | Shown with Send microphone to the PC on. Evens out quiet and loud speech. |
| Microphone gain | More | 100 % | 25–400 % in 5 % steps | Shown with Send microphone to the PC on. Makes the microphone quieter or louder before it is sent; 100 % leaves it as it is. |
| Mute audio | More | Off | On, Off | Plays no sound from the stream on this computer; the audio is still received. Play audio on the PC too and the microphone are unaffected, and Audio passthrough is not asked for. |
| Audio passthrough | More | Off | On, Off | Asks a Rubylight PC for uncompressed PCM instead of Opus: about 1.5 Mbps for stereo, up to 6 Mbps for 7.1. Other PCs keep Opus. The desktop client does not pass through Dolby. |
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Performance overlay | Main | Off (Compact when shown) | Off, Compact, Statistics, Debug | Ctrl+Alt+Shift+S (by default) and the stream menu change it too. |
| Overlay position | Main | Top left | Top left, Top right, Bottom left, Bottom right | Shown with the overlay on. |
| Recover interrupted streams | Main | On | On, Off | Resumes the same running app up to five times within one minute. |
| Connection test | Main | Test | Measures ping, jitter and loss to a paired PC and, on PCs that offer the speed test, receives 32 MiB to measure the download speed. In the main settings, with several such PCs, a list beside the button chooses the PC (not saved); a PC's own settings test that PC. | |
| Connection: Keep streaming when the network changes | More | On | On, Off | Keeps the stream when this device changes networks, with Rubylight PCs that support it. |
| Continue on mobile data | More | Off | On, Off | Shown with Keep streaming when the network changes on. Lets a roaming stream move onto a metered network. |
| Wait through network dropouts | More | Off | Off, 15, 20, 30, 60 s | Off: the stream ends after 10 seconds without contact, the connection's own timeout. 15, 20, 30 or 60 seconds keeps the session through a brief network interruption; the picture freezes until the network returns. Longer waits help only if the PC waits as long too. The same choices as on Android; a wait saved by an earlier version reads as the nearest one. |
| Group incoming video packets | More | On | On, Off | Windows and Linux. The network stack hands over several video packets in one read: receive coalescing on Windows, UDP GRO on Linux. On Windows, when the network adapter hands over such a read without the packets' size, Nightjar turns coalescing off for the rest of the stream and says so in nightjar.log. Turn it off if the picture still turns blocky or black at some bitrates. Applies to the next stream. |
| Hide connection warnings | More | Off | On, Off | Leaves the connection out of the stream's health notes. |
| Dual screen mode | More | Off | On, Off | With a second monitor and a PC that supports it, a second stream of the same game opens borderless full screen on the other monitor. Sound, controllers and the microphone stay with the first screen; it ends with the first stream and does not ask for the PIN again. |
| Second screen resolution | More | Second screen's own size | Second screen's own size, 640x360, 854x480, 1280x720, 1920x1080, 2560x1440, 3840x2160 | Shown with Dual screen mode on. The second stream's size, apart from the first's. |
| Input-only on any PC | More | Off | On, Off | Main settings only. Adds Input-only to a game's menu on hosts without an Input-only mode; the PC still sends video and audio at the smallest size, under 1 Mbit/s. |
The App section is in the main settings only.
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Theme | Main | Dark | System, Dark, OLED black | System follows the system's light or dark setting; OLED black uses pure black surfaces. Applies at once. |
| Language | Main | System default | System default, English, Deutsch, Español, Français, Italiano, 日本語, 한국어, Polski, Português (Brasil), Русский, Türkçe, Українська, Tiếng Việt, 简体中文, 繁體中文 | The launcher and the stream menu. System default uses the operating system's language when Nightjar has it, else English. Each language is listed by its own name, or by its English name where the fonts in use can't draw it. |
| When Nightjar opens | Main | Home | Home, Show my PCs, Continue my last game, A chosen game | Home starts on Home; Show my PCs on the list of PCs. The two game choices open with a 3-second countdown into the game. Choose the game with Open this when Nightjar starts in its menu; A chosen game is listed once a game is chosen, and shows its title. |
| Quick resume | Main | Off | On, Off | Selecting a PC that runs a game returns straight to the game. |
| PIN lock | Main | Off | Set up, Change PIN lock | Asks for a PIN to open Nightjar or to start a stream. |
| Help | Main | Open help | Opens the Help page: setup, pairing and common fixes. | |
| Report a problem | Main | Save report | Saves nightjar-problem.txt in the logs folder and opens the folder: this computer's system, Nightjar's version and this run's and the previous run's logs, with addresses, PC names, PINs and credentials removed. Nothing is sent. |
|
| Check for updates now | Main | Check now | The same builds as Check for updates automatically. Asks GitHub's releases API once, at once; a newer release shows its notice, and nothing is downloaded until you choose Update now. | |
| Check for updates automatically | More | On | On, Off | The Windows setup and portable copies and the Linux AppImage only. Once per launch, asks GitHub whether a newer release is out; nothing is downloaded until you choose Update now. A portable Windows copy only links to the release page. |
| Start Nightjar when I sign in | More | Off | On, Off | Windows and Linux (including the Flatpak), where the system supports it. Opens Nightjar after you sign in to this computer. |
| Use small box art | More | Off | On, Off | Small covers on Home, in a PC's library and in All games. Home's Card size sets the same thing. |
| About | More | Open | Nightjar's version, licences and credits, with a link to its source code. | |
| Logs | More | Open logs folder | Attach nightjar.log, and nightjar.prev.log for a problem before a restart, to a bug report. |
|
| Reset all settings | More | Reset all… | Asks first. Every row of the main settings goes back to its default. The language, PCs, games, profiles, PIN lock, controller buttons, shortcuts and settings without a row stay as they are. | |
| Accessibility: Text and button size | More | 100 % | 85, 100, 115, 130, 150 % | UI zoom. Ctrl+= and Ctrl+- change it, Ctrl+0 resets it. |
| High contrast | More | Off | On, Off | Black surfaces, white text, thicker outlines and focus rings. |
| Reduce motion | More | Follow system | Follow system, Reduce, Full motion | Follow system uses the Windows animation setting or macOS's Reduce motion; on Linux motion stays on. |
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Graphics card | Main | Automatic | Automatic, Power saving (its name), High performance (its name) | Windows with two GPUs only, main settings only, for the whole app: the GPU that draws and decodes the stream. Automatic is Windows' choice, unless 4:4:4 is asked for and only the high-performance GPU decodes it; the others set Windows' per-app preference for Nightjar. |
| Renderer | Main | Automatic | Automatic, OpenGL, GPU (Vulkan) | Linux only, main settings only, for the whole app. Automatic starts on OpenGL, where 8-bit VA-API pictures arrive without copies, unless a saved setting needs the GPU renderer, and switches to the GPU renderer when a stream needs it (HDR, upscaling, PyroWave, 4:4:4, 10-bit SDR, full chroma). OpenGL never switches, so such streams are refused; GPU (Vulkan) draws with the GPU renderer from the start. A change applies at once, never during a stream. |
| Display output | More | Automatic | Automatic, Desktop, Straight to the display | Linux only, main settings only, applies at the next start. Straight to the display draws through DRM/KMS without a Wayland or X11 session, with input from evdev; Automatic does that only when no desktop session is there. --kms and --no-kms override it for one start. Without a desktop |
| Video planes | More | On | On, Off | Linux only, main settings only. Drawing straight to the display, a stream's VA-API pictures go onto a display plane without a copy, with HDR10, VRR, content type Game and tearing flips (with V-Sync off, or with Variable refresh rate at Fastest); the overlay goes on a plane above. Needs the OpenGL renderer (Renderer at Automatic picks it). Off, or where the driver refuses the planes, the renderer draws the stream. |
| High-performance GPU power while streaming | More | Off | On, Off | Linux only, for the whole app. Each AMD GPU that drives a connected display is held at its peak power state for the stream, so its clocks do not drop between frames. Uses more power and shortens battery life. Changes nothing when the card's clocks are already set by hand. Applies from the next stream. |
| Compatibility: Game optimization hint | More | On | On, Off | Lets the PC adjust the game's settings for the stream. |
| Diagnostics: Test the link before starting | More | Off | On, Off | A new stream at the automatic bitrate tests the link to a Rubylight PC first and starts no higher than it holds. |
| PyroWave frame pace | More | Calibrate, Clear | Shown where a paired PC can measure it or a pace is saved. Finds and saves a frame pace for PyroWave on this network; Clear forgets a saved one. Can take several minutes and uses substantial data. In the main settings, with several such PCs, a list beside the buttons chooses the PC; a PC's own settings measure that PC. | |
| Show decode time after streaming | More | Off | On, Off | Shows the stream's average decode time when it ends. |
| Latency benchmark | More | Open | Tests this computer's decode and display timing without a PC. | |
| Export latency CSV | More | Export | Saves the last stream's latency measurements to a CSV file you choose. |
Rarely needed settings, last in the section list. The search finds them like any other row, and a PC's, game's or profile's settings list them here too.
| Setting | Tier | Default | Choices | Notes |
|---|---|---|---|---|
| Error correction | Main | PC's setting | PC's setting, Automatic, 10 %, 20 %, 30 %, 50 % | PC's setting leaves the recovery data to the PC's own settings. Automatic asks the PC to follow the losses this device reports; 10, 20, 30 or 50 % fixes the share. Rubylight PCs and Sunshine-based PCs that accept it take the choice; other PCs use their own setting. |
| Lower bitrate when frames are lost | Main | Off | On, Off | Lowers the bitrate when frames are lost and raises it after clean seconds, on Rubylight PCs that take bitrate changes during a stream. Replaces Lower bitrate when the network is busy there. |
| Tell the PC when on Wi-Fi | Main | On | On, Off | A Rubylight PC paces the stream for Wi-Fi from the start. |
| Tell the PC the link speed | Main | On | On, Off | Lets the PC limit its sending rate to this device's wired port speed. |
| Prioritize stream traffic | Main | On | On, Off | Windows and Linux only. Gives stream traffic priority on this device: socket and thread priority on Linux, thread priority on Windows. |
| Instant mouse and pen input | Main | On | On, Off | Sends mouse and pen motion immediately instead of batching it. |
| Full color range | Main | Off | On, Off | Requests the full RGB range from the host. |
| PyroWave: PyroWave decoder | More | GPU on Windows and Linux, CPU on macOS | CPU, GPU | Only for PyroWave. GPU decodes with the PyroWave library on the graphics card and never falls back to the CPU; when it can't, PyroWave is not offered and the group says why. CPU decodes on the processor and finishes on the graphics card. |
| Decode PyroWave on a compute queue | More | Off | On, Off | Shown with the GPU decoder: it decodes on a separate compute queue where the GPU has one, so a decode can overlap the previous frame's drawing; on a GPU without one (the NUC's Iris Plus 655, for example) it changes nothing. Off: on the 780M laptop (Windows) an ABBA showed no clear gain, and the client it comes from removed it because it delayed presentation on Wayland. On Linux the change applies from the next start. Each stream's log says which queue PyroWave decodes on and why. See PyroWave decoding. |
| Decoder: Video decoding | More | Automatic | Automatic, Software | Hidden with PyroWave. Automatic uses hardware decoding: D3D11VA on Windows, VA-API, Vulkan video, V4L2 M2M or NVDEC on Linux, VideoToolbox on macOS. A fallback to software decoding is announced. |
| Slices for software decoding | More | Off | On, Off | Shown with Video decoding on Software. Software decoding asks the PC for min(4, cores) slices per frame, which its threads decode in parallel. Off: it measured worse. NIGHTJAR_DESKTOP_SLICES=1 or 0 overrides it. |
| Vulkan video first | More | Off | On, Off | Linux only. On the GPU renderer, tries Vulkan video before VA-API. Off: VA-API pictures are mapped into the renderer's Vulkan device without a copy too, and VA-API keeps reference frame invalidation. NIGHTJAR_VULKAN_VIDEO_GPU_FIRST=1 or 0 overrides it. Not used with PyroWave. |
| Vulkan video recovery | More | Off | On, Off | Linux only. Vulkan video decoding asks for reference frame invalidation, so a lost frame recovers without a key frame. NIGHTJAR_VULKAN_RFI=1 or 0 overrides it. Not used with PyroWave. |
| Local cursor | More | On | On, Off | In Desktop pointer mode, draws the PC's cursor shape locally, without video delay, on hosts that send cursor shapes. |
Beam racing and early decode for PyroWave have no row on the Settings page. Both are off by default and are set with the beam_race and early_decode keys in settings.json, or the NIGHTJAR_BEAM_RACE and NIGHTJAR_EARLY_DECODE environment variables; see beam racing and early decode.