错误:X11 上的剪贴板要求配置 DISPLAY envvar

bre*_*auv 7 r shiny

我正在编写一个shinyapp,我想在其中放置一个操作按钮来复制一些代码(我正在使用shinyace)。当我在新会话中第一次运行我的应用程序时,它运行良好。但是当我关闭它并再次运行时,出现错误:

Error in : Clipboard on X11 requires that the DISPLAY envvar be configured
Run Code Online (Sandbox Code Playgroud)

我安装了xclipxsel但问题仍然存在。当我使用 Shinyapps.io 部署应用程序时,每次想要使用复制到剪贴板功能时都会断开连接。

这是我的sessionInfo()capabilities()

R version 3.6.1 (2019-07-05)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1

locale:
 [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C               LC_TIME=fr_FR.UTF-8       
 [4] LC_COLLATE=fr_FR.UTF-8     LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
 [7] LC_PAPER=fr_FR.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] rsconnect_0.8.13 clipr_0.6.0      shinyAce_0.4.0   shiny_1.3.2     

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1      packrat_0.5.0   digest_0.6.20   later_0.8.0     bitops_1.0-6   
 [6] mime_0.7        R6_2.4.0        jsonlite_1.6    xtable_1.8-4    magrittr_1.5   
[11] rlang_0.4.0     rstudioapi_0.10 promises_1.0.1  tools_3.6.1     RCurl_1.95-4.12
[16] httpuv_1.5.1    compiler_3.6.1  askpass_1.1     htmltools_0.3.6 openssl_1.4 
Run Code Online (Sandbox Code Playgroud)
jpeg         png        tiff       tcltk         X11        aqua    http/ftp     sockets 
TRUE        TRUE        TRUE        TRUE        TRUE       FALSE        TRUE        TRUE 
     libxml        fifo      cledit       iconv         NLS     profmem       cairo         ICU 
       TRUE        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE        TRUE 
long.double     libcurl 
       TRUE        TRUE 
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

我还在这里问:https://community.rstudio.com/t/error-in-clipboard-on-x11-requires-that-the-display-envvar-be-configured/34894

Fer*_*oao 1

我建议在自定义函数中使用 xclip,因为我不知道如何将DISPLAYvar传递给clipr::write_clip()

clipboard<-function(x, sep="\t", row.names=FALSE, col.names=F){
  con <- pipe("xclip -selection clipboard -i  -display :1", open="w") # note the 1 here
  #writeChar(x, con)  # for strings
  write.table(x, con, sep=sep, row.names=row.names, col.names=col.names) # for table
  close(con)
}
Run Code Online (Sandbox Code Playgroud)

我的经验是:我的rstudio服务器必须使用linux终端使用的显示器。

当我输入linux终端时

echo $DISPLAY
Run Code Online (Sandbox Code Playgroud)

给了我:1,这有效:

echo 1235 | xclip -sel clip
Run Code Online (Sandbox Code Playgroud)

但是在 Rstudio-server 内部,它的系统终端$DISPLAY给了我:0并且 xclip 线路失败。DISPLAY=:1仅在更改为 RStudio-server 系统终端或使用-display上述函数中的标志后,才可在 RStudio-server 中使用

事实上,当你第一次使用它时,它可以工作,这让我建议使用一个计数器来增加每次显示的数量,看看会发生什么。