Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解

news2024/11/25 1:07:36

Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解

——2024-02-11

code review!

文章目录

  • Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解
      • `xhost +` 的作用
      • `xhost` 与 Docker 的关系
    • -e GDK_SCALE 和 -e GDK_DPI_SCALE详解
      • `GDK_SCALE`
      • `GDK_DPI_SCALE`

xhost 是一个用来控制 X 服务器图形界面访问权限的工具。X 服务器是跑在类Unix操作系统上的软件,它管理和提供图形界面服务。 xhost 允许用户指定哪些用户和主机可以显示图形界面上的窗口。

xhost + 的作用

使用 xhost + 命令可以让任何用户从任何主机连接到 X 服务器。这个命令会关闭 X 服务器的访问控制,这意味着任何人都没有限制地访问你的 X 服务器。出于安全考虑,这通常不是推荐的操作,因为它会使你的 X 会话对任何人开放,并可能导致安全风险。

正确的用法通常是使用 xhost 加上特定的用户名或主机名来允许访问,例如:

xhost +SI:localuser:username

这条命令将允许本地用户 username 访问 X 服务器。

或者只允许特定的远程主机访问:

xhost +hostname

这条命令允许来自 hostname 的用户访问 X 服务器。

xhost 与 Docker 的关系

在使用 Docker 容器进行图形界面应用的开发时,有时需要将容器内运行的图形应用显示到宿主机的屏幕上。Docker 容器通常是隔离的,并没有直接访问宿主机的 X 服务器的权限。

要实现这一点,你需要在宿主机上允许容器访问 X 服务器。一个常见的做法是在宿主机上运行 xhost + 来禁用访问控制,然后在启动 Docker 容器时,将 X 服务器的 Unix 套接字共享给容器,这通常通过挂载一个卷来实现:

docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw my_docker_image

在这个命令中:

  • -e DISPLAY 设置环境变量 DISPLAY,让容器知道如何连接 X 服务器。
  • -v /tmp/.X11-unix:/tmp/.X11-unix:rw 将宿主机的 X 服务器 Unix 套接字目录挂载到容器中,这样容器就可以通过这个套接字与宿主机的 X 服务器通信。

为了安全起见,在完成图形界面应用的运行之后,应该通过运行 xhost - 命令来重新启用访问控制。

要注意的是,这种方法存在安全隐患,因为它允许任何应用接入你的 X 服务器。更安全的方法是只授权特定的 Docker 容器访问 X 服务器,而不是使用 xhost + 完全关闭访问控制。在 Docker 的场景下,可以通过设置特定的环境变量或者使用更细粒度的访问控制来实现这一点。

-e GDK_SCALE 和 -e GDK_DPI_SCALE详解

在使用 GTK+ (GIMP Toolkit) 应用程序时,环境变量 GDK_SCALEGDK_DPI_SCALE 可以用来调整应用程序界面的缩放级别,这在高分辨率显示屏(如 HiDPI 或 4K 显示器)上特别有用。这两个环境变量通常在启动 GTK+ 应用程序时设置,以确保应用程序的用户界面元素以合适的大小和清晰度显示。

GDK_SCALE

GDK_SCALE 环境变量用于整数缩放。它会按照指定的整数比例放大 GTK+ 程序的所有视觉元素(如窗口、按钮和文字)。例如,如果你在一个高 DPI 的显示器上发现应用程序的界面太小了,你可以通过设置 GDK_SCALE2 来使得所有的 UI 元素放大两倍。

GDK_SCALE=2 my-gtk-application

或者在使用 docker run 时:

docker run -e GDK_SCALE=2 my_docker_image

GDK_DPI_SCALE

GDK_DPI_SCALE 环境变量用于微调 DPI 缩放。不同于 GDK_SCALE 的整数缩放,GDK_DPI_SCALE 可以接受浮点数值,允许更细粒度的缩放控制。这对于那些整数缩放不够精细,或者用户想要稍微调整界面大小的情况非常有用。

比如,如果你想要让界面元素比正常大一点,但是又不想翻倍,你可以设置一个介于 1 到 2 之间的值:

GDK_DPI_SCALE=1.5 my-gtk-application

或者在使用 docker run 时:

docker run -e GDK_DPI_SCALE=1.5 my_docker_image

请注意,不是所有的 GTK+ 应用都会响应 GDK_SCALEGDK_DPI_SCALE 环境变量。应用程序需要使用相应的 GTK+ 版本并且开发者需要实现了适当的支持。此外,这两个变量可能会与其他缩放设置相互作用,例如 GNOME 的缩放设置,因此你可能需要进行一些尝试,以找到最适合你显示器和应用程序的设置。

在 Docker 环境中使用这些变量时,需要确保它们通过 -e 选项传递给容器,这样在容器内运行的应用程序就可以识别并应用这些缩放设置。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1445374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java集合 LinkedList

目录 LinkedList实例 LinkedList LinkedList是Java中的一个重要的数据结构,它实现了List接口,提供了链表数据结构的实现。LinkedList类中包含了各种常用的链表操作,如添加、删除、查找等。 LinkedList的特点是元素可以动态地添加到链表的任…

【转载】原生社区交友婚恋视频即时通讯双端APP源码 ONE兔2.0版

原生社区交友婚恋视频即时通讯双端APP源码下载ONE兔2.0版 包含后端、H5源码源码,Android源码,IOS源码

恒创科技:怎么看云主机的性价比

随着云计算技术的不断发展,云主机已经成为越来越多企业和个人用户的首选计算资源。然而,在选择云主机时,性价比是一个非常重要的考虑因素。那么,怎么看云主机的性价比呢? 通常来说,云主机的成本主要包括硬…

【调试】pstore原理和使用方法总结

什么是pstore pstore最初是用于系统发生oops或panic时,自动保存内核log buffer中的日志。不过在当前内核版本中,其已经支持了更多的功能,如保存console日志、ftrace消息和用户空间日志。同时,它还支持将这些消息保存在不同的存储…

模拟发送 Ctrl+Alt+Del 快捷键

目录 前言 一、在 XP 系统上模拟 SAS 二、在不低于 Vista 的系统上模拟 SAS 2.1 一些细节 2.2 实现原理和应用 三、完整实现代码和测试 3.1 客户端控制台程序 3.2 服务程序 3.3 编译&测试程序 四、总结&更新 参考文献 前言 对于开启了安全登陆的窗口工作站…

FFmpeg中的Color颜色参数解析、转码和HDR

前言 视频中帧的颜色信息非常重要,表示着编码时用到的标准,意味着解码时也要对应上,或者要使用正确的转换函数,否则就会带来色差问题。 关于FFmpeg中的颜色参数,有下边几个重要的结构体: 颜色参数相关的结…

基于SSM的图书馆预约占座系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的图书馆预约占座系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring…

seatunnel数据集成(四)转换器使用

seatunnel数据集成(一)简介与安装seatunnel数据集成(二)数据同步seatunnel数据集成(三)多表同步seatunnel数据集成(四)连接器使用 seatunnel除了丰富的连接器类型,其转换…

【大厂AI课学习笔记】【1.6 人工智能基础知识】(3)神经网络

深度学习是机器学习中一种基于对数据进行表征学习的算法。观测值(例如一幅草莓照片)可以使用 多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。 深度学习的最主要特征是使用神经网络作为计算模型。神经网络模型 …

python+flask+django医院预约挂号病历分时段管理系统snsj0

技术栈 后端:python 前端:vue.jselementui 框架:django/flask Python版本:python3.7 数据库:mysql5.7 数据库工具:Navicat 开发软件:PyCharm . 第一,研究分析python技术&#xff0c…

《UE5_C++多人TPS完整教程》学习笔记8 ——《P9 访问 Steam(Acessing Steam)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P9 访问 Steam(Acessing Steam)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者&…

使用UMAP降维可视化RAG嵌入

大型语言模型(LLMs)如 GPT-4 已经展示了出色的文本理解和生成能力。但它们在处理领域特定信息方面面临挑战,比如当查询超出训练数据范围时,它们会产生错误的答案。LLMs 的推理过程也缺乏透明度,使用户难以理解达成结论…

Win10截图的四种方式

截图不一定要依靠通讯软件,现在系统自己就带有这些功能。 1.Win Shift S组合键:选择微信截图,部分截图,随心所欲; 2.Win W组合键:呼出屏幕右侧的工作区,选择屏幕草图,支持裁剪、编辑…

flask+python高校学生综合测评管理系统 phl8b

系统包括管理员、教师和学生三个角色; 。通过研究,以MySQL为后端数据库,以python为前端技术,以pycharm为开发平台,采用vue架构,建立一个提供个人中心、学生管理、教师管理、课程类型管理、课程信息管理、学…

网络安全工程师技能手册(附学习路线图)

关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 安全是互联网公司的生命,也是每位网民的基本需求。现在越来越多的人对网络安全感兴趣,愿意投奔到网络安全事业之中,这是一个很好的现象。 很多对网络安全感…

线程池7个参数描述

所谓的线程池的 7 大参数是指&#xff0c;在使用 ThreadPoolExecutor 创建线程池时所设置的 7 个参数&#xff0c;如以下源码所示&#xff1a; public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable&…

游泳时可以听歌的耳机有哪些?戴游泳耳机有哪些好处?

游泳和跑步在某种程度上相似&#xff0c;特别是在短距离冲刺时&#xff0c;大脑似乎变得空白&#xff0c;而在中长距离的有氧运动中&#xff0c;身体感到疲劳&#xff0c;但大脑却异常清晰&#xff0c;时间却显得格外漫长。如何打发时间&#xff0c;让游泳锻炼变得不无聊&#…

「深度学习」dropout 技术

一、工作原理 1. 正则化网络 dropout 将遍历网络的每一层&#xff0c;并设置消除神经网络中节点的概率。 1. 每个节点保留/消除的概率为0.5: 2. 消除节点&#xff1a; 3. 得到一个规模更小的神经网络&#xff1a; 2. dropout 技术 最常用&#xff1a;反向随机失活 "…

Ubuntu Desktop - Terminal 输出全部选中 + 复制

Ubuntu Desktop - Terminal 输出全部选中 复制 1. Terminal2. Terminal 最大化3. Edit -> Select All4. Copy & PasteReferences 1. Terminal 2. Terminal 最大化 3. Edit -> Select All 4. Copy & Paste Edit -> Copy or Shift Ctrl C Edit -> Paste…

线程-线程的创建方式与线程池基础知识

创建线程有四种方式&#xff0c;继承Thread类、实现Runnable接口、实现Callable接口、线程池创建线程&#xff0c;常用的还是线程池创建线程。 1.继承Thread类 自定义类MyThread&#xff08;叫什么都行&#xff09;去extends Thread 重写里面的run方法&#xff0c;new MyThr…