如何像在Windows中一样设置Ubuntu终端的启动坐标?
在Ubuntu中让终端窗口启动于自定义坐标的方法
Ubuntu下不同终端模拟器的启动参数略有不同,下面分几种常见场景给出实现方式:
一、直接启动终端时指定位置
GNOME Terminal(Ubuntu默认终端)
用--geometry参数控制窗口位置,格式是[宽x高]+X+Y,X和Y就是你要的坐标。如果不需要指定窗口大小,直接写坐标就行:
gnome-terminal --geometry +100+50
要是想同时设置窗口尺寸(比如80列×24行):
gnome-terminal --geometry 80x24+100+50
Konsole(KDE桌面终端)
同样用--geometry参数,用法和GNOME Terminal一致:
konsole --geometry +100+50
xfce4-terminal(Xfce桌面终端)
参数还是--geometry,写法相同:
xfce4-terminal --geometry +100+50
二、从C++程序里启动终端并定位
如果你的需求是用C++程序触发终端窗口启动,同时指定坐标,有两种常用方式:
方式1:用system()函数快速实现
直接调用终端的启动命令,-e参数用来指定终端启动后要运行的你的C++程序:
#include <cstdlib> int main() { // 启动GNOME Terminal并定位到x=100,y=50,同时运行你的程序 system("gnome-terminal --geometry +100+50 -e './your_cpp_executable'"); // 用Konsole的话换成这条 // system("konsole --geometry +100+50 -e './your_cpp_executable'"); return 0; }
方式2:用execvp()函数(更安全)
system()会调用shell,有注入风险,用execvp更稳妥,配合fork创建子进程:
#include <unistd.h> #include <sys/wait.h> #include <stdio.h> int main() { pid_t pid = fork(); if (pid == 0) { // 子进程中启动终端 const char* args[] = {"gnome-terminal", "--geometry", "+100+50", "-e", "./your_cpp_executable", nullptr}; execvp("gnome-terminal", (char* const*)args); // 如果execvp执行失败,打印错误 perror("Failed to launch terminal"); _exit(1); } else if (pid > 0) { // 父进程等待子进程完成 wait(nullptr); } else { perror("Fork failed"); return 1; } return 0; }
三、设置终端默认启动位置(一劳永逸)
如果想让终端每次启动都固定在这个位置,直接改配置就行:
- GNOME Terminal:打开终端,点顶部菜单栏的
编辑→首选项→配置文件,选中你用的配置文件,点编辑,在窗口选项卡选初始窗口位置为自定义,输入X=100、Y=50即可。 - Konsole:打开
设置→编辑当前配置文件→窗口,设置初始位置为自定义坐标。
内容的提问来源于stack exchange,提问作者JamesQReader
相关产品推荐
相关产品推荐

