diff --git a/CHANGELOG.md b/CHANGELOG.md index 24a2abe..4dcbf5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,14 @@ daemon ship together under one version. ### Added +- Cast a **new monitor** instead of mirroring one you already have. A toggle + above the device list switches between *Mirror screen* and *New monitor*; in + the second mode the desktop gains an extra display, sized to what the receiver + accepts, that exists only for as long as the cast. The television becomes a + real second screen you can drag windows onto rather than a copy of your laptop + panel, and it is no longer letterboxed to fit it. Needs a Wayland session - + GNOME on Xorg cannot create a monitor, so the toggle is hidden there. + *Choose what to cast* also lists GNOME's own Virtual Monitor option now. - Eleven more interface languages: Arabic, Bengali, Bulgarian, Chinese (Simplified), French, Hindi, Indonesian, Portuguese (Brazil), Russian, Spanish and Urdu. diff --git a/README.md b/README.md index cf88535..a3098f9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # GNOME Shell Cast -Cast your **whole screen or a single window** to a **Chromecast** device, or send your **system audio** to a Chromecast speaker, smart display, or cast group, right from the GNOME Shell top panel. +Cast your **whole screen or a single window** to a **Chromecast** device, add a **new monitor** and cast that instead, or send your **system audio** to a Chromecast speaker, smart display, or cast group, right from the GNOME Shell top panel. The project has two parts, shipped together in this repository: @@ -29,7 +29,7 @@ The two talk over the D-Bus session bus (`org.gnome.ShellCast1`). The daemon is Chromecast's Default Media Receiver plays media it pulls over HTTP. When you start a cast: -1. The daemon opens an XDG ScreenCast portal session - GNOME shows its native picker for a monitor or a window. +1. The daemon opens an XDG ScreenCast portal session - GNOME shows its native picker for a monitor or a window. In *New monitor* mode it asks the portal for a **virtual monitor** instead: GNOME creates an extra display for the cast and removes it again when the cast ends, so nothing on your own screens changes. Move windows onto it with `Super`+`Shift`+arrow; until you do, the television shows an empty desktop. This mode needs a Wayland session. 2. A GStreamer pipeline captures the PipeWire stream, encodes H.264 video and AAC system audio, and writes a live HLS stream into `$XDG_RUNTIME_DIR/gnome-shell-cast/`. 3. A tiny built-in HTTP server serves that stream on your LAN. 4. The daemon tells the Chromecast (CASTv2 protocol) to play the stream URL. diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md index 94b5ce4..03f2cc3 100644 --- a/TROUBLESHOOTING.md +++ b/TROUBLESHOOTING.md @@ -245,6 +245,38 @@ The receiver app exited or never started rendering. Check the log for [The cast falls back to HLS](#the-cast-falls-back-to-hls-or-the-receiver-never-answers) below. +### "New monitor" is missing from the menu + +That mode is only offered on a **Wayland** session, because GNOME on Xorg cannot +create a monitor. Check which one you are on: + +```sh +echo $XDG_SESSION_TYPE +``` + +If it says `x11`, log out and pick *GNOME* rather than *GNOME on Xorg* at the +login screen. Casting the screen normally works either way. + +### The new monitor shows only the wallpaper + +Nothing has been moved onto it yet - a new monitor starts empty, the same as +plugging in a second screen. Move the window you want with +`Super`+`Shift`+`Right`, or drag it past the edge of your own screen. *Settings → +Displays* shows where GNOME placed the new monitor relative to the others. + +### `The system could not create a new monitor for this cast.` + +GNOME accepted the request and then failed to make the monitor. Almost always an +Xorg session (see above); otherwise the compositor refused the size. The real +reason is in the shell's own log, not the daemon's: + +```sh +journalctl --user -b -u org.gnome.shell.service | grep -i 'virtual monitor' +``` + +`Backend doesn't support creating virtual monitors` confirms Xorg. Cast the +screen normally in the meantime. + --- ## Connection diff --git a/daemon/src/capture.rs b/daemon/src/capture.rs index d3391be..0d2ddb8 100644 --- a/daemon/src/capture.rs +++ b/daemon/src/capture.rs @@ -18,6 +18,10 @@ pub enum SourceKind { Window, /// Screen or window, picked in GNOME's "Display / Window" portal dialog. Choose, + /// A monitor that does not exist yet: mutter creates one for the cast and + /// destroys it when the portal session closes, so the receiver becomes a + /// second desktop rather than a copy of an existing one. + Virtual, /// System audio only (for audio-only receivers); no portal involved. Audio, } @@ -38,14 +42,27 @@ impl std::error::Error for Cancelled {} /// An open XDG `ScreenCast` portal session. The `PipeWire` stream stays alive /// for as long as this struct (and in particular `session`) is kept around; /// dropping it closes the portal session, which is what makes GNOME's "screen -/// is being shared" indicator disappear. +/// is being shared" indicator disappear - and, for a virtual monitor, what +/// removes the monitor again. pub struct Capture { pub fd: OwnedFd, pub node_id: u32, + /// The frame size to ask `pipewiresrc` for, set only for a virtual monitor. + /// `RecordVirtual` takes no size: mutter creates the monitor at whatever the + /// *consumer* negotiates, so requesting it is the only way to choose it. A + /// real monitor or window has its own size and this stays `None`. + pub source_size: Option<(i32, i32)>, session: Option>, } impl Capture { + /// A monitor mutter created for this cast, rather than something that was + /// already on screen. The distinction matters to the pipeline: the source + /// size is ours to pick, and must not be changed once the monitor exists. + pub fn is_virtual(&self) -> bool { + self.source_size.is_some() + } + /// Resolves when the *compositor* ends the session - GNOME's screen-sharing /// indicator has a stop button, and pressing it leaves the capture dead /// while `pipewiresrc resend-last=true` happily reships the last frame @@ -67,7 +84,8 @@ impl Capture { } /// Closes the portal session, waiting for the compositor. A cast started - /// right after would otherwise race this teardown and get a dead stream. + /// right after would otherwise race this teardown and get a dead stream - + /// or, for a virtual monitor, leave two of them on screen at once. pub async fn close(mut self) { let Some(session) = self.session.take() else { return; @@ -97,15 +115,33 @@ impl Drop for Capture { } }); } + // A virtual monitor outlives us here, until the portal notices our + // bus name go away. Nothing else can clean it up from this point. Err(_) => warn!("no tokio runtime available to close the portal session"), } } } -/// Asks the portal for a screen or window capture. GNOME shows its native -/// source picker dialog as part of this call - except for screen casts with a -/// saved restore token, which reuse the previous selection without a dialog. -pub async fn open(source: SourceKind) -> Result { +/// Asks the portal for a capture. GNOME shows its native source picker dialog as +/// part of this call - except for screen and virtual-monitor casts with a saved +/// restore token, which reuse the previous selection without a dialog. +/// +/// `requested_size` is honoured only for `SourceKind::Virtual`, where it becomes +/// the new monitor's resolution. +pub async fn open(source: SourceKind, requested_size: Option<(i32, i32)>) -> Result { + if source == SourceKind::Virtual { + // The portal accepts a Virtual request on X11 and mutter then fails much + // later, at PipeWire negotiation, with nothing reaching us but the + // session closing. Refuse up front so the user gets a reason instead of + // a cast that appears to start and vanishes. `AvailableSourceTypes` is + // no help: the GNOME portal reports Virtual unconditionally. + if std::env::var("XDG_SESSION_TYPE").as_deref() == Ok("x11") { + return Err(anyhow!( + "Casting a new monitor needs a Wayland session; this one is X11." + )); + } + } + let proxy = Screencast::new() .await .context("connecting to the ScreenCast portal")?; @@ -113,22 +149,25 @@ pub async fn open(source: SourceKind) -> Result { .create_session(CreateSessionOptions::default()) .await?; - // Persist the selection for screen casts only: re-picking the same - // monitor every time is pure friction, while window casts usually mean + // Persist the selection for the whole-desktop kinds only: re-picking the + // same monitor every time is pure friction, while window casts usually mean // a *different* window, so those should always show the picker. let (source_type, persist, restore_token) = match source { SourceKind::Screen => ( BitFlags::from(SourceType::Monitor), PersistMode::ExplicitlyRevoked, - load_restore_token(), + load_restore_token(source), ), SourceKind::Window => (BitFlags::from(SourceType::Window), PersistMode::DoNot, None), - // Never persisted: the whole point is to be asked again next time. - SourceKind::Choose => ( - SourceType::Monitor | SourceType::Window, - PersistMode::DoNot, - None, + // Only ever one option, which the portal pre-selects, so this is a + // single confirmation the first time and no dialog at all after that. + SourceKind::Virtual => ( + BitFlags::from(SourceType::Virtual), + PersistMode::ExplicitlyRevoked, + load_restore_token(source), ), + // Never persisted: the whole point is to be asked again next time. + SourceKind::Choose => (choose_source_types(), PersistMode::DoNot, None), SourceKind::Audio => return Err(anyhow!("audio-only casts do not use the portal")), }; proxy @@ -151,10 +190,10 @@ pub async fn open(source: SourceKind) -> Result { .response() .map_err(|e| map_cancel(&e))?; - if source == SourceKind::Screen + if matches!(source, SourceKind::Screen | SourceKind::Virtual) && let Some(token) = response.restore_token() { - save_restore_token(token); + save_restore_token(source, token); } let stream = response @@ -163,19 +202,46 @@ pub async fn open(source: SourceKind) -> Result { .ok_or_else(|| anyhow!("portal returned no streams"))?; let node_id = stream.pipe_wire_node_id(); + // Trust the response over the request. The fixed source caps a virtual + // monitor needs are unsatisfiable against a real monitor, whose size the + // portal offers as one fixed value, so guessing wrong here would fail the + // pipeline with "No supported formats found" rather than degrade. + let is_virtual = match stream.source_type() { + Some(kind) => kind == SourceType::Virtual, + None => source == SourceKind::Virtual, + }; + let source_size = if is_virtual { requested_size } else { None }; + let fd = proxy .open_pipe_wire_remote(&session, OpenPipeWireRemoteOptions::default()) .await .context("opening the PipeWire remote")?; - info!("portal capture ready, pipewire node {node_id}"); + // `stream.size()` is always absent for a virtual stream (mutter reports no + // parameters for one), so what we asked for is the only size worth logging. + match source_size { + Some((w, h)) => info!("portal capture ready, pipewire node {node_id}, virtual {w}x{h}"), + None => info!("portal capture ready, pipewire node {node_id}"), + } Ok(Capture { fd, node_id, + source_size, session: Some(session), }) } +/// What the "choose what to cast" dialog may offer. A virtual monitor is only +/// listed where mutter can actually make one. +fn choose_source_types() -> BitFlags { + let base = SourceType::Monitor | SourceType::Window; + if std::env::var("XDG_SESSION_TYPE").as_deref() == Ok("x11") { + base + } else { + base | SourceType::Virtual + } +} + /// Maps a portal error, turning a user cancellation into the `Cancelled` /// sentinel (so the session ends quietly) and anything else into a real error. fn map_cancel(error: &ashpd::Error) -> anyhow::Error { @@ -186,23 +252,30 @@ fn map_cancel(error: &ashpd::Error) -> anyhow::Error { } } -/// Where the screen-cast restore token lives. Delete this file to get the -/// monitor picker dialog back. -fn restore_token_path() -> Option { +/// Where a restore token lives, one file per source kind - a shared file would +/// restore a monitor when the user asked for a virtual one, and each save would +/// destroy the other kind's token. Delete a file to get its picker dialog back. +/// `None` for the kinds that deliberately ask every time. +fn restore_token_path(source: SourceKind) -> Option { + let name = match source { + SourceKind::Screen => "screen-restore-token", + SourceKind::Virtual => "virtual-restore-token", + SourceKind::Window | SourceKind::Choose | SourceKind::Audio => return None, + }; let base = std::env::var_os("XDG_STATE_HOME") .map(PathBuf::from) .or_else(|| std::env::var_os("HOME").map(|h| PathBuf::from(h).join(".local/state")))?; - Some(base.join("gnome-shell-cast").join("screen-restore-token")) + Some(base.join("gnome-shell-cast").join(name)) } -fn load_restore_token() -> Option { - let token = std::fs::read_to_string(restore_token_path()?).ok()?; +fn load_restore_token(source: SourceKind) -> Option { + let token = std::fs::read_to_string(restore_token_path(source)?).ok()?; let token = token.trim(); (!token.is_empty()).then(|| token.to_owned()) } -fn save_restore_token(token: &str) { - let Some(path) = restore_token_path() else { +fn save_restore_token(source: SourceKind, token: &str) { + let Some(path) = restore_token_path(source) else { return; }; let write = || -> std::io::Result<()> { @@ -215,3 +288,111 @@ fn save_restore_token(token: &str) { warn!("could not save portal restore token: {e}"); } } + +#[cfg(test)] +mod tests { + use super::*; + use std::os::fd::AsRawFd; + + /// The one thing about a virtual monitor that cannot be settled by reading + /// code: whether mutter creates the monitor at the size *we* negotiate, or + /// picks its own and leaves us to scale. `RecordVirtual` takes no size, and + /// `pipewiresrc` derives its `PipeWire` format from peer caps, so a fixed + /// caps filter on the source pad should decide it. + /// + /// Ignored because it needs a live Wayland session, a click in the portal + /// dialog, and it briefly adds a monitor to the desktop. Run it by hand: + /// + /// ```text + /// cargo test --manifest-path daemon/Cargo.toml \ + /// capture::tests::a_virtual_monitor_is_created_at_the_size_we_ask_for \ + /// -- --ignored --nocapture + /// ``` + #[tokio::test] + #[ignore = "needs a Wayland session and a click in the portal dialog"] + async fn a_virtual_monitor_is_created_at_the_size_we_ask_for() -> Result<()> { + use gstreamer as gst; + use gstreamer::prelude::*; + + const WANTED: (i32, i32) = (1920, 1080); + + gst::init()?; + let before = monitor_count().await?; + println!("monitors before: {before}"); + + let capture = open(SourceKind::Virtual, Some(WANTED)).await?; + let source = crate::pipeline::VideoSource::from(&capture); + let desc = format!( + "pipewiresrc fd={} path={} do-timestamp=true {}! videoconvert ! fakesink", + capture.fd.as_raw_fd(), + capture.node_id, + source.source_caps(), + ); + println!("probe pipeline: {desc}"); + let pipeline = gst::parse::launch(&desc)? + .downcast::() + .map_err(|_| anyhow!("parsed element is not a pipeline"))?; + pipeline.set_state(gst::State::Playing)?; + + // The monitor only appears once the format is negotiated, which happens + // on the first buffer rather than on the state change. + tokio::time::sleep(std::time::Duration::from_secs(3)).await; + + let sizes = monitor_sizes().await?; + let after = sizes.len(); + println!("monitors after: {after} {sizes:?}"); + let _ = pipeline.set_state(gst::State::Null); + capture.close().await; + + assert_eq!(after, before.saturating_add(1), "no monitor was created"); + assert!( + sizes.contains(&WANTED), + "monitor created, but not at {WANTED:?}: {sizes:?} - mutter chose its own size" + ); + Ok(()) + } + + async fn monitor_count() -> Result { + Ok(monitor_sizes().await?.len()) + } + + /// Every monitor's current mode size, from mutter's `DisplayConfig`. + async fn monitor_sizes() -> Result> { + use zbus::zvariant::OwnedValue; + + type HashMapSv = std::collections::HashMap; + type Connector = (String, String, String, String); + // (id, width, height, refresh, preferred scale, supported scales, props) + type Mode = (String, i32, i32, f64, f64, Vec, HashMapSv); + type Monitor = (Connector, Vec, HashMapSv); + // (x, y, scale, transform, primary, monitors, props) + type LogicalMonitor = (i32, i32, f64, u32, bool, Vec, HashMapSv); + + let connection = zbus::Connection::session().await?; + let reply = connection + .call_method( + Some("org.gnome.Mutter.DisplayConfig"), + "/org/gnome/Mutter/DisplayConfig", + Some("org.gnome.Mutter.DisplayConfig"), + "GetCurrentState", + &(), + ) + .await?; + let body = reply.body(); + let (_serial, monitors, _logical, _props): ( + u32, + Vec, + Vec, + HashMapSv, + ) = body.deserialize()?; + Ok(monitors + .iter() + .filter_map(|(_id, modes, _props)| { + modes + .iter() + .find(|(_, _, _, _, _, _, props)| props.contains_key("is-current")) + .map(|&(_, w, h, ..)| (w, h)) + }) + .collect()) + } +} diff --git a/daemon/src/main.rs b/daemon/src/main.rs index 4d67655..e884c80 100644 --- a/daemon/src/main.rs +++ b/daemon/src/main.rs @@ -209,10 +209,10 @@ impl ShellCast { self.state.last_event() } - /// Why hardware encoding is unavailable here, as a token (`driver`, - /// `plugin`, or empty when there is nothing to say) and the package that - /// would fix it. The extension turns the token into a translated sentence in - /// preferences; keeping the diagnosis here keeps it testable. + /// Why hardware encoding is unavailable here, and the package that would fix + /// it - see `encoder::hardware_encoding_gap` for the tokens. The extension + /// turns the token into a translated sentence in preferences; keeping the + /// diagnosis here keeps it testable. fn get_encoding_support(&self) -> (String, String) { self.state.touch(); let (gap, package) = encoder::hardware_encoding_gap(); @@ -241,6 +241,7 @@ impl ShellCast { 1 => capture::SourceKind::Window, 2 => capture::SourceKind::Audio, 3 => capture::SourceKind::Choose, + 4 => capture::SourceKind::Virtual, other => { return Err(zbus::fdo::Error::InvalidArgs(format!( "unknown source type: {other}" diff --git a/daemon/src/pipeline.rs b/daemon/src/pipeline.rs index 9a31197..89cca99 100644 --- a/daemon/src/pipeline.rs +++ b/daemon/src/pipeline.rs @@ -1,5 +1,5 @@ use std::collections::HashMap; -use std::os::fd::RawFd; +use std::os::fd::{AsRawFd, RawFd}; use std::path::Path; use anyhow::{Context, Result}; @@ -8,10 +8,56 @@ use gstreamer::prelude::*; use log::{info, warn}; use zbus::zvariant::OwnedValue; -use crate::streaming::encoder::{self, EncoderPolicy, EncodingPolicy, FormatPolicy}; +use crate::streaming::encoder::{ + self, Api, EncoderPolicy, EncodingPolicy, FormatPolicy, VideoCodec, +}; pub const PLAYLIST_NAME: &str = "stream.m3u8"; +/// The captured video a pipeline is built around. +#[derive(Debug, Clone, Copy)] +pub struct VideoSource { + pub fd: RawFd, + pub node_id: u32, + /// `Some` only for a virtual monitor. `PipeWire` negotiation is what fixes + /// such a monitor's resolution, and the negotiation takes it from the + /// *consumer*, so the size has to be named in caps on the source pad. + pub capture_size: Option<(i32, i32)>, +} + +impl From<&crate::capture::Capture> for VideoSource { + fn from(capture: &crate::capture::Capture) -> Self { + Self { + fd: capture.fd.as_raw_fd(), + node_id: capture.node_id, + capture_size: capture.source_size, + } + } +} + +impl VideoSource { + /// The launch fragment that pins the source size, empty unless this is a + /// virtual monitor. + /// + /// It must sit ahead of `videoscale`, which reports width and height back + /// upstream as open ranges and so hides the encoder-side caps from + /// `pipewiresrc` entirely. Width and height only: mutter offers + /// `framerate = 0/1` for a virtual stream, so naming a rate here makes every + /// format fail to intersect, and a filter that names fewer fields is the + /// permissive direction anyway. + pub fn source_caps(self) -> String { + self.capture_size + .map(|(w, h)| { + format!("! capsfilter name={SOURCE_FILTER} caps=video/x-raw,width={w},height={h} ") + }) + .unwrap_or_default() + } +} + +/// Names the source-pad caps filter so nothing else has to guess which +/// `video/x-raw` filter is which. +const SOURCE_FILTER: &str = "srccaps"; + #[derive(Debug, Clone, Default)] pub struct StreamSettings { /// Every field is a request: `None` means automatic, which defers to the @@ -100,51 +146,54 @@ pub fn set_encoder_bitrate(pipeline: &gst::Pipeline, bits_per_second: u32) { ), "svtav1enc" | "av1enc" => venc.set_property("target-bitrate", kbps), "x264enc" => venc.set_property("bitrate", kbps), - // A V4L2 encoder has no bitrate property; the control carries bit/s, - // and the existing fields are kept so the GOP size set at launch stays. - other if other.starts_with("v4l2") => { - let mut controls = venc - .property::>("extra-controls") - .unwrap_or_else(|| gst::Structure::new_empty("controls")); - controls.set( - "video_bitrate", - i32::try_from(bits_per_second).unwrap_or(i32::MAX), - ); - venc.set_property("extra-controls", controls); - } - other if other.starts_with("va") || other.starts_with("nv") => { - venc.set_property("bitrate", kbps); - } - _ => {} + other => match encoder::api_of(other) { + // A V4L2 encoder has no bitrate property; the control carries bit/s, + // and the existing fields are kept so the GOP size set at launch stays. + Some(Api::V4l2) => { + let mut controls = venc + .property::>("extra-controls") + .unwrap_or_else(|| gst::Structure::new_empty("controls")); + controls.set( + "video_bitrate", + i32::try_from(bits_per_second).unwrap_or(i32::MAX), + ); + venc.set_property("extra-controls", controls); + } + Some(Api::Va | Api::Nvenc) => venc.set_property("bitrate", kbps), + None => {} + }, } } -/// Retargets the running capture to `size`. The caps between videoscale and -/// the encoder come from the launch string, so the filter is unnamed; it is -/// found by factory and its existing fields are preserved. +/// Retargets the encoder's input size, for the mirroring path's resolution +/// ladder. The filter is found through `venc`, which the launch strings always +/// link it straight into, rather than by walking the bin: a virtual-monitor +/// pipeline has a second `video/x-raw` filter pinned to the source pad, and +/// retargeting *that* one would resize the monitor the user's windows are on. pub fn set_capture_size(pipeline: &gst::Pipeline, (width, height): (i32, i32)) { - let mut elements = pipeline.iterate_elements(); - while let Ok(Some(element)) = elements.next() { - let is_capsfilter = element - .factory() - .is_some_and(|factory| factory.name() == "capsfilter"); - if !is_capsfilter { - continue; - } - let caps = element.property::>("caps"); - let Some(caps) = caps else { continue }; - let Some(structure) = caps.structure(0) else { - continue; - }; - if structure.name() != "video/x-raw" { - continue; - } - let mut updated = structure.to_owned(); - updated.set("width", width); - updated.set("height", height); - element.set_property("caps", gst::Caps::builder_full().structure(updated).build()); + let Some(filter) = encoder_input_capsfilter(pipeline) else { return; - } + }; + let Some(caps) = filter.property::>("caps") else { + return; + }; + let Some(structure) = caps.structure(0) else { + return; + }; + let mut updated = structure.to_owned(); + updated.set("width", width); + updated.set("height", height); + filter.set_property("caps", gst::Caps::builder_full().structure(updated).build()); +} + +/// The caps filter feeding the encoder: the peer of `venc`'s sink pad. +fn encoder_input_capsfilter(pipeline: &gst::Pipeline) -> Option { + let element = pipeline + .by_name("venc")? + .static_pad("sink")? + .peer()? + .parent_element()?; + (element.factory()?.name() == "capsfilter").then_some(element) } /// AAC encoders in order of preference; which ones exist depends on the @@ -159,37 +208,33 @@ pub fn find_aac_encoder() -> Option<&'static str> { .find(|name| gst::ElementFactory::find(name).is_some()) } -/// H.264 encoders for the HLS path, hardware first (VA-API, then NVENC), then -/// software `x264enc`. Each candidate is parse-checked, so a hardware encoder -/// that is present but mis-parametrised falls back to the next one. `None` when -/// the user's encoder or pixel-format choice rules every one of them out. -const H264_ENCODERS: &[&str] = &[ - "vah264enc", - "vah264lpenc", - "nvh264enc", - "v4l2h264enc", - "x264enc", -]; - +/// The H.264 encoder for the HLS path. The candidates and their order are the +/// mirroring path's (`encoder::factories`); only the launch parameters differ, +/// because HLS wants one keyframe per segment. `None` when the user's encoder or +/// pixel-format choice rules every one of them out. fn find_h264_encoder(bitrate_kbps: i32, key_int: i32, policy: EncodingPolicy) -> Option { let software = format!( "x264enc name=venc tune=zerolatency speed-preset=veryfast bitrate={bitrate_kbps} key-int-max={key_int} bframes=0" ); - for &f in H264_ENCODERS { + for &f in encoder::factories(VideoCodec::H264) { if !encoder::allowed(f, policy) { continue; } let fragment = match f { "x264enc" => software.clone(), - _ if f.starts_with("nv") => { + _ if encoder::api_of(f) == Some(Api::Nvenc) => { format!( "{f} name=venc bitrate={bitrate_kbps} rc-mode=cbr gop-size={key_int} bframes=0" ) } - // V4L2 takes bit/s through controls rather than properties. - _ if f.starts_with("v4l2") => format!( - "{f} name=venc extra-controls=\"controls,video_bitrate={},video_gop_size={key_int}\"", - i64::from(bitrate_kbps).saturating_mul(1000) + _ if encoder::api_of(f) == Some(Api::V4l2) => format!( + "{f} name=venc {}", + encoder::v4l2_controls( + u32::try_from(bitrate_kbps) + .unwrap_or(0) + .saturating_mul(1000), + u32::try_from(key_int).unwrap_or(1), + ) ), _ => format!( "{f} name=venc bitrate={bitrate_kbps} rate-control=cbr key-int-max={key_int}" @@ -205,12 +250,12 @@ fn find_h264_encoder(bitrate_kbps: i32, key_int: i32, policy: EncodingPolicy) -> } /// Builds the gst-launch description writing a live HLS stream into -/// `hls_dir`: H.264 from the captured `PipeWire` node when `video` carries -/// the (fd, node id) pair, plus AAC system audio when `audio` names the pulse -/// monitor device and the AAC encoder element. Audio-only casts pass -/// `video: None` and produce audio-only TS segments. +/// `hls_dir`: H.264 from the captured `PipeWire` node named by `video`, plus AAC +/// system audio when `audio` names the pulse monitor device and the AAC encoder +/// element. Audio-only casts pass `video: None` and produce audio-only TS +/// segments. pub fn launch_description( - video: Option<(RawFd, u32)>, + video: Option, settings: &StreamSettings, hls_dir: &Path, audio: Option<(&str, &str)>, @@ -227,7 +272,9 @@ pub fn launch_description( let target_duration = 1; let mut desc = String::new(); - if let Some((fd, node_id)) = video { + if let Some(source) = video { + let (fd, node_id) = (source.fd, source.node_id); + let source_caps = source.source_caps(); let size_caps = settings .size .map(|(w, h)| format!(",width={w},height={h},pixel-aspect-ratio=1/1")) @@ -243,6 +290,7 @@ pub fn launch_description( let _ = write!( desc, "pipewiresrc fd={fd} path={node_id} do-timestamp=true keepalive-time=1000 resend-last=true \ + {source_caps}\ ! queue leaky=downstream max-size-buffers=3 max-size-bytes=0 max-size-time=0 \ ! videoconvert ! videoscale ! videorate \ ! video/x-raw,format={format},framerate={fps}/1{size_caps} \ @@ -306,7 +354,7 @@ pub fn build_audio_stream(monitor: &str) -> Result<(gst::Pipeline, &'static str) } pub fn build( - video: Option<(RawFd, u32)>, + video: Option, settings: &StreamSettings, hls_dir: &Path, audio_monitor: Option<&str>, @@ -468,7 +516,11 @@ mod tests { ..Default::default() }; let desc = launch_description( - Some((3, 42)), + Some(VideoSource { + fd: 3, + node_id: 42, + capture_size: None, + }), &settings, &PathBuf::from("/run/x"), None, @@ -492,7 +544,11 @@ mod tests { ..Default::default() }; let desc = launch_description( - Some((3, 42)), + Some(VideoSource { + fd: 3, + node_id: 42, + capture_size: None, + }), &settings, &PathBuf::from("/run/x"), None, @@ -505,7 +561,11 @@ mod tests { #[test] fn description_includes_audio_branch() { let desc = launch_description( - Some((3, 42)), + Some(VideoSource { + fd: 3, + node_id: 42, + capture_size: None, + }), &StreamSettings::default(), &PathBuf::from("/run/x"), Some(("alsa_output.pci.monitor", "fdkaacenc")), @@ -533,4 +593,88 @@ mod tests { assert!(desc.contains("pulsesrc device=alsa_output.pci.monitor")); assert!(desc.contains("hls.audio")); } + + #[test] + /// The pinned size has to reach `pipewiresrc`, which means ahead of + /// videoscale, and must name nothing but width and height. + fn a_virtual_capture_pins_the_source_size() { + let desc = launch_description( + Some(VideoSource { + fd: 3, + node_id: 42, + capture_size: Some((1920, 1080)), + }), + &StreamSettings::default(), + &PathBuf::from("/run/x"), + None, + "x264enc bitrate=4000", + ); + assert!( + desc.contains("capsfilter name=srccaps caps=video/x-raw,width=1920,height=1080"), + "{desc}" + ); + let pin = desc.find("srccaps").unwrap_or(usize::MAX); + assert!(pin < desc.find("videoscale").unwrap_or(0), "{desc}"); + // A framerate here would never intersect what mutter offers for a + // virtual stream, and a pixel-aspect-ratio is not ours to demand. + let fragment = desc + .get(pin..desc.find("! queue").unwrap_or(pin)) + .unwrap_or_default(); + assert!(!fragment.contains("framerate"), "{fragment}"); + assert!(!fragment.contains("pixel-aspect-ratio"), "{fragment}"); + } + + #[test] + /// A real monitor or window sizes itself, so nothing is pinned and the + /// description stays exactly what it was before virtual monitors existed. + fn a_monitor_capture_has_no_source_capsfilter() { + let desc = launch_description( + Some(VideoSource { + fd: 3, + node_id: 42, + capture_size: None, + }), + &StreamSettings::default(), + &PathBuf::from("/run/x"), + None, + "x264enc bitrate=4000", + ); + assert!(!desc.contains("srccaps"), "{desc}"); + assert!(desc.contains("resend-last=true ! queue"), "{desc}"); + } + + #[test] + /// The resolution ladder must retarget the encoder's filter, never the one + /// pinning a virtual monitor's size. + fn set_capture_size_leaves_the_source_filter_alone() { + gst::init().unwrap_or_default(); + let Ok(element) = gst::parse::launch( + "videotestsrc ! capsfilter name=srccaps caps=video/x-raw,width=1920,height=1080 \ + ! videoscale ! capsfilter caps=video/x-raw,width=1920,height=1080 \ + ! identity name=venc ! fakesink", + ) else { + return; // videotestsrc/videoscale absent; nothing to assert against + }; + let Ok(pipeline) = element.downcast::() else { + return; + }; + set_capture_size(&pipeline, (1280, 720)); + + let size_of = |name: &str| -> Option<(i32, i32)> { + let caps = pipeline + .by_name(name)? + .property::>("caps")?; + let s = caps.structure(0)?; + Some((s.get("width").ok()?, s.get("height").ok()?)) + }; + assert_eq!(size_of("srccaps"), Some((1920, 1080))); + assert_eq!( + encoder_input_capsfilter(&pipeline) + .and_then(|f| f.property::>("caps")) + .and_then(|c| c + .structure(0) + .map(|s| (s.get("width").ok(), s.get("height").ok()))), + Some((Some(1280), Some(720))) + ); + } } diff --git a/daemon/src/session.rs b/daemon/src/session.rs index 139c687..ab85d2e 100644 --- a/daemon/src/session.rs +++ b/daemon/src/session.rs @@ -1,4 +1,3 @@ -use std::os::fd::AsRawFd; use std::path::PathBuf; use std::sync::Arc; use std::sync::atomic::Ordering; @@ -102,8 +101,14 @@ async fn cast_session( } None } + // The size matters only here: mutter creates the monitor at whatever + // the pipeline negotiates, and this is the value the HLS fallback uses. + // The mirroring path narrows it to what the receiver accepted. + SourceKind::Virtual => { + Some(capture::open(source, Some(settings.resolve_local().size)).await?) + } SourceKind::Screen | SourceKind::Window | SourceKind::Choose => { - Some(capture::open(source).await?) + Some(capture::open(source, None).await?) } }; @@ -152,7 +157,7 @@ async fn cast_with_capture( warn!("no audio monitor found, casting video only"); } let pipeline = pipeline::build( - capture.map(|c| (c.fd.as_raw_fd(), c.node_id)), + capture.map(pipeline::VideoSource::from), &settings, &hls_dir, audio_monitor.as_deref(), @@ -163,7 +168,7 @@ async fn cast_with_capture( let _pipeline_stop = PipelineStop(pipeline.clone()); let server = http::serve(&hls_dir)?; - wait_for_playlist(&hls_dir).await?; + wait_for_playlist(&hls_dir, capture).await?; let local_ip = http::local_ip_towards(device.addr)?; let url = format!( @@ -394,7 +399,10 @@ fn runtime_dir() -> PathBuf { base.join(format!("gnome-shell-cast-{}", std::process::id())) } -async fn wait_for_playlist(dir: &std::path::Path) -> Result<()> { +async fn wait_for_playlist( + dir: &std::path::Path, + capture: Option<&capture::Capture>, +) -> Result<()> { let playlist = dir.join(PLAYLIST_NAME); for _ in 0..60 { if let Ok(content) = tokio::fs::read_to_string(&playlist).await { @@ -405,6 +413,13 @@ async fn wait_for_playlist(dir: &std::path::Path) -> Result<()> { } tokio::time::sleep(Duration::from_millis(250)).await; } + // No frames at all from a virtual capture means the compositor never + // created the monitor, which is a cause the user can act on. + if capture.is_some_and(capture::Capture::is_virtual) { + return Err(anyhow!( + "The system could not create a new monitor for this cast." + )); + } Err(anyhow!( "encoder produced no playable HLS playlist within 15s" )) diff --git a/daemon/src/streaming/encoder.rs b/daemon/src/streaming/encoder.rs index 54d8320..c8a5b42 100644 --- a/daemon/src/streaming/encoder.rs +++ b/daemon/src/streaming/encoder.rs @@ -6,9 +6,9 @@ //! owns both: which codecs we can encode locally, and the encoder for each, //! **preferring hardware** (VA-API/NVENC) over software. //! -//! Every candidate fragment is parse-checked before use, so a hardware encoder -//! that is present but mis-parametrised falls back to the next candidate (and -//! ultimately software) rather than failing the cast. +//! Every candidate is checked before use - hardware ones by opening the device - +//! so an encoder that is present but unusable falls back to the next candidate +//! (and ultimately software) rather than failing the cast. use gstreamer as gst; use gstreamer::prelude::*; @@ -132,7 +132,7 @@ fn efficiency_rank(codec: VideoCodec) -> u8 { /// `GStreamer` encoder factories to try for `codec`, best first: hardware /// (VA-API, then NVENC) ahead of software. -fn factories(codec: VideoCodec) -> &'static [&'static str] { +pub fn factories(codec: VideoCodec) -> &'static [&'static str] { match codec { // The v4l2* elements exist only when a kernel device advertises that // codec, which is how Arm boards (Raspberry Pi, Rockchip, Amlogic) @@ -166,23 +166,17 @@ fn factories(codec: VideoCodec) -> &'static [&'static str] { /// one reaches different silicon: VA-API for Intel and AMD, NVENC for NVIDIA, /// V4L2 for the stateful encoders on Arm boards. #[derive(Clone, Copy, PartialEq, Eq, Debug)] -enum Api { +pub enum Api { Va, Nvenc, V4l2, } -fn api_of(factory: &str) -> Option { - // v4l2 first: it is the only prefix that could be read as another's. - if factory.starts_with("v4l2") { - Some(Api::V4l2) - } else if factory.starts_with("va") { - Some(Api::Va) - } else if factory.starts_with("nv") { - Some(Api::Nvenc) - } else { - None - } +pub fn api_of(factory: &str) -> Option { + [("va", Api::Va), ("nv", Api::Nvenc), ("v4l2", Api::V4l2)] + .into_iter() + .find(|(prefix, _)| factory.starts_with(prefix)) + .map(|(_, api)| api) } /// VA-API / NVENC / V4L2 elements are hardware; everything else is software. @@ -256,63 +250,58 @@ fn launch_for(factory: &str, bitrate_bps: u32, fps: u32) -> String { "x264enc name=venc tune=zerolatency speed-preset=veryfast bitrate={kbps} \ key-int-max={key_int} bframes=0" ), - // VA-API (GStreamer 'va' plugin): bitrate in kbit/s, CBR rate control. - f if f.starts_with("va") => { - format!("{factory} name=venc bitrate={kbps} rate-control=cbr") - } - // NVENC (GStreamer 'nvcodec' plugin). - f if f.starts_with("nv") => { - format!("{factory} name=venc bitrate={kbps} rc-mode=cbr") - } - // V4L2 stateful encoders take no bitrate property: everything goes - // through V4L2 controls, in bit/s. The structure name is arbitrary, and - // controls a device does not implement are ignored rather than fatal. - f if f.starts_with("v4l2") => format!( - "{factory} name=venc extra-controls=\"controls,video_bitrate={bitrate_bps},video_gop_size={key_int}\"" - ), - other => format!("{other} name=venc"), + other => match api_of(other) { + // VA-API (GStreamer 'va' plugin): bitrate in kbit/s, CBR rate control. + Some(Api::Va) => format!("{factory} name=venc bitrate={kbps} rate-control=cbr"), + // NVENC (GStreamer 'nvcodec' plugin). + Some(Api::Nvenc) => format!("{factory} name=venc bitrate={kbps} rc-mode=cbr"), + Some(Api::V4l2) => { + format!( + "{factory} name=venc {}", + v4l2_controls(bitrate_bps, key_int) + ) + } + None => format!("{other} name=venc"), + }, } } -/// A parse-only check that `fragment` names a real element with valid -/// properties/enum values, without disturbing the real pipeline. -fn fragment_parses(fragment: &str) -> bool { - gst::parse::launch(fragment).is_ok() +/// The `extra-controls` property for a V4L2 stateful encoder, which takes no +/// bitrate property: everything goes through V4L2 controls, in bit/s rather than +/// the kbit/s every other API uses. The structure name is arbitrary, and controls +/// a device does not implement are ignored rather than fatal. +pub fn v4l2_controls(bitrate_bps: u32, key_int: u32) -> String { + format!("extra-controls=\"controls,video_bitrate={bitrate_bps},video_gop_size={key_int}\"") } -/// Whether the element in `fragment` can also *open* its device, not merely be -/// created. A hardware encoder is registered from what the plugin believed about -/// the driver when the registry was built, which is regularly a lie: a discrete -/// GPU asleep under runtime power management, a `GStreamer` registry cached from -/// before the driver was installed, a VA-API driver advertising a profile it -/// cannot open, a V4L2 node another process holds. `READY` is where -/// `GstVideoEncoder` opens the device, so it is the cheapest question that gets -/// a truthful answer, and it is asked before the encoder is ever put in a -/// pipeline - a mirroring session has no way back to software once it starts. -fn element_opens(fragment: &str) -> bool { +/// Whether `fragment` is usable here. Software only has to parse - it cannot +/// fail any other way, and the probe is not free. +/// +/// Hardware has to *open its device*, because a hardware encoder is registered +/// from what the plugin believed about the driver when the registry was built, +/// which is regularly a lie: a discrete GPU asleep under runtime power +/// management, a registry cached from before the driver was installed, a VA-API +/// driver advertising a profile it cannot open, a V4L2 node another process +/// holds. `READY` is where `GstVideoEncoder` opens the device, so it is the +/// cheapest question that gets a truthful answer, and it is asked before the +/// encoder is ever put in a pipeline - a mirroring session has no way back to +/// software once it starts. +pub fn fragment_usable(factory: &str, fragment: &str) -> bool { let Ok(element) = gst::parse::launch(fragment) else { return false; }; + if !is_hardware(factory) { + return true; + } let opened = element.set_state(gst::State::Ready).is_ok(); // Back to NULL either way, so the probe never holds the device. let _ = element.set_state(gst::State::Null); opened } -/// Whether `factory`'s `fragment` is usable here. Hardware candidates have to -/// open their device; software ones only have to parse, since they cannot fail -/// that way and the probe is not free. -pub fn fragment_usable(factory: &str, fragment: &str) -> bool { - if is_hardware(factory) { - element_opens(fragment) - } else { - fragment_parses(fragment) - } -} - /// The encoder fragment for `codec` and whether it is hardware, or `None` when /// no encoder for it is installed **and** permitted by `policy`. Returns the -/// first candidate that actually parses. +/// first candidate that is actually usable. pub fn video_encoder( codec: VideoCodec, bitrate_bps: u32, @@ -328,8 +317,8 @@ pub fn video_encoder( }) } -/// Whether any VA-API or NVENC encoder element is installed. A registry lookup -/// rather than the parse-check `video_encoder` uses: instantiating a VA element +/// Whether any hardware encoder element is installed. A registry lookup rather +/// than the usability probe `video_encoder` uses: instantiating a VA element /// initialises the libva driver, which costs hundreds of milliseconds, and this /// only answers a hint in preferences. fn hardware_encoder_available() -> bool { @@ -357,17 +346,10 @@ enum Gpu { Neither, } -/// Classifies a DRM driver name into the encoder API it leads to. -/// -/// `Neither` is the honest answer for a lot of real hardware, and it produces no -/// advice at all: a system on chip (`v3d`/`vc4` on a Raspberry Pi, -/// `panfrost`/`panthor` on -/// Mali, `msm`, `rockchip`, `sun4i`, `mediatek`, `meson`) encodes through V4L2, -/// which this daemon does not drive yet; a VM (`virtio_gpu`, `vmwgfx`, `qxl`, -/// `vkms`, `simpledrm`) has no encoder to reach; a server display chip (`ast`, -/// `mgag200`) never had one; and Apple Silicon under `asahi` has no open encoder -/// driver. Telling any of those users to install a VA-API driver would send them -/// after something that does not exist for their machine. +/// Classifies a DRM driver name into the encoder API it leads to. `Neither` +/// covers everything we cannot send the user shopping for - a system on chip, a +/// VM, a server display chip - and produces no advice at all. The test lists the +/// drivers each class is meant to catch. fn gpu_class(driver: &str) -> Gpu { match driver { // Intel: i915 through Alder Lake and friends, xe from Lunar Lake on. @@ -384,36 +366,26 @@ fn gpu_class(driver: &str) -> Gpu { /// The DRM driver behind each render node, e.g. `["nvidia", "i915"]` on a hybrid /// laptop. Read from sysfs rather than probed, so it costs nothing and answers /// the same with a discrete GPU powered down. -fn render_node_drivers() -> Vec { - let Ok(entries) = std::fs::read_dir("/sys/class/drm") else { - return Vec::new(); - }; - entries +fn render_node_drivers() -> impl Iterator { + std::fs::read_dir("/sys/class/drm") + .into_iter() + .flatten() .flatten() .filter(|entry| entry.file_name().to_string_lossy().starts_with("renderD")) .filter_map(|entry| node_driver(&entry.path())) - .collect() } -/// The driver for one `/sys/class/drm/renderD*`: the `DRIVER=` line of its -/// device uevent, or the name its `driver` symlink points at when the uevent -/// carries no such line. +/// The driver for one `/sys/class/drm/renderD*`, from the `DRIVER=` line of its +/// device uevent - which the kernel emits for every device bound to a driver, +/// and a render node cannot exist unbound. fn node_driver(node: &std::path::Path) -> Option { - let uevent = std::fs::read_to_string(node.join("device/uevent")).unwrap_or_default(); - let named = uevent + let uevent = std::fs::read_to_string(node.join("device/uevent")).ok()?; + uevent .lines() .find_map(|line| line.strip_prefix("DRIVER=")) .map(str::trim) - .filter(|name| !name.is_empty()); - if let Some(name) = named { - return Some(name.to_owned()); - } - std::fs::read_link(node.join("device/driver")) - .ok() - .and_then(|path| { - path.file_name() - .map(|name| name.to_string_lossy().into_owned()) - }) + .filter(|name| !name.is_empty()) + .map(str::to_owned) } /// The `ID` and `ID_LIKE` values from an os-release file, in that order. @@ -480,8 +452,7 @@ fn hardware_gap(hardware: bool, gpus: &[Gpu], plugin: bool) -> &'static str { /// fix it when we know its name. pub fn hardware_encoding_gap() -> (&'static str, &'static str) { let gpus: Vec = render_node_drivers() - .iter() - .map(|driver| gpu_class(driver)) + .map(|driver| gpu_class(&driver)) .collect(); let gap = hardware_gap(hardware_encoder_available(), &gpus, va_plugin_registered()); // Only the missing-plugin advice names a package, so only it reads os-release. @@ -497,38 +468,28 @@ pub fn hardware_encoding_gap() -> (&'static str, &'static str) { /// through `user_message()`, so it names the setting to change rather than the /// `GStreamer` element that was missing. pub fn policy_failure_message(policy: EncodingPolicy) -> String { - match (policy.encoder, policy.format) { - (EncoderPolicy::Auto, FormatPolicy::Auto) => { - "No video encoder is installed. Install the GStreamer encoder plugins for your system." - .to_owned() - } - (EncoderPolicy::Hardware, _) => { - "No hardware video encoder can be used for this device. Set the video encoder \ - preference back to automatic." - .to_owned() - } - (EncoderPolicy::Software, _) => { - "No software video encoder can be used for this device. Set the video encoder \ + // The forced choice is named as the user chose it: "hardware" is not what + // someone who picked NVENC asked for. + let forced = match policy.encoder { + EncoderPolicy::Auto => "", + EncoderPolicy::Hardware => "hardware ", + EncoderPolicy::Software => "software ", + EncoderPolicy::VaApi => "VA-API ", + EncoderPolicy::Nvenc => "NVENC ", + EncoderPolicy::V4l2 => "V4L2 ", + }; + if !forced.is_empty() { + return format!( + "No {forced}video encoder can be used for this device. Set the video encoder \ preference back to automatic." + ); + } + match policy.format { + FormatPolicy::Auto => { + "No video encoder is installed. Install the GStreamer encoder plugins for your system." .to_owned() } - // Named per API, because "hardware" is not what the user chose here. - (EncoderPolicy::VaApi, _) => { - "No VA-API encoder can be used for this device. Set the video encoder preference \ - back to automatic." - .to_owned() - } - (EncoderPolicy::Nvenc, _) => { - "No NVENC encoder can be used for this device. Set the video encoder preference \ - back to automatic." - .to_owned() - } - (EncoderPolicy::V4l2, _) => { - "No V4L2 encoder can be used for this device. Set the video encoder preference \ - back to automatic." - .to_owned() - } - (EncoderPolicy::Auto, _) => { + FormatPolicy::Nv12 | FormatPolicy::I420 => { "No video encoder accepts the selected pixel format. Set the pixel format \ preference back to automatic." .to_owned() @@ -671,7 +632,9 @@ mod tests { .into_iter() .any(|f| gst::ElementFactory::find(f).is_some()); let picked = video_encoder(VideoCodec::Vp9, 4_000_000, 30, hardware); - assert_eq!(installed, picked.is_some()); + // Only one direction holds: a registered element that cannot open its + // device is correctly not picked, which is what the probe is for. + assert!(picked.is_none() || installed); if let Some((fragment, is_hw)) = picked { assert!(is_hw); assert!(fragment.starts_with("vavp9"), "{fragment}"); @@ -734,7 +697,8 @@ mod tests { ); // Where a VA-API encoder is installed, opening it is what proves it. if gst::ElementFactory::find("vah264enc").is_some() { - assert!(element_opens(&launch_for("vah264enc", 4_000_000, 30))); + let fragment = launch_for("vah264enc", 4_000_000, 30); + assert!(fragment_usable("vah264enc", &fragment)); } } diff --git a/daemon/src/streaming/mod.rs b/daemon/src/streaming/mod.rs index b4dca01..03fa5d7 100644 --- a/daemon/src/streaming/mod.rs +++ b/daemon/src/streaming/mod.rs @@ -269,7 +269,7 @@ fn start_media( configs, chunks_rx, keyframe_forcer(&pipeline), - rate_control(&pipeline, settings, resolved), + rate_control(&pipeline, capture, settings, resolved), ); Ok((pipeline, sender)) } @@ -278,6 +278,7 @@ fn start_media( /// bitrate is left alone; only automatic follows the link. fn rate_control( pipeline: &gst::Pipeline, + capture: Option<&Capture>, settings: &StreamSettings, resolved: &quality::Resolved, ) -> RateControl { @@ -285,8 +286,12 @@ fn rate_control( .unwrap_or(0) .saturating_mul(1000); let adaptive = settings.bitrate_kbps.is_none(); - // A pinned resolution is honoured; only automatic climbs the ladder. - let adaptive_size = settings.size.is_none(); + // A pinned resolution is honoured; only automatic climbs the ladder. A + // virtual monitor never climbs it either: retargeting the encoder caps + // pushes a reconfigure event upstream, which makes `pipewiresrc` drop and + // remake the `PipeWire` stream, and that is a visible glitch on a monitor + // the user has windows on. Bitrate adaptation is unaffected. + let adaptive_size = settings.size.is_none() && !capture.is_some_and(Capture::is_virtual); let weak = pipeline.downgrade(); let weak_size = pipeline.downgrade(); RateControl { @@ -497,6 +502,9 @@ async fn run_until_stopped( return Ok(()); } () = &mut capture_closed => { + if virtual_monitor_never_came_up(capture, pipeline) { + bail!("The system could not create a new monitor for this cast."); + } info!("screen sharing was stopped from the system menu"); return Ok(()); } @@ -525,6 +533,19 @@ async fn run_until_stopped( } } +/// A virtual-monitor cast whose portal session closed before a single frame +/// arrived did not lose it to the user's stop button: the compositor failed to +/// create the monitor (an X11 or headless backend cannot, and a size can be +/// refused). Mutter installs its paint watch only once the monitor exists, so +/// "no frame ever reached the encoder" is exactly that failure's signature. +fn virtual_monitor_never_came_up(capture: Option<&Capture>, pipeline: &gst::Pipeline) -> bool { + capture.is_some_and(Capture::is_virtual) + && pipeline.by_name("vsink").is_some_and(|sink| { + sink.property::>("last-sample") + .is_none() + }) +} + /// Pends forever for an audio-only cast, which has no portal session to lose. async fn capture_closed(capture: Option<&Capture>) { match capture { @@ -566,9 +587,19 @@ fn build_pipeline( let format = settings.encoding.format.caps_format(); let fd = capture.fd.as_raw_fd(); let node = capture.node_id; + // A virtual monitor is created at the size negotiated here, so give it + // the size the receiver actually displays: the desktop then maps one + // pixel to one pixel and videoscale becomes a passthrough. Empty for a + // real monitor or window, whose size is not ours to choose. + let mut source = pipeline::VideoSource::from(capture); + if source.capture_size.is_some() { + source.capture_size = Some(quality::virtual_monitor_size(resolved.size)); + } + let source_caps = source.source_caps(); let _ = write!( desc, "pipewiresrc fd={fd} path={node} do-timestamp=true keepalive-time=1000 resend-last=true \ + {source_caps}\ ! queue leaky=downstream max-size-buffers=3 max-size-bytes=0 max-size-time=0 \ ! videoconvert ! videoscale ! videorate \ ! video/x-raw,format={format},framerate={fps}/1,width={width},height={height},pixel-aspect-ratio=1/1 \ diff --git a/daemon/src/streaming/quality.rs b/daemon/src/streaming/quality.rs index 184674c..0322290 100644 --- a/daemon/src/streaming/quality.rs +++ b/daemon/src/streaming/quality.rs @@ -307,6 +307,21 @@ pub fn resolve( } } +/// The size to create a virtual monitor at: the negotiated stream size, so the +/// desktop maps one pixel to one pixel onto the receiver's picture and +/// `videoscale` has nothing to do, but never below 720p. A receiver that only +/// accepts a small frame must not get to shrink the user's desktop to match; +/// anything larger than the stream is scaled down as usual. +pub fn virtual_monitor_size(size: (i32, i32)) -> (i32, i32) { + const FLOOR: (i32, i32) = (1280, 720); + let area = |(w, h): (i32, i32)| i64::from(w).saturating_mul(i64::from(h)); + if area(size) < area(FLOOR) { + FLOOR + } else { + size + } +} + #[cfg(test)] mod tests { use super::*; @@ -423,4 +438,14 @@ mod tests { assert_eq!(as_i32(&json!(24)), Some(24)); assert_eq!(as_i32(&json!("nonsense")), None); } + + #[test] + /// A small receiver frame is streamed, but it must not become the size of + /// the user's new desktop. + fn a_virtual_monitor_never_goes_below_720p() { + assert_eq!(virtual_monitor_size((1920, 1080)), (1920, 1080)); + assert_eq!(virtual_monitor_size((2560, 1440)), (2560, 1440)); + assert_eq!(virtual_monitor_size((640, 360)), (1280, 720)); + assert_eq!(virtual_monitor_size((1280, 720)), (1280, 720)); + } } diff --git a/extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js b/extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js index 408efcc..e115d2b 100644 --- a/extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js +++ b/extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js @@ -10,7 +10,13 @@ import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js'; import { Slider } from 'resource:///org/gnome/shell/ui/slider.js'; import { gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js'; -import { CastDaemon, SOURCE_AUDIO, SOURCE_CHOOSE, SOURCE_SCREEN } from './daemon.js'; +import { + CastDaemon, + SOURCE_AUDIO, + SOURCE_CHOOSE, + SOURCE_SCREEN, + SOURCE_VIRTUAL, +} from './daemon.js'; import { CastVolumeControl } from './volumeControl.js'; import { DaemonSetup } from './daemonSetup.js'; import { ErrorDialog } from './errorDialog.js'; @@ -22,6 +28,9 @@ const RESOLUTIONS = { 720: [1280, 720], }; +const MODE_MIRROR = 'mirror'; +const MODE_VIRTUAL = 'virtual-monitor'; + const CODEC_LABELS = { h264: 'H.264', vp8: 'VP8', @@ -59,6 +68,21 @@ function createRowButton(iconName, label, onClick) { return button; } +// Mutter creates a virtual monitor only on Wayland. This reads the same signal +// the daemon gates on, so the toggle is hidden exactly when the daemon would +// refuse. Guarded and defaulting to "offer it": an exception here would abort +// enable() and cost the user the whole extension, and a wrongly offered mode +// only ever costs one readable error message. +// +// Not Meta.is_wayland_compositor() - that was removed in GNOME Shell 50. +function isWaylandSession() { + try { + return GLib.getenv('XDG_SESSION_TYPE') !== 'x11'; + } catch { + return true; + } +} + function toggleStyleClass(element, className, enabled = true) { if (enabled) element.add_style_class_name(className); else element.remove_style_class_name(className); @@ -137,6 +161,8 @@ export class CastMenu { this._settings.connectObject( 'changed::show-details', () => this._onShowDetailsChanged(), + 'changed::cast-mode', + () => this._onCastModeChanged(), this, ); @@ -214,6 +240,9 @@ export class CastMenu { this._daemonWarningItem.connect('activate', () => this._daemonSetup.openDialog()); this._menu.addMenuItem(this._daemonWarningItem); + this._modeItem = this._buildModeItem(); + this._menu.addMenuItem(this._modeItem); + this._devicesSection = new PopupMenu.PopupMenuSection(); this._menu.addMenuItem(this._devicesSection); @@ -234,9 +263,61 @@ export class CastMenu { prefsItem.connect('activate', () => this._extension.openPreferences()); this._menu.addMenuItem(prefsItem); + this._reflectCastMode(); this._rebuildDeviceItems(); } + // Two mutually exclusive buttons in one non-activatable row: a switch item + // would close the menu on a pointer click, and this is a choice the user + // makes *before* picking a device. + _buildModeItem() { + const item = new PopupMenu.PopupBaseMenuItem({ activate: false }); + this._modeButtons = new Map(); + const modes = [ + [MODE_MIRROR, _('Mirror screen')], + [MODE_VIRTUAL, _('New monitor')], + ]; + for (const [mode, label] of modes) { + const button = new St.Button({ + label, + style_class: 'button gsc-mode-button', + toggle_mode: true, + can_focus: true, + x_expand: true, + }); + button.connect('clicked', () => { + this._settings.set_string('cast-mode', mode); + // Re-clicking the active button writes an unchanged value, so + // `changed::cast-mode` never fires, while toggle_mode has + // already unchecked the button. Put the state back. + this._reflectCastMode(); + }); + item.add_child(button); + this._modeButtons.set(mode, button); + } + item.visible = isWaylandSession(); + return item; + } + + // The single reader of the setting, so the Wayland rule is applied in one + // place: a stored 'virtual-monitor' must not reach the daemon on Xorg. + _castMode() { + if (!isWaylandSession()) return MODE_MIRROR; + return this._settings.get_string('cast-mode'); + } + + // The device rows carry the mode too (icon, label and what they start), so + // they are rebuilt with it. + _onCastModeChanged() { + this._reflectCastMode(); + this._rebuildDeviceItems(); + } + + _reflectCastMode() { + const active = this._castMode(); + for (const [mode, button] of this._modeButtons) button.checked = mode === active; + } + _buildVolumeItem() { const item = new PopupMenu.PopupBaseMenuItem({ activate: false }); const slider = new Slider(0); @@ -343,9 +424,12 @@ export class CastMenu { item.label_actor = item.label; this._markCastingDevice(item, active, device.name); + const virtual = this._castMode() === MODE_VIRTUAL; item.add_child( - createRowButton('video-display-symbolic', _('Cast screen'), () => - this._startCast(device, SOURCE_SCREEN), + createRowButton( + virtual ? 'list-add-symbolic' : 'video-display-symbolic', + virtual ? _('Cast a new monitor') : _('Cast screen'), + () => this._startCast(device, virtual ? SOURCE_VIRTUAL : SOURCE_SCREEN), ), ); item.add_child( @@ -515,6 +599,8 @@ export class CastMenu { this._volumeControl.destroy(); this._volumeControl = null; } + this._modeButtons?.clear(); + this._modeButtons = null; this._daemon.destroy(); this._daemon = null; } diff --git a/extension/gnome-shell-cast@oxygenws.com/lib/daemon.js b/extension/gnome-shell-cast@oxygenws.com/lib/daemon.js index 896f0d9..b60f30c 100644 --- a/extension/gnome-shell-cast@oxygenws.com/lib/daemon.js +++ b/extension/gnome-shell-cast@oxygenws.com/lib/daemon.js @@ -8,6 +8,9 @@ export const SOURCE_WINDOW = 1; export const SOURCE_AUDIO = 2; // Screen or window, picked in the portal dialog. export const SOURCE_CHOOSE = 3; +// A monitor that does not exist yet: the compositor creates one for the cast +// and removes it again afterwards. +export const SOURCE_VIRTUAL = 4; const BUS_NAME = 'org.gnome.ShellCast'; const OBJECT_PATH = '/org/gnome/ShellCast'; diff --git a/extension/gnome-shell-cast@oxygenws.com/po/README.md b/extension/gnome-shell-cast@oxygenws.com/po/README.md index 8c7d27e..3bd6258 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/README.md +++ b/extension/gnome-shell-cast@oxygenws.com/po/README.md @@ -108,7 +108,9 @@ whatever language you are translating into. | General, Automatic | `gnome-control-center-2.0` | | Video, Pixel format | `gtk40`, `gst-plugins-good-1.0` | | Encoder, Encoding | `gst-plugins-*` — the *video* sense, see below | +| Mirror (as a display mode), Displays, Session | `gnome-shell`, `gnome-control-center-2.0` | | Cast, Chromecast, HLS, D-Bus, GNOME, NV12, I420 | not translated — keep as-is | +| Wayland | `gnome-control-center-2.0` — untranslated in most languages, transliterated in a few | Three that catch people out: German *About* is `Info`, not `Über`; *Volume* means `Lautstärke` here, not the disk-utility `Datenträger`; and *Encoding* in diff --git a/extension/gnome-shell-cast@oxygenws.com/po/ar.po b/extension/gnome-shell-cast@oxygenws.com/po/ar.po index 90644c5..283e677 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/ar.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/ar.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Arabic \n" @@ -16,77 +16,90 @@ msgstr "" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "بث" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "أوقف البث" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "التفضيلات" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "طابق الشاشة" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "شاشة جديدة" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (يبث)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "يبحث عن أجهزة Chromecast…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "ابثّ شاشة جديدة" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "ابثّ الشاشة" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "اختر ما تريد بثّه" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "دفق صوتي" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "المرمّز: %s (العتاد)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "المرمّز: %s (البرمجيات)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "المستقبِل يدعم: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "فشل البث." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "أنهى الجهاز الجلسة (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "أنهى الجهاز الجلسة." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -139,7 +152,7 @@ msgid "Close" msgstr "أغلِق" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "أبلغ عن مشكلة" @@ -179,7 +192,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "انسخ الأمر ثم الصقه في طرفية ونفّذه." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "الموقع" @@ -191,200 +204,216 @@ msgstr "انسخ الأمر" msgid "Copied! Paste it into a terminal and run it." msgstr "نُسخ. الصقه في طرفية ونفّذه." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." msgstr "لا يوجد مرمّز VA-API لبطاقة الرسومات. ثبّت مُشغّل VA-API من توزيعتك." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "ثبّت مُشغّل NVIDIA وإضافة nvcodec لـ GStreamer." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "إضافة GStreamer VA-API مفقودة. ثبّت حزمة %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "إضافة GStreamer VA-API مفقودة. ثبّتها من توزيعتك." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "تلقائي" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "أصلي" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "العتاد فقط" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "البرمجيات فقط" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel، AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (لوحات Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "متقدم" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "جودة الدفق" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "يُطبَّق عند بدء البث التالي" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "الميز الأقصى" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "فوق 1080p يلزم مرمّز عتادي ومعدل بتات مناسب" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "معدل الإطارات" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "إطارات في الثانية" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "معدل بتات الفيديو" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: نحو 4000 لـ 720p، و8000 لـ 1080p، و30000 لـ 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "معدل بتات الصوت" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "العتاد فقط" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "البرمجيات فقط" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel، AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (لوحات Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "الترميز" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "يفشل البث مع رسالة عندما يتعذّر استخدام خيار مفروض" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "مرمّز الفيديو" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" msgstr "يفضّل الوضع التلقائي بطاقة الرسوميات؛ اختر البرمجيات إذا تقطّعت الصورة" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "تنسيق البكسل" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "الوضع التلقائي يناسب كل المرمّزات؛ لا تغيّره إلا لتجاوز مشكلة في المشغّل" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "الترميز العتادي غير متوفّر" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "قائمة" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "أظهر تفاصيل البث" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "أظهر النقل والمرمّزات أسفل الجهاز النشط أثناء البث" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "الشريط العلوي" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "الإعدادات السريعة" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "شاشة افتراضية جديدة" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "عام" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "البث" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "مصدر البث" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "الشاشة الافتراضية الجديدة تحتاج جلسة Wayland" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "موضع الأيقونة" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "أظهر أيقونة البث في الشريط العلوي أو في قائمة الإعدادات السريعة" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "عن" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "الإصدارة %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "مساعدة" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "المشكلات الشائعة وحلولها" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "دليل حل المشكلات" @@ -452,7 +481,17 @@ msgstr "" "اختيار ما يقبله المرمّز المحدد. فرض تنسيق يقصر البث على المرمّزات التي تقبله، " "وهو ما يعني على معظم الأنظمة فرض نوع المرمّز أيضًا." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "ما يُبثّ عند بثّ الشاشة" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "إمّا مطابقة شاشة موجودة لديك، أو شاشة جديدة تُنشأ للبث وتُزال عند انتهائه. الشاشة الجديدة تحتاج جلسة Wayland." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/bg.po b/extension/gnome-shell-cast@oxygenws.com/po/bg.po index 8fa323f..be2a5ad 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/bg.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/bg.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-17 12:00+0200\n" "Last-Translator: \n" "Language-Team: Bulgarian \n" @@ -15,77 +15,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "Предаване" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "Спиране на предаването" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "Настройки" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "Еднакво изображение" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "Нов екран" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (предаване)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Търсене на устройства Chromecast…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "Предаване на нов екран" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "Предаване на екрана" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "Избор какво да се предава" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "Аудио поток" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "Кодер: %s (хардуерен)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "Кодер: %s (софтуерен)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "Приемникът поддържа: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "Предаването е неуспешно." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "Устройството прекрати сесията (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "Устройството прекрати сесията." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -143,7 +156,7 @@ msgid "Close" msgstr "Затваряне" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "Докладване на грешка" @@ -185,7 +198,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "Копирайте командата, поставете я в терминал и я изпълнете." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "Начална страница" @@ -197,7 +210,7 @@ msgstr "Копиране на командата" msgid "Copied! Paste it into a terminal and run it." msgstr "Копирано! Поставете го в терминал и го изпълнете." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -205,126 +218,126 @@ msgstr "" "Няма кодер VA-API за вашата видеокарта. Инсталирайте драйвера VA-API на " "дистрибуцията си." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "Инсталирайте драйвера на NVIDIA и приставката nvcodec на GStreamer." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "Липсва приставката VA-API на GStreamer. Инсталирайте пакета %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "" "Липсва приставката VA-API на GStreamer. Инсталирайте я чрез дистрибуцията си." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "Автоматично" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "Присъща" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "Само хардуерен" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "Само софтуерен" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (платки Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "Разширени" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "Качество на предаването" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "Прилага се при следващото стартиране на предаване" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "Максимална разделителна способност" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "" "Над 1080p са необходими хардуерен кодер и съответната скорост на битовете" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "Честота на кадрите" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "Кадри в секунда" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "Скорост на битовете за видеото" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: около 4000 за 720p, 8000 за 1080p, 30000 за 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "Скорост на битовете за аудиото" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "Само хардуерен" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "Само софтуерен" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (платки Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "Кодиране" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "Предаването се проваля със съобщение, когато зададеният избор не може да се " "използва" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "Видео кодер" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" @@ -332,79 +345,95 @@ msgstr "" "Автоматично предпочита видеокартата; изберете софтуерен, ако картината се " "накъсва" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "Формат на пикселите" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "Автоматично е подходящо за всеки кодер; променяйте само за да заобиколите " "драйвер" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "Хардуерното кодиране не е налично" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "Меню" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "Показване на подробности за предаването" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" "Показване на транспорта и кодеците под активното устройство по време на " "предаване" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "Горна лента" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "Бързи настройки" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "Нов виртуален екран" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "Общи" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "Предаване" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "Източник на предаването" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "Новият виртуален екран изисква сесия с Wayland" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "Местоположение на индикатора" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "" "Показване на иконата за предаване в горната лента или в менюто за бързи " "настройки" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "Относно" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "Версия %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "Помощ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "Често срещани проблеми и решенията им" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "Ръководство за справяне с проблеми" @@ -477,7 +506,17 @@ msgstr "" "на формат ограничава предаването до кодерите, които го приемат, което на " "повечето системи означава да се наложи и видът на кодера." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "Какво се предава при предаване на екрана" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "Или еднакво изображение на екран, който вече имате, или нов екран, създаден за предаването и премахнат при завършването му. Новият екран изисква сесия с Wayland." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/bn.po b/extension/gnome-shell-cast@oxygenws.com/po/bn.po index 471da89..1a10938 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/bn.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/bn.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Bengali \n" @@ -15,77 +15,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "কাস্ট" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "কাস্ট করা বন্ধ করুন" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "পছন্দসমূহ" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "স্ক্রিন মিরর করুন" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "নতুন মনিটর" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (কাস্ট হচ্ছে)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Chromecast ডিভাইস খোঁজা হচ্ছে…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "নতুন মনিটর কাস্ট করুন" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "স্ক্রিন কাস্ট করুন" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "কী কাস্ট করবেন তা বেছে নিন" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "অডিও স্ট্রিম" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "এনকোডার: %s (হার্ডওয়্যার)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "এনকোডার: %s (সফটওয়্যার)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "রিসিভার সমর্থন করে: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "কাস্ট ব্যর্থ হয়েছে।" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "ডিভাইসটি সেশন শেষ করেছে (%s)।" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "ডিভাইসটি সেশন শেষ করেছে।" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -141,7 +154,7 @@ msgid "Close" msgstr "বন্ধ করুন" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "সমস্যা রিপোর্ট করুন" @@ -182,7 +195,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "কমান্ডটি অনুলিপি করুন, তারপর টার্মিনালে পেস্ট করে চালান।" #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "ওয়েবসাইট" @@ -194,7 +207,7 @@ msgstr "কমান্ড অনুলিপি করুন" msgid "Copied! Paste it into a terminal and run it." msgstr "অনুলিপি হয়েছে। টার্মিনালে পেস্ট করে চালান।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -202,194 +215,210 @@ msgstr "" "আপনার গ্রাফিক্স কার্ডের জন্য কোনো VA-API এনকোডার নেই। আপনার ডিস্ট্রিবিউশনের VA-API " "ড্রাইভার ইনস্টল করুন।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "NVIDIA ড্রাইভার এবং GStreamer nvcodec প্লাগইন ইনস্টল করুন।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "GStreamer VA-API প্লাগইন নেই। %s প্যাকেজ ইনস্টল করুন।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "GStreamer VA-API প্লাগইন নেই। এটি আপনার ডিস্ট্রিবিউশন থেকে ইনস্টল করুন।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "স্বয়ংক্রিয়" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "মূল" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "শুধু হার্ডওয়্যার" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "শুধু সফটওয়্যার" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (Arm বোর্ড)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "উন্নত" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "স্ট্রিমের মান" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "পরবর্তী কাস্ট শুরুর সময় প্রয়োগ হবে" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "সর্বোচ্চ রেজল্যুশন" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "1080p-এর উপরে হার্ডওয়্যার এনকোডার এবং উপযুক্ত বিটরেট প্রয়োজন" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "ফ্রেম রেট" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "প্রতি সেকেন্ডে ফ্রেম" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "ভিডিও বিটরেট" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: 720p-এর জন্য প্রায় 4000, 1080p-এর জন্য 8000, 4K-এর জন্য 30000" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "অডিও বিটরেট" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "শুধু হার্ডওয়্যার" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "শুধু সফটওয়্যার" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (Arm বোর্ড)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "এনকোডিং" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "নির্ধারিত পছন্দ ব্যবহার করা না গেলে কাস্ট বার্তাসহ ব্যর্থ হয়" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "ভিডিও এনকোডার" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" msgstr "স্বয়ংক্রিয় আপনার গ্রাফিক্স কার্ড পছন্দ করে; ছবি ভেঙে গেলে সফটওয়্যার বেছে নিন" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "পিক্সেল বিন্যাস" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "স্বয়ংক্রিয় সব এনকোডারের জন্য উপযুক্ত; শুধু ড্রাইভারের সমস্যা এড়াতে বদলান" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "হার্ডওয়্যার এনকোডিং উপলব্ধ নয়" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "মেনু" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "কাস্টের বিবরণ দেখান" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "কাস্ট করার সময় সক্রিয় ডিভাইসের নিচে ট্রান্সপোর্ট ও কোডেক দেখান" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "শীর্ষ বার" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "দ্রুত সেটিংস" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "নতুন ভার্চুয়াল মনিটর" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "সাধারণ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "কাস্টিং" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "কাস্টের উৎস" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "নতুন ভার্চুয়াল মনিটরের জন্য একটি Wayland সেশন প্রয়োজন" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "আইকনের অবস্থান" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "কাস্ট আইকন শীর্ষ বারে, নাকি দ্রুত সেটিংস মেনুতে দেখান" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "পরিচিতি" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "সংস্করণ %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "সহায়তা" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "সাধারণ সমস্যা ও তার সমাধান" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "সমস্যা সমাধানের নির্দেশিকা" @@ -459,7 +488,17 @@ msgstr "" "কাস্টিং সেই এনকোডারগুলিতে সীমাবদ্ধ হয় যেগুলি এটি গ্রহণ করে, যা বেশিরভাগ সিস্টেমে " "এনকোডারের ধরনও বাধ্য করার সমান।" -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "স্ক্রিন কাস্ট করলে কী পাঠানো হয়" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "হয় আপনার বিদ্যমান কোনো ডিসপ্লের মিরর, অথবা কাস্টের জন্য তৈরি হওয়া একটি নতুন মনিটর যা কাস্ট শেষ হলে সরিয়ে ফেলা হয়। নতুন মনিটরের জন্য একটি Wayland সেশন প্রয়োজন।" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/de.po b/extension/gnome-shell-cast@oxygenws.com/po/de.po index 4f19ede..5dc7dc0 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/de.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/de.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 1\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-04 00:22\n" "Last-Translator: \n" "Language-Team: German \n" @@ -14,77 +14,90 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "Cast" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "Übertragung beenden" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "Einstellungen" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "Bildschirm spiegeln" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "Neuer Bildschirm" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (überträgt)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Chromecast-Geräte werden gesucht …" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "Neuen Bildschirm übertragen" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "Bildschirm übertragen" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "Auswählen, was übertragen werden soll" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast-Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "Audio-Stream" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "Encoder: %s (Hardware)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "Encoder: %s (Software)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "Empfänger unterstützt: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "Die Übertragung ist fehlgeschlagen." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "Das Gerät hat die Sitzung beendet (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "Das Gerät hat die Sitzung beendet." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -143,7 +156,7 @@ msgid "Close" msgstr "Schließen" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "Fehler melden" @@ -188,7 +201,7 @@ msgstr "" "ihn aus." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "Webseite" @@ -200,7 +213,7 @@ msgstr "Befehl kopieren" msgid "Copied! Paste it into a terminal and run it." msgstr "Kopiert! Fügen Sie ihn in ein Terminal ein und führen Sie ihn aus." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -208,127 +221,127 @@ msgstr "" "Keine VA-API-Kodierung für Ihre Grafikkarte. Installieren Sie den VA-API-" "Treiber Ihrer Distribution." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "Installieren Sie den NVIDIA-Treiber und das GStreamer-nvcodec-Plugin." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "Das GStreamer-VA-API-Plugin fehlt. Installieren Sie das Paket %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "" "Das GStreamer-VA-API-Plugin fehlt. Installieren Sie es über Ihre " "Distribution." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "Automatisch" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "Nativ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "Nur Hardware" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "Nur Software" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (ARM-Geräte)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "Erweitert" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "Streaming-Qualität" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "Wird bei der nächsten Übertragung angewendet" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "Maximale Auflösung" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "" "Über 1080p sind ein Hardware-Encoder und eine passende Bitrate erforderlich" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "Bildrate" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "Bilder pro Sekunde" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "Video-Bitrate" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: etwa 4000 für 720p, 8000 für 1080p, 30000 für 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "Audio-Bitrate" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "Nur Hardware" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "Nur Software" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (ARM-Geräte)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "Kodierung" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "Die Übertragung schlägt mit einer Meldung fehl, wenn eine erzwungene Auswahl " "nicht verwendbar ist" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "Video-Encoder" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" @@ -336,77 +349,93 @@ msgstr "" "Automatisch bevorzugt Ihre Grafikkarte; wählen Sie Software, wenn das Bild " "bricht" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "Pixelformat" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "Automatisch passt zu jedem Encoder; ändern Sie dies nur, um einen Treiber zu " "umgehen" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "Hardware-Kodierung ist nicht verfügbar" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "Menü" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "Übertragungsdetails anzeigen" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" "Während der Übertragung Transport und Codecs unter dem aktiven Gerät anzeigen" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "Obere Leiste" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "Schnelleinstellungen" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "Neuer virtueller Bildschirm" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "Allgemein" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "Übertragung" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "Übertragungsquelle" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "Ein neuer virtueller Bildschirm erfordert eine Wayland-Sitzung" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "Position des Symbols" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "" "Das Cast-Symbol in der oberen Leiste oder im Schnelleinstellungsmenü anzeigen" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "Info" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "Version %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "Hilfe" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "Häufige Probleme und ihre Lösungen" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "Anleitung zur Fehlerbehebung" @@ -481,7 +510,17 @@ msgstr "" "Ein erzwungenes Format beschränkt die Übertragung auf Encoder, die es " "akzeptieren – auf den meisten Systemen legt das auch den Encoder-Typ fest." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "Was beim Übertragen des Bildschirms gesendet wird" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "Entweder eine Spiegelung eines vorhandenen Bildschirms oder ein neuer Bildschirm, der für die Übertragung erstellt und danach wieder entfernt wird. Ein neuer Bildschirm erfordert eine Wayland-Sitzung." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/es.po b/extension/gnome-shell-cast@oxygenws.com/po/es.po index e1f4b30..f200c17 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/es.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/es.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Spanish \n" @@ -15,77 +15,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "Cast" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "Detener la transmisión" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "Preferencias" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "Pantalla en espejo" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "Pantalla nueva" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (transmitiendo)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Buscando dispositivos Chromecast…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "Transmitir una pantalla nueva" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "Transmitir la pantalla" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "Elegir qué transmitir" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "Flujo de audio" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "Codificador: %s (hardware)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "Codificador: %s (software)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "El receptor admite: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "La transmisión ha fallado." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "El dispositivo ha finalizado la sesión (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "El dispositivo ha finalizado la sesión." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -142,7 +155,7 @@ msgid "Close" msgstr "Cerrar" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "Informar de un error" @@ -184,7 +197,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "Copie el comando, péguelo en una terminal y ejecútelo." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "Página web" @@ -196,7 +209,7 @@ msgstr "Copiar el comando" msgid "Copied! Paste it into a terminal and run it." msgstr "Copiado. Péguelo en una terminal y ejecútelo." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -204,204 +217,220 @@ msgstr "" "No hay codificador VA-API para su tarjeta gráfica. Instale el controlador VA-" "API de su distribución." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "Instale el controlador NVIDIA y el plugin nvcodec de GStreamer." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "Falta el plugin VA-API de GStreamer. Instale el paquete %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "Falta el plugin VA-API de GStreamer. Instálelo desde su distribución." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "Automático" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "Nativa" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "Solo hardware" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "Solo software" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (placas Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "Avanzado" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "Calidad de la transmisión" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "Se aplicará la próxima vez que se inicie una transmisión" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "Resolución máxima" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "" "Por encima de 1080p se necesita un codificador por hardware y una tasa de " "bits acorde" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "Velocidad de fotogramas" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "Fotogramas por segundo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "Tasa de bits del vídeo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: unos 4000 para 720p, 8000 para 1080p, 30000 para 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "Tasa de bits del audio" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "Solo hardware" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "Solo software" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (placas Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "Codificación" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "La transmisión falla con un mensaje cuando no se puede usar la opción forzada" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "Codificador de vídeo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" msgstr "" "Automático prefiere su tarjeta gráfica; elija software si la imagen se rompe" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "Formato de píxel" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "Automático sirve para cualquier codificador; cámbielo solo para sortear un " "controlador" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "La codificación por hardware no está disponible" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "Menú" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "Mostrar los detalles de la transmisión" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" "Mostrar el transporte y los códecs bajo el dispositivo activo durante la " "transmisión" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "Barra superior" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "Configuración rápida" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "Pantalla virtual nueva" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "General" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "Transmisión" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "Fuente de la transmisión" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "Una pantalla virtual nueva necesita una sesión de Wayland" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "Ubicación del icono" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "" "Mostrar el icono de transmisión en la barra superior o en el menú de " "configuración rápida" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "Acerca de" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "Versión %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "Ayuda" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "Problemas comunes y sus soluciones" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "Guía de resolución de problemas" @@ -476,7 +505,17 @@ msgstr "" "lo que en la mayoría de los sistemas implica forzar también el tipo de " "codificador." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "Qué se envía al transmitir la pantalla" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "Un espejo de una pantalla que ya tiene, o una pantalla nueva creada para la transmisión y eliminada al terminar. Una pantalla nueva necesita una sesión de Wayland." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/fa.po b/extension/gnome-shell-cast@oxygenws.com/po/fa.po index 087f1fc..4080bbf 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/fa.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/fa.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 1\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-04 00:22\n" "Last-Translator: \n" "Language-Team: Persian \n" @@ -14,77 +14,90 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "پخش" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "توقف پخش" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "ترجیحات" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "آینهٔ صفحه" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "نمایشگر جدید" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (در حال پخش)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "در حال جست‌وجوی دستگاه‌های کروم‌کست…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "پخش نمایشگر جدید" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "پخش صفحه" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "انتخاب آنچه پخش می‌شود" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "جریان کست" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "جریان صدا" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "رمزگذار: %s (سخت‌افزاری)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "رمزگذار: %s (نرم‌افزاری)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "گیرنده پشتیبانی می‌کند: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "پخش ناموفق بود." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "دستگاه نشست را پایان داد (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "دستگاه نشست را پایان داد." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -139,7 +152,7 @@ msgid "Close" msgstr "بستن" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "گزارش مشکل" @@ -181,7 +194,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "فرمان را رونوشت کنید، سپس آن را در یک پایانه بچسبانید و اجرا کنید." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "صفحهٔ خانگی" @@ -193,7 +206,7 @@ msgstr "رونوشت فرمان" msgid "Copied! Paste it into a terminal and run it." msgstr "رونوشت شد! آن را در یک پایانه بچسبانید و اجرا کنید." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -201,196 +214,212 @@ msgstr "" "رمزگذار VA-API برای کارت نگاشتاری شما موجود نیست. راه‌انداز VA-API توزیعتان " "را نصب کنید." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "راه‌انداز NVIDIA و افزایهٔ nvcodec برای GStreamer را نصب کنید." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "افزایهٔ VA-API برای GStreamer موجود نیست. بستهٔ %s را نصب کنید." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "افزایهٔ VA-API برای GStreamer موجود نیست. آن را از توزیع خود نصب کنید." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "خودکار" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "بومی" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "فقط سخت‌افزاری" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "فقط نرم‌افزاری" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel، AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (بردهای Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "پیش‌رفته" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "کیفیت جریان" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "در پخش بعدی اعمال می‌شود" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "بیشینهٔ تفکیک‌پذیری" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "بالاتر از 1080p به رمزگذار سخت‌افزاری و نرخ بیت متناسب نیاز دارد" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "نرخ فریم" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "فریم بر ثانیه" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "نرخ بیت ویدیو" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: حدود 4000 برای 720p، 8000 برای 1080p، 30000 برای 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "نرخ بیت صدا" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "فقط سخت‌افزاری" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "فقط نرم‌افزاری" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel، AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (بردهای Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "رمزگذاری" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "اگر گزینهٔ اجباری قابل استفاده نباشد، پخش با یک پیام شکست می‌خورد" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "رمزگذار ویدیو" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" msgstr "" "خودکار کارت گرافیک شما را ترجیح می‌دهد؛ اگر تصویر خرد شد نرم‌افزاری را برگزینید" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "قالب پیکسل" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "خودکار برای هر رمزگذاری مناسب است؛ تنها برای دور زدن یک راه‌انداز تغییرش دهید" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "رمزگذاری سخت‌افزاری موجود نیست" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "منو" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "نمایش جزئیات پخش" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "نمایش انتقال و کدک‌ها زیر دستگاه فعال هنگام پخش" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "نوار بالا" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "تنظیمات سریع" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "نمایشگر مجازی جدید" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "عمومی" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "پخش" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "منبع پخش" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "نمایشگر مجازی جدید به نشست وی‌لند نیاز دارد" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "موقعیت نشانگر" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "نمایش نماد پخش در نوار بالا یا در منوی تنظیمات سریع" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "درباره" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "نسخهٔ %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "راهنما" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "مشکلات رایج و راه‌حل آن‌ها" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "راهنمای عیب‌یابی" @@ -461,7 +490,17 @@ msgstr "" "یک قالب، پخش را به رمزگذارهایی محدود می‌کند که آن را می‌پذیرند و در بیشتر " "سامانه‌ها یعنی تحمیل نوع رمزگذار هم." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "آنچه هنگام پخش صفحه فرستاده می‌شود" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "یا آینهٔ نمایشگری که از پیش دارید، یا نمایشگری جدید که برای پخش ساخته و در پایان آن برداشته می‌شود. نمایشگر جدید به نشست وی‌لند نیاز دارد." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/fr.po b/extension/gnome-shell-cast@oxygenws.com/po/fr.po index 3184e65..bd6098f 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/fr.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/fr.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: French \n" @@ -15,77 +15,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "Cast" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "Arrêter la diffusion" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "Préférences" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "Cloner l’écran" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "Nouvel écran" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (diffusion en cours)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Recherche d’appareils Chromecast…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "Diffuser un nouvel écran" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "Diffuser l’écran" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "Choisir ce qui est diffusé" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "Flux audio" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "Encodeur : %s (matériel)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "Encodeur : %s (logiciel)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "Le récepteur prend en charge : %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "La diffusion a échoué." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "L’appareil a mis fin à la session (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "L’appareil a mis fin à la session." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -142,7 +155,7 @@ msgid "Close" msgstr "Fermer" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "Signaler un problème" @@ -184,7 +197,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "Copiez la commande, collez-la dans un terminal puis exécutez-la." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "Site web" @@ -196,7 +209,7 @@ msgstr "Copier la commande" msgid "Copied! Paste it into a terminal and run it." msgstr "Copié. Collez-la dans un terminal puis exécutez-la." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -204,126 +217,126 @@ msgstr "" "Aucun encodeur VA-API pour votre carte graphique. Installez le pilote VA-API " "de votre distribution." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "Installez le pilote NVIDIA et le greffon nvcodec de GStreamer." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "Le greffon VA-API de GStreamer est absent. Installez le paquet %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "" "Le greffon VA-API de GStreamer est absent. Installez-le depuis votre " "distribution." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "Automatique" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "Native" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "Matériel uniquement" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "Logiciel uniquement" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (cartes Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "Avancé" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "Qualité du flux" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "Appliqué au démarrage de la prochaine diffusion" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "Résolution maximale" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "" "Au-delà de 1080p, un encodeur matériel et un débit adapté sont nécessaires" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "Fréquence d’images" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "Images par seconde" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "Débit vidéo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s : environ 4000 pour 720p, 8000 pour 1080p, 30000 pour 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "Débit audio" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "Matériel uniquement" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "Logiciel uniquement" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (cartes Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "Encodage" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "La diffusion échoue avec un message lorsqu’un choix imposé est inutilisable" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "Encodeur vidéo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" @@ -331,79 +344,95 @@ msgstr "" "Automatique privilégie votre carte graphique ; choisissez logiciel si " "l’image se dégrade" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "Format de pixel" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "Automatique convient à tous les encodeurs ; ne le changez que pour " "contourner un pilote" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "L’encodage matériel n’est pas disponible" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "Menu" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "Afficher les détails de la diffusion" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" "Afficher le transport et les codecs sous l’appareil actif pendant la " "diffusion" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "Barre supérieure" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "Paramètres rapides" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "Nouvel écran virtuel" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "Général" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "Diffusion" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "Source de la diffusion" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "Un nouvel écran virtuel nécessite une session Wayland" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "Emplacement de l’icône" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "" "Afficher l’icône de diffusion dans la barre supérieure ou dans le menu des " "paramètres rapides" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "À propos" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "Version %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "Aide" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "Problèmes courants et leurs solutions" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "Guide de dépannage" @@ -478,7 +507,17 @@ msgstr "" "format limite la diffusion aux encodeurs qui l’acceptent, ce qui revient sur " "la plupart des systèmes à forcer aussi le type d’encodeur." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "Ce qui est envoyé lors de la diffusion de l’écran" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "Soit un clone d’un écran que vous avez déjà, soit un nouvel écran créé pour la diffusion et supprimé à la fin de celle-ci. Un nouvel écran nécessite une session Wayland." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/gnome-shell-cast@oxygenws.com.pot b/extension/gnome-shell-cast@oxygenws.com/po/gnome-shell-cast@oxygenws.com.pot index 4f957cc..d3b4df6 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/gnome-shell-cast@oxygenws.com.pot +++ b/extension/gnome-shell-cast@oxygenws.com/po/gnome-shell-cast@oxygenws.com.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,77 +17,90 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -138,7 +151,7 @@ msgid "Close" msgstr "" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "" @@ -173,7 +186,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "" #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "" @@ -185,200 +198,216 @@ msgstr "" msgid "Copied! Paste it into a terminal and run it." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 -msgid "4K (2160p)" -msgstr "" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 -msgid "1440p" -msgstr "" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 -msgid "1080p" -msgstr "" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 -msgid "720p" -msgstr "" - #: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" +msgid "4K (2160p)" msgstr "" #: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" +msgid "1440p" msgstr "" #: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" +msgid "1080p" msgstr "" #: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" +msgid "720p" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "" @@ -434,7 +463,17 @@ msgid "" "forcing the encoder type too." msgstr "" -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/hi.po b/extension/gnome-shell-cast@oxygenws.com/po/hi.po index add77b0..b2f7ccf 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/hi.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/hi.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Hindi \n" @@ -15,77 +15,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "कास्ट" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "कास्ट करना रोकें" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "वरीयताएं" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "स्क्रीन मिरर करें" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "नया डिस्प्ले" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (कास्ट हो रहा है)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Chromecast उपकरण खोजे जा रहे हैं…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "नया डिस्प्ले कास्ट करें" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "स्क्रीन कास्ट करें" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "चुनें कि क्या कास्ट करना है" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "ऑडियो स्ट्रीम" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "एन्कोडर: %s (हार्डवेयर)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "एन्कोडर: %s (सॉफ़्टवेयर)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "रिसीवर समर्थन करता है: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "कास्ट विफल रहा।" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "उपकरण ने सत्र समाप्त कर दिया (%s)।" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "उपकरण ने सत्र समाप्त कर दिया।" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -141,7 +154,7 @@ msgid "Close" msgstr "बंद करें" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "समस्या की रिपोर्ट करें" @@ -182,7 +195,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "कमांड कॉपी करें, फिर इसे टर्मिनल में चिपकाकर चलाएं।" #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "वेबसाइट" @@ -194,7 +207,7 @@ msgstr "कमांड कॉपी करें" msgid "Copied! Paste it into a terminal and run it." msgstr "कॉपी हो गया। इसे टर्मिनल में चिपकाकर चलाएं।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -202,194 +215,210 @@ msgstr "" "आपके ग्राफ़िक्स कार्ड के लिए कोई VA-API एन्कोडर नहीं है। अपने वितरण का VA-API ड्राइवर " "स्थापित करें।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "NVIDIA ड्राइवर और GStreamer nvcodec प्लगइन स्थापित करें।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "GStreamer VA-API प्लगइन अनुपलब्ध है। %s पैकेज स्थापित करें।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "GStreamer VA-API प्लगइन अनुपलब्ध है। इसे अपने वितरण से स्थापित करें।" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "स्वचालित" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "मूल" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "केवल हार्डवेयर" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "केवल सॉफ़्टवेयर" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (Arm बोर्ड)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "उन्नत" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "स्ट्रीम गुणवत्ता" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "अगली बार कास्ट शुरू होने पर लागू होगा" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "अधिकतम रेज़ोल्यूशन" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "1080p से ऊपर हार्डवेयर एन्कोडर और उसके अनुरूप बिटरेट आवश्यक है" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "फ्रेम दर" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "फ्रेम प्रति सेकंड" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "वीडियो बिटरेट" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: 720p के लिए लगभग 4000, 1080p के लिए 8000, 4K के लिए 30000" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "ऑडियो बिटरेट" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "केवल हार्डवेयर" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "केवल सॉफ़्टवेयर" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (Arm बोर्ड)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "एन्कोडिंग" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "तय किया गया विकल्प उपयोग न हो सकने पर कास्ट संदेश के साथ विफल हो जाता है" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "वीडियो एन्कोडर" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" msgstr "स्वचालित आपके ग्राफ़िक्स कार्ड को प्राथमिकता देता है; तस्वीर टूटने पर सॉफ़्टवेयर चुनें" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "पिक्सल प्रारूप" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "स्वचालित हर एन्कोडर के लिए उपयुक्त है; इसे केवल किसी ड्राइवर से बचने के लिए बदलें" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "हार्डवेयर एन्कोडिंग उपलब्ध नहीं है" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "मेनू" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "कास्ट विवरण दिखाएं" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "कास्ट करते समय सक्रिय उपकरण के नीचे ट्रांसपोर्ट और कोडेक दिखाएं" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "शीर्ष पट्टी" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "त्वरित सेटिंग" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "नया वर्चुअल डिस्प्ले" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "सामान्य" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "कास्टिंग" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "कास्ट स्रोत" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "नए वर्चुअल डिस्प्ले के लिए Wayland सत्र आवश्यक है" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "आइकन का स्थान" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "कास्ट आइकन को शीर्ष पट्टी में या त्वरित सेटिंग मेनू में दिखाएं" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "परिचय" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "संस्करण %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "सहायता" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "सामान्य समस्याएं और उनके समाधान" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "समस्या निवारण गाइड" @@ -460,7 +489,17 @@ msgstr "" "केवल उन एन्कोडरों तक सीमित हो जाती है जो उसे स्वीकार करते हैं, जिसका अधिकांश सिस्टम पर " "अर्थ है एन्कोडर का प्रकार भी बाध्य करना।" -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "स्क्रीन कास्ट करने पर क्या भेजा जाता है" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "या तो आपके पास पहले से मौजूद किसी डिस्प्ले का मिरर, या कास्ट के लिए बनाया गया नया डिस्प्ले जो कास्ट समाप्त होने पर हटा दिया जाता है। नए डिस्प्ले के लिए Wayland सत्र आवश्यक है।" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/id.po b/extension/gnome-shell-cast@oxygenws.com/po/id.po index 0b2c67e..b9383d6 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/id.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/id.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Indonesian \n" @@ -15,77 +15,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "Cast" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "Hentikan cast" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "Preferensi" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "Layar kembar" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "Layar baru" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (sedang cast)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Mencari perangkat Chromecast…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "Cast layar baru" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "Cast layar" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "Pilih apa yang akan di-cast" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "Aliran audio" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "Enkoder: %s (perangkat keras)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "Enkoder: %s (perangkat lunak)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "Penerima mendukung: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "Cast gagal." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "Perangkat mengakhiri sesi (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "Perangkat mengakhiri sesi." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -143,7 +156,7 @@ msgid "Close" msgstr "Tutup" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "Laporkan masalah" @@ -185,7 +198,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "Salin perintah, lalu tempelkan ke terminal dan jalankan." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "Situs web" @@ -197,7 +210,7 @@ msgstr "Salin perintah" msgid "Copied! Paste it into a terminal and run it." msgstr "Tersalin. Tempelkan ke terminal dan jalankan." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -205,125 +218,125 @@ msgstr "" "Tidak ada enkoder VA-API untuk kartu grafis Anda. Pasang driver VA-API dari " "distribusi Anda." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "Pasang driver NVIDIA dan plugin nvcodec GStreamer." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "Plugin VA-API GStreamer tidak ada. Pasang paket %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "Plugin VA-API GStreamer tidak ada. Pasang dari distribusi Anda." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "Otomatis" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "Natif" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "Hanya perangkat keras" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "Hanya perangkat lunak" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (papan Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "Tingkat lanjut" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "Kualitas aliran" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "Diterapkan saat cast berikutnya dimulai" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "Resolusi maksimum" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "" "Di atas 1080p memerlukan enkoder perangkat keras dan bitrate yang sesuai" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "Laju bingkai" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "Bingkai per detik" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "Bitrate video" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: sekitar 4000 untuk 720p, 8000 untuk 1080p, 30000 untuk 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "Bitrate audio" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "Hanya perangkat keras" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "Hanya perangkat lunak" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (papan Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "Pengkodean" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "Cast gagal dengan sebuah pesan bila pilihan yang dipaksakan tidak dapat " "dipakai" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "Enkoder video" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" @@ -331,76 +344,92 @@ msgstr "" "Otomatis mengutamakan kartu grafis Anda; pilih perangkat lunak bila gambar " "pecah" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "Format piksel" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "Otomatis cocok untuk semua enkoder; ubah hanya untuk menyiasati suatu " "penggerak" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "Pengkodean perangkat keras tidak tersedia" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "Menu" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "Tampilkan detail cast" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" "Tampilkan transport dan kodek di bawah perangkat aktif saat melakukan cast" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "Bar atas" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "Pengaturan cepat" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "Layar virtual baru" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "Umum" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "Cast" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "Sumber cast" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "Layar virtual baru memerlukan sesi Wayland" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "Lokasi ikon" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "Tampilkan ikon cast di bar atas, atau di menu pengaturan cepat" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "Tentang" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "Versi %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "Bantuan" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "Masalah umum dan solusinya" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "Panduan pemecahan masalah" @@ -474,7 +503,17 @@ msgstr "" "Memaksa suatu format membatasi penyiaran ke enkoder yang menerimanya, yang " "di sebagian besar sistem berarti memaksa jenis enkoder juga." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "Apa yang dikirim saat men-cast layar" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "Kembaran layar yang sudah Anda miliki, atau layar baru yang dibuat untuk cast dan dihapus saat cast berakhir. Layar baru memerlukan sesi Wayland." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/pt_BR.po b/extension/gnome-shell-cast@oxygenws.com/po/pt_BR.po index 0b3d716..bb7180d 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/pt_BR.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/pt_BR.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Brazilian Portuguese 1);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "Cast" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "Parar a transmissão" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "Preferências" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "Espelhar a tela" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "Nova tela" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (transmitindo)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Procurando dispositivos Chromecast…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "Transmitir uma nova tela" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "Transmitir a tela" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "Escolher o que transmitir" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "Fluxo de áudio" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "Codificador: %s (hardware)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "Codificador: %s (software)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "O receptor tem suporte a: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "A transmissão falhou." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "O dispositivo encerrou a sessão (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "O dispositivo encerrou a sessão." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -144,7 +157,7 @@ msgid "Close" msgstr "Fechar" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "Relatar um problema" @@ -186,7 +199,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "Copie o comando, cole-o em um terminal e execute-o." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "Site" @@ -198,7 +211,7 @@ msgstr "Copiar o comando" msgid "Copied! Paste it into a terminal and run it." msgstr "Copiado. Cole-o em um terminal e execute-o." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -206,127 +219,127 @@ msgstr "" "Nenhum codificador VA-API para sua placa de vídeo. Instale o driver VA-API " "da sua distribuição." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "Instale o driver NVIDIA e o plug-in nvcodec do GStreamer." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "O plug-in VA-API do GStreamer está ausente. Instale o pacote %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "" "O plug-in VA-API do GStreamer está ausente. Instale-o pela sua distribuição." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "Automático" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "Nativa" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "Somente hardware" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "Somente software" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (placas Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "Avançado" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "Qualidade da transmissão" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "Aplicado na próxima vez que uma transmissão for iniciada" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "Resolução máxima" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "" "Acima de 1080p é necessário um codificador de hardware e uma taxa de bits " "compatível" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "Taxa de quadros" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "Quadros por segundo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "Taxa de bits do vídeo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: cerca de 4000 para 720p, 8000 para 1080p, 30000 para 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "Taxa de bits do áudio" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "Somente hardware" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "Somente software" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (placas Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "Codificação" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "A transmissão falha com uma mensagem quando uma escolha forçada não pode ser " "usada" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "Codificador de vídeo" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" @@ -334,79 +347,95 @@ msgstr "" "Automático prefere sua placa de vídeo; escolha software se a imagem se " "quebrar" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "Formato de pixel" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "Automático serve para qualquer codificador; mude apenas para contornar um " "driver" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "A codificação por hardware não está disponível" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "Menu" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "Mostrar detalhes da transmissão" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" "Mostrar o transporte e os codecs abaixo do dispositivo ativo durante a " "transmissão" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "Barra superior" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "Configurações rápidas" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "Nova tela virtual" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "Geral" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "Transmissão" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "Fonte da transmissão" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "Uma nova tela virtual precisa de uma sessão Wayland" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "Localização do ícone" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "" "Mostrar o ícone de transmissão na barra superior ou no menu de configurações " "rápidas" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "Sobre" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "Versão %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "Ajuda" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "Problemas comuns e suas soluções" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "Guia de solução de problemas" @@ -481,7 +510,17 @@ msgstr "" "um formato restringe a transmissão aos codificadores que o aceitam, o que na " "maioria dos sistemas significa forçar também o tipo de codificador." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "O que é enviado ao transmitir a tela" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "Um espelho de uma tela que você já tem, ou uma nova tela criada para a transmissão e removida quando ela termina. Uma nova tela precisa de uma sessão Wayland." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/ru.po b/extension/gnome-shell-cast@oxygenws.com/po/ru.po index 81702df..1c21e3f 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/ru.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/ru.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Russian \n" @@ -16,77 +16,90 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "Трансляция" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "Остановить трансляцию" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "Настройки" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "Зеркальное отображение" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "Новый дисплей" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (трансляция)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Поиск устройств Chromecast…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "Транслировать новый дисплей" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "Транслировать экран" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "Выбрать, что транслировать" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "Аудиопоток" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "Кодировщик: %s (аппаратный)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "Кодировщик: %s (программный)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "Приёмник поддерживает: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "Не удалось выполнить трансляцию." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "Устройство завершило сеанс (%s)." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "Устройство завершило сеанс." -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -141,7 +154,7 @@ msgid "Close" msgstr "Закрыть" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "Сообщить о проблеме" @@ -183,7 +196,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "Скопируйте команду, вставьте её в терминал и выполните." #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "Веб-сайт" @@ -195,7 +208,7 @@ msgstr "Копировать команду" msgid "Copied! Paste it into a terminal and run it." msgstr "Скопировано. Вставьте в терминал и выполните." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -203,126 +216,126 @@ msgstr "" "Нет кодировщика VA-API для вашего видеоадаптера. Установите драйвер VA-API " "из вашего дистрибутива." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "Установите драйвер NVIDIA и модуль nvcodec для GStreamer." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "Отсутствует модуль VA-API для GStreamer. Установите пакет %s." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "" "Отсутствует модуль VA-API для GStreamer. Установите его средствами вашего " "дистрибутива." -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "Автоматически" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "Исходное" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "Только аппаратный" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "Только программный" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel, AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (платы Arm)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "Дополнительно" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "Качество трансляции" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "Применяется при следующем запуске трансляции" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "Максимальное разрешение" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "Выше 1080p требуется аппаратный кодировщик и соответствующий битрейт" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "Частота кадров" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "Кадров в секунду" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "Битрейт видео" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "кбит/с: около 4000 для 720p, 8000 для 1080p, 30000 для 4K" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "Битрейт аудио" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "Только аппаратный" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "Только программный" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel, AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (платы Arm)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "Кодирование" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "Трансляция завершается с сообщением, когда заданный выбор невозможно " "использовать" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "Кодировщик видео" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" @@ -330,77 +343,93 @@ msgstr "" "Автоматически предпочитает видеокарту; выберите программный, если " "изображение рассыпается" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "Формат пикселей" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "Автоматически подходит любому кодировщику; меняйте только чтобы обойти " "драйвер" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "Аппаратное кодирование недоступно" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "Меню" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "Показывать сведения о трансляции" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "" "Показывать транспорт и кодеки под активным устройством во время трансляции" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "Верхняя панель" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "Быстрые настройки" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "Новый виртуальный дисплей" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "Общие" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "Трансляция" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "Источник трансляции" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "Для нового виртуального дисплея требуется сеанс Wayland" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "Расположение значка" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "" "Показывать значок трансляции на верхней панели или в меню быстрых настроек" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "О программе" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "Версия %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "Справка" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "Частые проблемы и их решения" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "Руководство по устранению неполадок" @@ -475,7 +504,17 @@ msgstr "" "которые его принимают, что на большинстве систем означает принудительный " "выбор и типа кодировщика." -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "Что передаётся при трансляции экрана" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "Либо зеркальное отображение уже имеющегося дисплея, либо новый дисплей, создаваемый для трансляции и удаляемый по её завершении. Для нового дисплея требуется сеанс Wayland." + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/ur.po b/extension/gnome-shell-cast@oxygenws.com/po/ur.po index 824e271..c8301fc 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/ur.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/ur.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Urdu \n" @@ -15,77 +15,90 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:181 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:193 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:57 msgid "Cast" msgstr "کاسٹ" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:225 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:240 msgid "Stop casting" msgstr "کاسٹ کرنا روکیں" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:233 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:248 msgid "Preferences" msgstr "ترجیحات" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:290 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:263 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "Mirror screen" +msgstr "اسکرین مرر کریں" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:264 +msgid "New monitor" +msgstr "نئی اسکرین" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:358 #, javascript-format msgid "%s (casting)" msgstr "%s (کاسٹ ہو رہا ہے)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:298 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 msgid "Searching for Chromecast devices…" msgstr "Chromecast آلات تلاش کیے جا رہے ہیں…" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:347 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 +msgid "Cast a new monitor" +msgstr "نئی اسکرین کاسٹ کریں" + +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:418 msgid "Cast screen" msgstr "اسکرین کاسٹ کریں" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:352 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:423 msgid "Choose what to cast" msgstr "منتخب کریں کہ کیا کاسٹ کرنا ہے" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Cast streaming" msgstr "Cast Streaming" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:365 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:436 msgid "Audio stream" msgstr "آڈیو اسٹریم" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:366 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:437 msgid "HLS" msgstr "HLS" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:374 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:445 #, javascript-format msgid "Encoder: %s (hardware)" msgstr "اینکوڈر: %s (ہارڈویئر)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:375 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 #, javascript-format msgid "Encoder: %s (software)" msgstr "اینکوڈر: %s (سافٹ ویئر)" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:381 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:452 #, javascript-format msgid "Receiver supports: %s" msgstr "وصول کنندہ معاونت کرتا ہے: %s" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:446 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:517 msgid "The cast failed." msgstr "کاسٹ ناکام ہو گیا۔" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:453 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:524 #, javascript-format msgid "The device ended the session (%s)." msgstr "آلے نے سیشن ختم کر دیا (%s)۔" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:454 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:525 msgid "The device ended the session." msgstr "آلے نے سیشن ختم کر دیا۔" -#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:502 +#: extension/gnome-shell-cast@oxygenws.com/lib/castMenu.js:573 #: extension/gnome-shell-cast@oxygenws.com/lib/indicator.js:22 #: extension/gnome-shell-cast@oxygenws.com/lib/quickIndicator.js:62 msgid "GNOME Shell Cast" @@ -142,7 +155,7 @@ msgid "Close" msgstr "بند کریں" #: extension/gnome-shell-cast@oxygenws.com/lib/errorDialog.js:40 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:266 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:289 msgid "Report an issue" msgstr "مسئلے کی اطلاع دیں" @@ -184,7 +197,7 @@ msgid "Copy the command, then paste it into a terminal and run it." msgstr "کمانڈ نقل کریں، پھر اسے ٹرمینل میں چسپاں کر کے چلائیں۔" #: extension/gnome-shell-cast@oxygenws.com/lib/setupDialog.js:43 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:265 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:288 msgid "Homepage" msgstr "ویب سائٹ" @@ -196,7 +209,7 @@ msgstr "کمانڈ نقل کریں" msgid "Copied! Paste it into a terminal and run it." msgstr "نقل ہو گیا۔ اسے ٹرمینل میں چسپاں کر کے چلائیں۔" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:32 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 msgid "" "No VA-API encoder for your graphics card. Install your distribution’s VA-API " "driver." @@ -204,125 +217,125 @@ msgstr "" "آپ کے گرافکس کارڈ کے لیے کوئی VA-API اینکوڈر نہیں ہے۔ اپنی ڈسٹری بیوشن کا VA-" "API ڈرائیور نصب کریں۔" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:36 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:47 msgid "Install the NVIDIA driver and the GStreamer nvcodec plugin." msgstr "NVIDIA ڈرائیور اور GStreamer nvcodec پلگ ان نصب کریں۔" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:39 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:50 #, javascript-format msgid "The GStreamer VA-API plugin is missing. Install the %s package." msgstr "GStreamer VA-API پلگ ان موجود نہیں ہے۔ %s پیکیج نصب کریں۔" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:43 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:54 msgid "" "The GStreamer VA-API plugin is missing. Install it from your distribution." msgstr "" "GStreamer VA-API پلگ ان موجود نہیں ہے۔ اسے اپنی ڈسٹری بیوشن سے نصب کریں۔" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:62 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:70 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:73 #: extension/gnome-shell-cast@oxygenws.com/prefs.js:81 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:149 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:156 msgid "Automatic" msgstr "خودکار" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:63 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:74 msgid "Native" msgstr "اصل" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:64 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 msgid "4K (2160p)" msgstr "4K (2160p)" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:65 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 msgid "1440p" msgstr "1440p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:66 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 msgid "1080p" msgstr "1080p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:67 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 msgid "720p" msgstr "720p" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:75 -msgid "Hardware only" -msgstr "صرف ہارڈویئر" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:76 -msgid "Software only" -msgstr "صرف سافٹ ویئر" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:77 -msgid "VA-API (Intel, AMD)" -msgstr "VA-API (Intel، AMD)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:78 -msgid "NVENC (NVIDIA)" -msgstr "NVENC (NVIDIA)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:79 -msgid "V4L2 (Arm boards)" -msgstr "V4L2 (Arm بورڈ)" - -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:84 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:83 msgid "Advanced" msgstr "اعلیٰ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:89 msgid "Stream quality" msgstr "اسٹریم کا معیار" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:91 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:90 msgid "Applied the next time a cast is started" msgstr "اگلی بار کاسٹ شروع ہونے پر لاگو ہوگا" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:95 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:15 msgid "Maximum resolution" msgstr "زیادہ سے زیادہ ریزولوشن" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:97 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:96 msgid "Above 1080p needs a hardware encoder and a matching bitrate" msgstr "1080p سے اوپر ہارڈویئر اینکوڈر اور اس کے مطابق بٹ ریٹ درکار ہے" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:106 msgid "Framerate" msgstr "فریم ریٹ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:108 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:107 msgid "Frames per second" msgstr "فریم فی سیکنڈ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:117 msgid "Video bitrate" msgstr "ویڈیو بٹ ریٹ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:119 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:118 msgid "kbit/s: about 4000 for 720p, 8000 for 1080p, 30000 for 4K" msgstr "kbit/s: 720p کے لیے تقریباً 4000، 1080p کے لیے 8000، 4K کے لیے 30000" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:129 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:128 msgid "Audio bitrate" msgstr "آڈیو بٹ ریٹ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:142 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +msgid "Hardware only" +msgstr "صرف ہارڈویئر" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:151 +msgid "Software only" +msgstr "صرف سافٹ ویئر" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:152 +msgid "VA-API (Intel, AMD)" +msgstr "VA-API (Intel، AMD)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:153 +msgid "NVENC (NVIDIA)" +msgstr "NVENC (NVIDIA)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:154 +msgid "V4L2 (Arm boards)" +msgstr "V4L2 (Arm بورڈ)" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:159 msgid "Encoding" msgstr "اینکوڈنگ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:143 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:160 msgid "Casting fails with a message when a forced choice cannot be used" msgstr "" "جب مقرر کردہ انتخاب استعمال نہ ہو سکے تو کاسٹ ایک پیغام کے ساتھ ناکام ہو " "جاتی ہے" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:148 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:165 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:46 msgid "Video encoder" msgstr "وڈیو اینکوڈر" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:150 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:167 msgid "" "Automatic prefers your graphics card; choose software if the picture breaks " "up" @@ -330,74 +343,90 @@ msgstr "" "خودکار آپ کے گرافکس کارڈ کو ترجیح دیتا ہے؛ تصویر ٹوٹنے پر سافٹ ویئر منتخب " "کریں" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:161 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:178 #: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:56 msgid "Pixel format" msgstr "پکسل فارمیٹ" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:162 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:179 msgid "Automatic suits every encoder; only change this to work around a driver" msgstr "" "خودکار ہر اینکوڈر کے لیے موزوں ہے؛ اسے صرف کسی ڈرائیور سے بچنے کے لیے بدلیں" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:191 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 msgid "Hardware encoding is unavailable" msgstr "ہارڈویئر اینکوڈنگ دستیاب نہیں ہے" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:204 -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:224 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:214 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:249 msgid "Menu" msgstr "مینو" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:208 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:61 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:218 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 msgid "Show cast details" msgstr "کاسٹ کی تفصیلات دکھائیں" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:209 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:62 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 msgid "Show the transport and codecs under the active device while casting" msgstr "کاسٹ کرتے وقت فعال آلے کے نیچے ٹرانسپورٹ اور کوڈیکس دکھائیں" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Top bar" msgstr "اوپری پٹی" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:216 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:226 msgid "Quick settings" msgstr "فوری ترتیبات" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:219 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:227 +msgid "New virtual monitor" +msgstr "نئی ورچوئل اسکرین" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:230 msgid "General" msgstr "عمومی" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:228 -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:70 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:235 +msgid "Casting" +msgstr "کاسٹنگ" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:239 +msgid "Cast source" +msgstr "کاسٹ کا ذریعہ" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:240 +msgid "A new virtual monitor needs a Wayland session" +msgstr "نئی ورچوئل اسکرین کے لیے Wayland سیشن ضروری ہے" + +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:253 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:79 msgid "Indicator location" msgstr "آئیکن کا مقام" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:229 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 msgid "Show the cast icon in the top bar, or in the quick settings menu" msgstr "کاسٹ آئیکن اوپری پٹی میں دکھائیں، یا فوری ترتیبات کے مینو میں" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:243 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 msgid "About" msgstr "تعارف" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:254 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:284 #, javascript-format msgid "Version %s" msgstr "ورژن %s" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:269 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:292 msgid "Help" msgstr "مدد" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:270 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:293 msgid "Common problems and their fixes" msgstr "عام مسائل اور ان کے حل" -#: extension/gnome-shell-cast@oxygenws.com/prefs.js:273 +#: extension/gnome-shell-cast@oxygenws.com/prefs.js:296 msgid "Troubleshooting guide" msgstr "مسائل کے حل کی رہنمائی" @@ -471,7 +500,17 @@ msgstr "" "مجبور کرنا کاسٹنگ کو انہی اینکوڈرز تک محدود کر دیتا ہے جو اسے قبول کرتے ہیں، " "جس کا زیادہ تر سسٹمز پر مطلب اینکوڈر کی قسم بھی مجبور کرنا ہے۔" -#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:71 +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:65 +msgid "What casting the screen sends" +msgstr "اسکرین کاسٹ کرنے پر کیا بھیجا جاتا ہے" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:66 +msgid "" +"Either a mirror of a display you already have, or a new monitor created for " +"the cast and removed when it ends. A new monitor needs a Wayland session." +msgstr "یا تو آپ کی موجودہ اسکرین کی نقل، یا کاسٹ کے لیے بنائی گئی نئی اسکرین جو کاسٹ ختم ہونے پر ہٹا دی جاتی ہے۔ نئی اسکرین کے لیے Wayland سیشن ضروری ہے۔" + +#: extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml:80 msgid "" "Where to show the cast indicator: the top-bar tray, or the quick settings " "menu." diff --git a/extension/gnome-shell-cast@oxygenws.com/po/zh_CN.po b/extension/gnome-shell-cast@oxygenws.com/po/zh_CN.po index 05547f6..d279c10 100644 --- a/extension/gnome-shell-cast@oxygenws.com/po/zh_CN.po +++ b/extension/gnome-shell-cast@oxygenws.com/po/zh_CN.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: GNOME Shell Cast 3\n" "Report-Msgid-Bugs-To: https://github.com/omid/gnome-shell-cast/issues\n" -"POT-Creation-Date: 2026-08-21 21:03+0200\n" +"POT-Creation-Date: 2026-08-27 15:26+0200\n" "PO-Revision-Date: 2026-08-14 10:00+0200\n" "Last-Translator: \n" "Language-Team: Simplified Chinese Gio.AppInfo.launch_default_for_uri(uri, null)); + return row; +} + // The daemon decides which piece is missing; this only phrases it, because the // wording has to go through gettext and the daemon's strings do not. A token we // do not know means silence rather than a guess: the daemon can be a different // version than the extension reading it. -function hardwareHintText(support) { - switch (support.gap) { +function hardwareHintText(gap, pluginPackage) { + switch (gap) { case 'driver': return _( 'No VA-API encoder for your graphics card. Install your distribution’s VA-API ' + @@ -35,14 +46,14 @@ function hardwareHintText(support) { case 'nvidia': return _('Install the NVIDIA driver and the GStreamer nvcodec plugin.'); case 'plugin': - return support.pluginPackage + return pluginPackage ? _('The GStreamer VA-API plugin is missing. Install the %s package.').replace( '%s', - support.pluginPackage, + pluginPackage, ) : _('The GStreamer VA-API plugin is missing. Install it from your distribution.'); default: - return null; + return ''; } } @@ -185,21 +196,16 @@ export default class GnomeShellCastPreferences extends ExtensionPreferences { // Which plugin and driver a card needs, per vendor and per distribution, // is more than a row can hold - so the row opens that table instead. - const guide = 'TROUBLESHOOTING.md#hardware-encoding-by-graphics-card'; - const uri = `${this.metadata.url}/blob/main/${guide}`; + const uri = this._docsUri('TROUBLESHOOTING.md#hardware-encoding-by-graphics-card'); getEncodingSupport((support) => { - const subtitle = support && hardwareHintText(support); + const subtitle = hardwareHintText(support?.gap, support?.pluginPackage); if (!subtitle) return; - const row = new Adw.ActionRow({ - title: _('Hardware encoding is unavailable'), + const row = linkRow(_('Hardware encoding is unavailable'), uri, { subtitle, - subtitle_lines: 0, - activatable: true, + iconName: 'dialog-warning-symbolic', }); - row.add_prefix(new Gtk.Image({ icon_name: 'dialog-warning-symbolic' })); - row.add_suffix(new Gtk.Image({ icon_name: 'adw-external-link-symbolic' })); - row.connect('activated', () => Gio.AppInfo.launch_default_for_uri(uri, null)); + row.subtitle_lines = 0; group.add(row); }, cancellable); } @@ -218,6 +224,7 @@ export default class GnomeShellCastPreferences extends ExtensionPreferences { _addGeneralPage(window, settings) { const locationLabels = [_('Top bar'), _('Quick settings')]; + const castModeLabels = [_('Mirror screen'), _('New virtual monitor')]; const page = new Adw.PreferencesPage({ title: _('General'), @@ -225,6 +232,20 @@ export default class GnomeShellCastPreferences extends ExtensionPreferences { }); window.add(page); + const castingGroup = new Adw.PreferencesGroup({ title: _('Casting') }); + page.add(castingGroup); + + const castModeRow = new Adw.ComboRow({ + title: _('Cast source'), + subtitle: _('A new virtual monitor needs a Wayland session'), + model: new Gtk.StringList({ strings: castModeLabels }), + selected: CAST_MODE_VALUES.indexOf(settings.get_string('cast-mode')), + }); + castModeRow.connect('notify::selected', (row) => { + settings.set_string('cast-mode', CAST_MODE_VALUES[row.selected]); + }); + castingGroup.add(castModeRow); + const menuGroup = new Adw.PreferencesGroup({ title: _('Menu') }); page.add(menuGroup); @@ -240,6 +261,11 @@ export default class GnomeShellCastPreferences extends ExtensionPreferences { menuGroup.add(locationRow); } + // The docs live in the repository, so a link is the repo URL plus a path. + _docsUri(path) { + return `${this.metadata.url}/blob/main/${path}`; + } + _addAboutPage(window) { const url = this.metadata.url; @@ -259,13 +285,6 @@ export default class GnomeShellCastPreferences extends ExtensionPreferences { }), ); - const linkRow = (title, uri) => { - const row = new Adw.ActionRow({ title, subtitle: uri, activatable: true }); - row.add_suffix(new Gtk.Image({ icon_name: 'adw-external-link-symbolic' })); - row.connect('activated', () => Gio.AppInfo.launch_default_for_uri(uri, null)); - return row; - }; - group.add(linkRow(_('Homepage'), url)); group.add(linkRow(_('Report an issue'), `${url}/issues`)); @@ -274,6 +293,6 @@ export default class GnomeShellCastPreferences extends ExtensionPreferences { description: _('Common problems and their fixes'), }); page.add(help); - help.add(linkRow(_('Troubleshooting guide'), `${url}/blob/main/TROUBLESHOOTING.md`)); + help.add(linkRow(_('Troubleshooting guide'), this._docsUri('TROUBLESHOOTING.md'))); } } diff --git a/extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml b/extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml index 3a082d8..3cf23e3 100644 --- a/extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml +++ b/extension/gnome-shell-cast@oxygenws.com/schemas/org.gnome.shell.extensions.gnome-shell-cast.gschema.xml @@ -56,6 +56,15 @@ Pixel format The raw video format handed to the encoder. "auto" offers both and lets negotiation pick whichever the chosen encoder accepts. Forcing a format restricts casting to encoders that accept it, which on most systems means forcing the encoder type too. + + + + + + 'mirror' + What casting the screen sends + Either a mirror of a display you already have, or a new monitor created for the cast and removed when it ends. A new monitor needs a Wayland session. + false Show cast details diff --git a/extension/gnome-shell-cast@oxygenws.com/stylesheet.css b/extension/gnome-shell-cast@oxygenws.com/stylesheet.css index 3c09179..8877035 100644 --- a/extension/gnome-shell-cast@oxygenws.com/stylesheet.css +++ b/extension/gnome-shell-cast@oxygenws.com/stylesheet.css @@ -103,3 +103,53 @@ border-color: rgba(0, 0, 0, 0.45); background-color: rgba(0, 0, 0, 0.22); } + +/* + * Mirror-screen / new-monitor selector above the device list. Two St.Buttons in + * toggle mode, so the selected one is `:checked` rather than carrying a class. + */ +.gsc-mode-button { + padding: 6px 10px; + margin: 0 3px; + color: #ffffff; + border: 2px solid rgba(255, 255, 255, 0.18); + border-radius: 9px; + background-color: rgba(255, 255, 255, 0.07); + transition-duration: 150ms; +} + +.gsc-mode-button:hover { + border-color: rgba(255, 255, 255, 0.4); + background-color: rgba(255, 255, 255, 0.17); +} + +/* Selected mode: the user's own accent colour, as the active device uses. */ +.gsc-mode-button:checked { + color: #ffffff; + color: -st-accent-fg-color; + border-color: #3584e4; + border-color: -st-accent-color; + background-color: #3584e4; + background-color: -st-accent-color; +} + +.gsc-mode-button:focus { + border-color: #3584e4; + border-color: -st-accent-color; +} + +.gsc-light .gsc-mode-button { + color: #000000; + border-color: rgba(0, 0, 0, 0.18); + background-color: rgba(0, 0, 0, 0.06); +} + +.gsc-light .gsc-mode-button:hover { + border-color: rgba(0, 0, 0, 0.35); + background-color: rgba(0, 0, 0, 0.14); +} + +.gsc-light .gsc-mode-button:checked { + color: #ffffff; + color: -st-accent-fg-color; +}