How can I get the screen resolution in R
You could use commad-line interface to WMI
> system("wmic desktopmonitor get screenheight")ScreenHeight 900
You could capture result with system
(scr_width <- system("wmic desktopmonitor get screenwidth", intern=TRUE))# [1] "ScreenWidth \r" "1440 \r" "\r"(scr_height <- system("wmic desktopmonitor get screenheight", intern=TRUE))# [1] "ScreenHeight \r" "900 \r" "\r"
With multiple screens, the output is, e.g.,
[1] "ScreenWidth \r" "1600 \r" "1600 \r" ""
We want all but the first and last values, converted to numbers
as.numeric(c( scr_width[-c(1, length(scr_width))], scr_height[-c(1, length(scr_height))]))# [1] 1440 900
It's easy with JavaScript: you just do
window.screen.heightwindow.screen.width
You can call JavaScript from R using the SpiderMonkey package from OmegaHat.
You could also solve this with Java, and use the rJava package to access it.
library(rJava).jinit()toolkit <- J("java.awt.Toolkit")default_toolkit <- .jrcall(toolkit, "getDefaultToolkit")dim <- .jrcall(default_toolkit, "getScreenSize")height <- .jcall(dim, "D", "getHeight")width <- .jcall(dim, "D", "getWidth")
Accepted answer does not work on Windows 8 and later.
Use this:
system("wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value")
To get you screen resolution in a vector, you can implement it as:
suppressWarnings( current_resolution <- system("wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:value", intern = TRUE) %>% strsplit("=") %>% unlist() %>% as.double() ) current_resolution <- current_resolution[!is.na(current_resolution)]
Now you'll have a vector with length 2:
> current_resolution[1] 1920 1080