# See blogpost for details: # https://www.rostrum.blog/2022/07/08/rproj-dupes/ check_rproj_dupes <- function(speak = FALSE) { os <- .Platform$OS.type if (os == "unix") { ps_out <- system("ps -e", intern = TRUE) ps_rproj <- ps_out[grepl(".Rproj", ps_out)] ps_split <- strsplit(ps_rproj, "\\s") rproj_paths <- lapply(ps_split, function(x) x[grepl(".Rproj$", x)]) rproj_basenames <- lapply(rproj_paths, basename) rproj_dupes <- sort(unlist(rproj_basenames[duplicated(rproj_basenames)])) } if (os == "windows") { stop("Sorry, check_rproj_dupes() doesn't work on Windows yet :-(") } if (length(rproj_dupes) > 0) { if (speak & os == "unix") { dupes_string <- paste(rproj_dupes, collapse = ", ") dupes_string_say <- gsub("\\.Rproj", " dot ar proj ", dupes_string) message <- paste( "say ha, you fool, you have more than one open RStudio Project with", ifelse(length(rproj_dupes) == 1, "this name:", "these names:"), dupes_string_say ) system(message) } warning( "You've got open RStudio Projects with the same name:\n", paste("-", rproj_dupes, collapse = "\n"), "\n", call. = FALSE ) } } check_rproj_dupes() rm(check_rproj_dupes)