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

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 选项传递给容器,这样在容器内运行的应用程序就可以识别并应用这些缩放设置。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8种基本类型的包装类(与String的转换)

java针对8种基本数据类型,定义了相应的引用类型:包装类(封装类),有了类的特点,就能调用类中的方法,java才是真正的面向对象。 基本数据类型 包装类byte Byteshort Shortint Integerlong Longfloat Floa…

操作系统——内存管理(附带Leetcode算法题LRU)

1.内存管理主要用来干什么? 操作系统的内存管理主要负责内存的分配与回收、内存扩充(虚拟技术)、地址转换(逻辑-物理)、内存保护(保证各进程在自己的内存空间运行,不会越界访问)..... 2.什么是内存碎片? 内存碎片是内存的申请和释放产生的…

C#,纽曼-尚克斯-威廉士素数(Newman Shanks Williams prime)的算法与源代码

1 NSW素数 素数是纽曼-尚克斯-威廉士素数(Newman-Shanks-Williams prime,简写为NSW素数)当且仅当它能写成以下的形式: 1981年M. Newman、D. Shanks和H. C. Williams在研究有限集合时,率先描述了NSW素数。 首几个NSW素…

LeetCode Python - 9.回文数

文章目录 题目答案运行结果 题目 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如&am…

CentOS在VMWare中扩容

1.相关概念 物理卷:简称PV,逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,一块硬盘,或多块硬盘,如/dev/sdb。 卷组:简称VG,建立在物理卷之…

解决 postman测试接口报404 Not Found

JDK版本:jdk17 IDEA版本:IntelliJ IDEA 2022.1.3 文章目录 问题描述原因分析解决方案 问题描述 当我使用postman测试接口时,报了 404 Not Found 的错误,报错截图如下所示 但我的后端程序中已经定义了该接口,如下所示 …

视频直播系统架构的设计与实现

视频直播系统作为一种实时性强、用户互动性高的应用,其架构设计至关重要。本文将介绍如何设计和实现一个稳定、高性能的直播系统架构,以提供良好的用户体验和可靠的服务。 1. 系统架构概述 - 介绍视频直播系统的整体架构,包括客户端、服务…

Java安全 CC链1分析(Lazymap类)

Java安全 CC链1分析 前言CC链分析CC链1核心LazyMap类AnnotationInvocationHandler类 完整exp: 前言 在看这篇文章前,可以看下我的上一篇文章,了解下cc链1的核心与环境配置 Java安全 CC链1分析 前面我们已经讲过了CC链1的核心ChainedTransf…

Structured Streaming

目录 一、概述 (一)基本概念 (二)两种处理模型 (三)Structured Streaming和Spark SQL、Spark Streaming关系 二、编写Structured Streaming程序的基本步骤 (一)实现步骤 &…

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

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

Leetcode2842. 统计一个字符串的 k 子序列美丽值最大的数目

Every day a Leetcode 题目来源:2842. 统计一个字符串的 k 子序列美丽值最大的数目 解法1:哈希 数学 提示: 统计每个字符出现次数的个数,然后从大到小遍历次数 c 及其个数 num。 所有方案数相乘即为答案。 如果 k 太大&#…

【大厂AI课学习笔记】【1.6 人工智能基础知识】(4)深度学习和机器学习

关于深度学习和机器学习,出来包含关系之外,还有如上总结的知识点。 分别从特征处理、学习方法、数据依赖、硬件依赖等4个方面,进行了总结。 从特征处理上看:深度学习从数据中习得高级特征,并自行创建新的特征。这比普…

【AI绘图】初见·小白入门stable diffusion的初体验

首先,感谢赛博菩萨秋葉aaaki的整合包 上手 stable diffusion还是挺好上手的(如果使用整合包的话),看看界面功能介绍简单写几个prompt就能生成图片了。 尝试 我在网上找了一张赛博朋克边缘行者Lucy的cos图,可能会侵…

[ai笔记3] ai春晚观后感-谈谈ai与艺术

欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第3篇分享! 今天我们不聊技术,只聊感受! 1 关于ai春晚 期待许久的ai春晚,但是等初一晚上观看的时候,或多或少还是有些失望。 首先是观看人数…

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标 介绍准备工作数据准备计算移动平均线计算MACD指标结果展示完整代码演示 介绍 在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来…

《UE5_C++多人TPS完整教程》学习笔记7 ——《P8 为项目配置 Steam(Configuring A Project for Steam)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P8 为项目配置 Steam(Configuring A Project for Steam)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&…

数据结构——6.1 图的基本概念

第六章 图 6.1 图的基本概念 概念 图的概念:G由点集V和边集E构成,记为G(V,E),边集可以为空,但是点集不能为空 注意:线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集…

《动手学深度学习(PyTorch版)》笔记8.5

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

基于Linux操作系统的Docker容器安装MySQL随笔

1、在Linux上安装Docker容器 cd /etc/yum.repos.d/ curl -O https://download.docker.com/linux/centos/docker-ce.repo sed -i s/$releasever/8/g docker-ce.repo yum install -y docker-ce 2、修改Docker默认镜像仓库,然后启动Docker容器 sudo mkdir -p /etc/do…

栈和队列(Stack、Queue)

目录 前言: 栈: 栈的方法: 栈的源码: 队列: Queue和Deque接口: 队列的一些方法: Queue源码: 双端队列: 总结: 前言: 栈其实就是吃了吐…