wsl的图像化实现,在wsl中启动浏览器

news2024/11/12 7:49:56

最近在学习wsl,原本我看以前的教程说wsl和vmware的区别有一点就是,wsl只能使用命令行,而vmware可以实现图像化,结果我在 microsoft 官方发现现在的wsl 2已经实现了 GUI 界面,所以就来记录一下吧。

wsl 的 GUI 实现

首先我已经在 microsoft store 中下载了 wsl 版的 Ubuntu。

依次输入如下命令:

wsl -d Ubuntu
sudo apt update
sudo apt upgrade

安装 Gedit

Gedit 是 GNOME 桌面环境的默认文本编辑器。

sudo apt install gedit -y

安装 GIMP

GIMP 是一种免费的开源光栅图形编辑器,用于图像操作和图像编辑、自由形态绘图、不同图像文件格式之间的转码,以及更专业的任务。

sudo apt install gimp -y

安装 Nautilus

Nautilus 也称为 GNOME Files,是 GNOME 桌面的文件管理器。 (类似于 Windows 文件资源管理器)。

sudo apt install nautilus -y

安装 VLC

VLC 是一种免费的开源跨平台多媒体播放器和框架,可播放大多数多媒体文件。

sudo apt install vlc -y

安装 X11 应用

X11 是 Linux 窗口管理系统,这是随它一起提供的各种应用和工具的集合,例如 xclock、xcalc 计算器、用于剪切和粘贴的 xclipboard、用于事件测试的 xev 等。

sudo apt install x11-apps -y

安装适用于 Linux 的 Google Chrome

  1. 使用 wget 下载当前最新稳定版 :sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
  2. 解压:sudo dpkg -i google-chrome-stable_current_amd64.deb
  3. 修复包:sudo apt install --fix-broken -y
  4. 配置包:sudo dpkg -i google-chrome-stable_current_amd64.deb

之后输入 google-chrome 即可启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLI8DC1x-1681721055800)(:/9431b7fba7cc48aa93e6cb21bb8fe5e2)]

安装适用于 Linux 的 Microsoft Edge

执行下列命令下载:

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-beta.list'
sudo rm microsoft.gpg

安装 Edge:

sudo apt update
sudo apt install microsoft-edge-beta

然后输入 microsoft-edge 即可启动。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-smsfHOmU-1681721055802)(:/20c52b7d9ae4422a8bdce296fa867add)]

安装适用于 Linux 的 FireFox

首先下载 VcXsrv ,链接:https://sourceforge.net/projects/vcxsrv/

VcXsrv 是一个Windows X server,它可以在Windows上运行Linux GUI应用程序。它的工作原理是将Linux GUI应用程序的图形界面通过X11协议传输到Windows上。

然后启动 VcXsrv :

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buQyJ0pD-1681721055802)(:/7e6ebcafbb124b14baaac976cfb13b8c)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsnEQ6Ap-1681721055803)(:/c8b157e4cd894468bca8609ba6e7f558)]

第三个界面中,可以勾选第三项或者输入 -ac

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vgXPsYW5-1681721055804)(:/b2b36b79e08a4fa8958ce2cb2dad9b2c)]

打开后会是一个黑色的屏幕,暂时不管。

然后在 ubuntu 中输入命令下载 xfce4 和 firefox :

sudo apt update
sudo apt install xfce4
sudo apt install firefox

然后输入 vim ~/.bashrc 修改一些配置,在最后添加如下信息:

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

由于每次启动 wsl 的 ip 地址都可能会发生变动,因此需要如上命令实现自动获取目前的 wsl 使用的 ip 地址,从而能够实现与 xfce4 连接。

再输入如下命令:

source ~/.bashrc

那么启动 firefox 浏览器就有如下两种方法:

方法一

在 ubuntu 中输入命令 startxfce4 ,可能会出现一些问题,解决方法参考:https://askubuntu.com/questions/1399383/how-to-install-firefox-as-a-traditional-deb-package-without-snap-in-ubuntu-22 。

如果没问题,则可以看到如下画面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lyV6vsnd-1681721055804)(:/7d50c33306ae4577b6ce44f96fb4521a)]

然后在 GUI 中找到 terminal ,输入命令 firefox ,即可启动 firefox :

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffQE53qL-1681721055805)(:/880fb9e5196b4113a4325b44b049fe4b)]

同样可以在这里启动 Chrome 和 Edge:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vNKjTN0m-1681721055806)(:/bcd1c80692ff44a5943ad816e05131de)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrlk2NOs-1681721055806)(:/3a89cfd77880483d93c9dd5ac2e53b92)]

方法二

可以直接在 ubuntu 中输入 firefox ,然后在 xfce4 中就可以看到,但是这种方式显示的 firefox 浏览器并不是完整的,因此还是推荐方法一。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJqEqzdb-1681721055807)(:/bcba26d9bfc34d40bea9410f816961a1)]

Linux GUI其背后实现的原理

看到这里,相信大家应该已经实现了前面的效果了,那么或许大家也会好奇为啥它能从命令行的形式转换到 GUI 的形式,其背后又是怎样实现的?基于此,我特地又找了一些资料,总结如下。

关于在 wsl 实现 GUI 背后的原理,就需要谈到 X Window System ,相关资料来自 Wikipedia。

这是 MIT 与1984年提出的以位图图像显示图形化界面的一套软件规范及协议。像如今一些知名的桌面环境如 GNOME(在GNOME 3.10之后也可以在 Wayland 下运行)便是基于它实现的。

由于X只是工具包及架构规范,本身并无实际参与运作的实体,所以必须有人依据此标准进行开发撰写。如此才有真正可用、可执行的实体,始可称为实现体。

X采用 C/S 的架构模型,由一个X服务器与多个X客户端程序进行通讯,服务器接受对于图形输出(窗口)的请求并反馈用户输入(键盘、鼠标、触摸屏),服务器可能是一个能显示到其他显示系统的应用程序,也可能是控制某个PC的视频输出的系统程序,也可能是个特殊硬件。

X的一大特点在于 “网络透明性”:应用程序(“客户端”应用程序)所执行的机器,不一定是用户本地的机器(显示的“服务器”)。X中所提及的“客户端”和“服务器”等字眼用词也经常与人们一般想定的相反,“服务器”反而是在用户本地端的自有机器上执行,而非是在远程的另一部机器上执行。

服务器和客户端之间的通信协议的运作对计算机网络是透明的:客户端和服务器可以在同一台计算机上,也可以不是,或许其架构和操作系统也不同,但都能运行。客户机和服务器还能够使用安全连接在互联网上安全地通讯。

为了使远端客户程序显示到本地服务器,用户一般需要启动一个终端窗口和到达远端计算机的telnet或者ssh,令其显示到用户计算机,(例如:在运行bash的远端计算机上export DISPLAY=[用户的计算机]:0)然后启动客户端。然后客户端就会连接到本地计算机,并且远端应用程序会显示到本地屏幕并被本地输入设备所控制。与之对应,本地计算机上也可以执行一个连接到远端计算机的小型代理程序,并在该端启动与执行自有需求与指定的应用程序。

因此之前在 wsl Ubuntu 中安装 VcXsrv 之后,需要输入 export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 这一段命令,由于是在 wsl 中运行的 Ubuntu ,因此其对应的 ip 地址是 wsl 中的地址,如下图所示的 ip 地址才是对应的 wsl 中的地址:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BN18yKDV-1681733538632)(:/1b3a7e2285ff45069678bdbcee542e2b)]

与此同时用户计算机的 ip 地址为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P7RPUwah-1681733538633)(:/e109f83602644d2cb787dd89f67c8d4c)]

这两个是不一样的。

而对于 Xfce ,为了管理众多的窗口怎么在屏幕上显示,需要窗口管理器(Window manager)。窗口管理器可以实现一个屏幕上显示多个X程序,实现调整程序大小,标题栏,最大化,最小化,关闭按钮,虚拟桌面这些功能。没有WM,一次只能运行一个GUI程序,而且分辨率锁死,显然很不符合使用习惯。为了实现窗口之间的特效,还需要窗口合成器。窗口合成器可以制造半透明之类的特效。

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

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

相关文章

Vue3.2 + TypeScript + Pinia + Vite4 + Element-Plus + 微前端(qiankun) 后台管理系统模板(已开源)

最终效果 一、前言 Wocwin-Admin,是基于 Vue3.2、TypeScript、Vite、Pinia、Element-Plus、Qiankun(微前端) 开源的一套后台管理模板;同时集成了微前端 qiankun也可以当做一个子应用。项目中组件页面使用了Element-plus 二次封装 t-ui-plus 组件&#xf…

C/C++每日一练(20230420)

目录 1. 存在重复元素 II 🌟 2. 外观数列 🌟🌟 3. 最优路线 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专…

搭建sentry来监控Django项目

sentry搭建 我的环境: centos7,已安装docker和docker compose 下载最新zip包到 /usr/local/ https://github.com/getsentry/self-hosted/tagshttps://github.com/getsentry/self-hosted/tags解压 unzip self-hosted-23.4.0.zip 安装期间会提示是否…

Ceph入门到精通-Cephadm安装Ceph(v17.2.5 Quincy)全网最全版本

Deploy Ceph(v17.2.5 Quincy) cluster to use Cephadm - DevOps - dbaselife Install cephadm Cephadm creates a new Ceph cluster by “bootstrapping” on a single host, expanding the cluster to encompass any additional hosts, and then depl…

【洛谷 P1003】[NOIP2011 提高组] 铺地毯 题解(数组+贪心算法)

[NOIP2011 提高组] 铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n n n 张地毯,编号从 1 1 1 到 n n n。现在将这些地毯按照编号从小…

阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放

现象: 1.用户升级之后,实例上磁盘空间以每分钟1g的速度不断增长, 2.高频dml表的空间不断变大但表数据其实不大,binlog大量产生 3.通过select * from innodb_tablespaces where name like %undo%发现undo 空间上涨较快&#xff0…

常见的九种大数据分析模型

常见的9种大数据分析模型分别为: 事件分析、 属性分析、 渠道分析、 Session分析、 留存分析、 归因分析、 漏斗分析、 路径分析、 分布分析 1、【事件分析】 事件分析,是指用户在 APP、网站等应用上发生的行为,即何人,何时&…

Python OpenCV 蓝图:1~5

原文:OpenCV with Python Blueprints 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最好真…

【AI】NVIDIA CUDA-X AI名词解释

0、NVIDIA CUDA-X AI NVIDIA CUDA-X AI是一套完整的深度学习软件 官网:https://developer.nvidia.com/deep-learning-software https://github.com/NVIDIA:NVIDIA产品、演示、示例、入门教程 1、深度学习训练 Deep Learning Training 1.1、DALI 数据加载库 (DALI)是一…

Redis实现分布式锁原理和Redisson框架实现分布式锁,全网最详细讲解

声明:我的大部分篇幅都讲的分布式锁的原理和实现,如果想直接用Redisson框架实现分布式锁,可以直接翻至最后面 关于分布式锁,适用于并发量特别大的微服务集群,能做到同步的实现资源的获取 我其实没有经过真实项目的分布…

MySQL调优笔记——慢SQL优化记录(1)

上周,项目出现线上问题,在这家公司做的是一个SAAS平台,总用户量大约10万人; 经过排查,发现是SQL问题,导致数据库响应慢,进而拖垮了整体服务; 通常,查询耗时较长的SQL涉…

Java优先级队列-堆

Java优先级队列-堆 💐1. 二叉树的顺序存储💐🎃 1.1 存储方式🎃👻1.2 下标关系👻 🌸2. 堆(heap)🌸🌞2.1 概念🌞🌝2.2 操作-向下调整🌝&…

SER | 语音情绪识别中的TIM-NET_SER项目复现

大家好,今天复现的是目前语音情绪识别的SOTA论文,论文中文名称是 时间建模的重要性: 用于语音情感识别的新型时空情感建模方法 。论文中训练的数据集有英文德语等几个语音情绪识别中常见的语音情绪数据集,以对比精度权重等效果~各…

Android 下一代架构指南:DDD

移动端架构与网站架构的区别是什么?网易新闻客户端的架构演进历程是怎样的?为什么要选择 DDD 思想来指导重构?DDD 落地中应当关注哪些方面?带着这些问题我们来看下文。(节选自网易新闻App架构重构实践) 当…

Kafka吞吐量

目录 kafka的架构和流程 小文件对HDFS影响: 解决办法: kafka的架构和流程 ⾸先Kafka从架构上说分为⽣产者Broker和消费者,每⼀块都进⾏了单独的优化,⽐如⽣产者快是因为数据的批量发送,Broker快是因为分区,分区解决了并发度的问题,⽽且⽂…

媒体宣传的优势与重要性

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传日益成为企业和品牌宣传推广的重要手段,媒体的宣传报道更有权威性,能够帮助品牌进行背书,更有权威性,另外媒体的报道在搜索引擎中…

基于GPS/北斗卫星技术的无盲区车辆调度系统

基于GPS/北斗卫星技术的无盲区车辆调度系统 现代车辆调度系统是一种集全球卫星定位技术(GPS)、地理信息技术(GIS)和现代通信技术于一体的高科技项目。它将移动目标的动态位置(经度与纬度)、时间和状态等信息…

linux环境搭建jmeter、ant、git、Jenkins、jdk、Tomcat

我在搭建环境时,将jmeter、ant、jdk、Tomcat都放在陆opt文件夹下 1.下载jmeter、ant、Jenkins(Jenkins.war包)、jdk、Tomcat Linux环境下安装Jenkins,需要jdk版本大于11 2.环境配置 jdk配置 vim /etc/profile 添加配置信息&am…

飞书接入ChatGPT - 将ChatGPT集成到飞书机器人,直接拉满效率 【飞书ChatGPT机器人】

文章目录 前言环境列表视频教程1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中,使…

LBS找外贸客户 外贸怎么找客户

随着全球贸易的不断发展,越来越多的企业开始寻找更多的客户和销售机会。而随着移动互联网的普及,LBS已经成为了人们生活和工作中不可或缺的一部分。在商业领域中,LBS被广泛应用于定位、导航、营销等方面,为企业提供了更加便捷、精…