From df3a23d5d6f6f1aef887ff19bf82679a453bdc19 Mon Sep 17 00:00:00 2001 From: Lionel Henry Date: Sat, 9 Aug 2025 14:40:16 -0400 Subject: [PATCH] Initialize graphics device on startup --- crates/ark/src/interface.rs | 10 ++++++++++ crates/ark/src/plots/graphics_device.rs | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/ark/src/interface.rs b/crates/ark/src/interface.rs index ef27a089a..5c71706d9 100644 --- a/crates/ark/src/interface.rs +++ b/crates/ark/src/interface.rs @@ -513,6 +513,16 @@ impl RMain { startup::source_user_r_profile(); } + // Initialise graphics device so `grDevices::dev.interactive()` returns `TRUE`. + // See https://github.com/posit-dev/positron/issues/7681. + // Needs to happen _after_ sourcing R profiles so users can override the + // graphics device in Rprofile. + unsafe { + if let Err(err) = graphics_device::ps_graphics_device_impl() { + log::warn!("Can't initialize graphics device: {err:?}"); + } + } + // Start the REPL. Does not return! crate::sys::interface::run_r(); } diff --git a/crates/ark/src/plots/graphics_device.rs b/crates/ark/src/plots/graphics_device.rs index e8409d8d2..ccf2aa0d6 100644 --- a/crates/ark/src/plots/graphics_device.rs +++ b/crates/ark/src/plots/graphics_device.rs @@ -899,7 +899,7 @@ unsafe extern "C-unwind" fn callback_new_page(dd: pGEcontext, dev: pDevDesc) { }); } -unsafe fn ps_graphics_device_impl() -> anyhow::Result { +pub(crate) unsafe fn ps_graphics_device_impl() -> anyhow::Result { // TODO: Don't allow creation of more than one graphics device. // Create the graphics device.