更有意义Rstudio的完整窗口标题

更有意义Rstudio的完整窗口标题,r,ubuntu,rstudio,x11,arbtt,R,Ubuntu,Rstudio,X11,Arbtt,我在Ubuntu(16.04)下使用R studio(1.0.143版),窗口标题只显示一个非常缺乏信息的“RStudio” 我希望至少有当前选项卡的名称,或者理想情况下是与此选项卡对应的文件的完整路径。在Windows下,完整路径似乎出现在窗口标题中 这可能有助于在窗口之间导航,但我的主要用途是用于跟踪在每个软件中花费的时间的软件(如arbt)。目前我只能知道我上周在R工作室花了大约20个小时,但我想知道在哪些文件/项目中 这里有一个部分解决方案,但如果有人知道如何获得当前选项卡的完整名称和

我在Ubuntu(16.04)下使用R studio(1.0.143版),窗口标题只显示一个非常缺乏信息的“RStudio”

我希望至少有当前选项卡的名称,或者理想情况下是与此选项卡对应的文件的完整路径。在Windows下,完整路径似乎出现在窗口标题中

这可能有助于在窗口之间导航,但我的主要用途是用于跟踪在每个软件中花费的时间的软件(如
arbt
)。目前我只能知道我上周在R工作室花了大约20个小时,但我想知道在哪些文件/项目中


这里有一个部分解决方案,但如果有人知道如何获得当前选项卡的完整名称和路径,我仍然感兴趣


基于@Spacedman reply,我现在可以通过在安装
wmctrl
后将这几行添加到
/usr/lib/R/etc/Rprofile.site
中,获得窗口标题中的工作目录路径(而不是脚本名):

RStudio_title <- function(...){system(paste0('wmctrl -r "RStudio" -N "RStudio - @ ', getwd(), '"')) ; TRUE}
addTaskCallback(RStudio_title, data = NULL, name = character())
system('wmctrl -F -r "RStudio" -N "RStudio - @ "')
问题是Rprofile.site中的
system
R函数调用似乎被Rstudio忽略(而它在Rstudio外部从R调用时工作)


事实上,Rprofile.site中的
system
命令不会被忽略。它被执行,但由于任何原因,输出未显示在Rstudio R控制台中(例如,如果您键入
system(“echo'Hello World'))
)。请参见
system('wmctrl-F-r“RStudio”-N“RStudio-@')
不起作用的原因可能是在执行此命令时(当r从Rprofile.site获取资源时),RStudio窗口尚未出现

我现在就是这样做的,包括@Spacedman的建议(即使用十六进制ID和
if(interactive())
)。即使已经有另一个打开的窗口标题中有“RStudio”,它也可以正常工作。如果从Rstudio重新启动R,它也可以工作。如果执行
rm(list=ls())
(我个人从不这样做,我更喜欢重新启动R),它将被破坏(带有一条消息)

if(交互式()){
#函数捕获R studio窗口的十六进制ID

RStudio_ID安装
wmctrl
,然后您可以将称为“计算器”的标题更改为“Fnord”,如下所示:

 xcalc &
 wmctrl -r Calculator -N "Fnord"
因此,您只需要当前标题(“RStudio”?)或其ID(可通过
wmctrl-l
获取),然后就可以了

您可以从R中的
system
调用此函数,并从
getwd()
粘贴当前工作目录。您可以将此函数挂接到R中,以便在每个命令行上执行,至少在普通R上,使用
addTaskCallback
,但RStudio可能会使用此函数

回调示例:

定义一个函数:

> f = function(...){cat("Hello\n");TRUE}
将其添加到任务回调:

> addTaskCallback(f, data = NULL, name = character())
1 
1 
Hello
现在R在每个命令后都会说“你好”:

> ls()
[1] "f"
Hello

更改
f
以使用类似
system(paste0(“wmctrl…”)的东西设置标题。

谢谢你的破解。它没有提供脚本名称,并且有一些缺陷(请参见我编辑的问题),但它已经比只使用“RStudio”好得多了作为标题。1.您可以使用
wmctrl-i-r 0x04c0005c-N MyRStudio
通过其唯一的十六进制ID而不是窗口标题来匹配窗口,正如您所说,窗口标题可能不是唯一的。不确定(尚未确定)应用程序如何计算其ID,但您可以使用
wmctrl-l
构建菜单并让用户选择?2.不确定为什么它在Rprofile.site中不起作用。RStudio尚未完全启动,或者尚未正确设置其窗口名,或者窗口管理器尚未映射它。如果您在Rprofile.si中放置
wmctrl-l
它是否显示RStudio窗口存在?3.您可能应该将所有这些内容隐藏在
if(interactive())后面
block,这样你就不会破坏在RStudio之外运行的R代码。1.每次计算机启动时,十六进制ID都会改变。我可以使用grep和/或sed来捕获正确的代码,但我被卡住了,因为R studio不会执行Rprofile.site2中的
system
命令。如果我把
system(“echo'Hello world')
在Rprofile.site中,我在启动时没有来自Rstudio的hello world消息,而在从shell启动R时有一条。也许这是另一个SO问题?
> ls()
[1] "f"
Hello