百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

rx:用rust开发的一种现代而简约的像素编辑器

bigegpt 2024-08-04 11:25 10 浏览

rx是一种可扩展,现代且极简的像素编辑器,在设计时非常谨慎,并深受艺术家和黑客的喜爱。它被认为具有尽可能少的UI,而是专注于工作。rx从vi的模态性质中汲取了灵感,围绕命令系统构建,方便好用的命令系统是同类工具中所独有的。本文虫虫给大家介绍这个用rust开发的像素编辑工具。

概述

rx是用rust语言编写的跨平台工具,可以安装在Linux,macOS和Windows上。设计目标是:

最小化。小巧,易于极客化的代码库和依赖项。编辑器应仅包括必要的内容。

美丽。干净,现代的美学风格,专注于细节。

快捷。无明显的输入延迟。在1920x1080的商用硬件上,更新和绘制时间应小于8ms。

可配置和可扩展。应该便于控制工作流程。如果不是内置的,则需要很容易就能扩展编辑器的功能。

资源高效。应尽量减少电池消耗。内存占用空间应该很小。

基于以上目标设置,rx具有下面的特征:

内置的精灵动画支持,带有实时预览功能。

同时可处理多个文件。

可扩展的命令系统。

使用简单的基于文本的语言进行配置。

HiDPI支持。

UI缩放。

撤消/重做任何编辑。

动画GIF输出。

多笔刷/同步编辑。

笔刷过滤的"像素完美"模式。

用于像素操作的可视模式。

系统要求

rx当前支持Linux,macOS和Windows。

linux

在Linux上,需要Vulkan支持。在基于debian的系统上,可以通过mesa-vulkan-drivers软件包安装驱动程序。另外,可能需要vulkan工具。

在Arch Linux上,除了驱动程序外,还需要vulkan-icd-loader。浏览此处获取更多信息。

苹果系统

在macOS上,需要Metal支持。

Windows

在Windows上,需要Vulkan支持。

安装

以下是从源代码安装。如果要下载预构建的二进制文件,请参阅下一节。

cargo和cmake后,运行:

cargo install \

--git https://github.com/cloudhead/rx \

--tag v0.3.0

这将下载rx的最新稳定版本,并将其安装在~/.cargo/bin/rx下。如果希望安装在其他安装位置,需要通过"--root 路径"标志指定,例如/usr/local。

在macOS上,需要Xcode和Xcode命令行工具。后者可以通过运行xcode-select --install获得。 CMake可以与brew install cmake一起安装。

二进制发行包

目前,仅Linux和macOS二进制包,可以通过rx的github官方仓库下载(github:/cloudhead/rx):其最新版本分别为

linux

rx-0.3.0-x86_64.AppImage

这是一个AppImage,一个独立的应用程序。在打开它之前,使用chmod + x使它可执行。然后,可以双击或直接从终端执行它。

可将其重命名为rx并将其move到到具体路径。卸载时,只需删除文件就可以

MacOS

rx-0.3.0-x86_64.app.tar.gz

解压缩应用程序并将其移动到"应用程序"文件夹。

使用指南

为了有效地使用rx,必须了解该工具的一些基本属性。

rx是一个模式编辑器。在任何给定时间,用户都处于受支持的模式之一。每种模式都旨在执行某种类型的任务。某些任务可以以多种模式完成,并且由用户决定哪种模式最适合该任务。

rx设计为可根据用户的偏好进行配置。可以使用纯文本文件格式的rx脚本来配置其行为。

rx专注于工作。传统的用户界面已经精简到其核心元素,用以以展示作品,并将焦点集中在创作过程上。rx设计的很大一部分是为使此过程更加有趣和直观而量身定制的。

用户启动rx时,会创建一个空白视图。视图通常与文件相关联。窗口底部是状态栏,它显示有关会话和活动视图的信息。下面是命令行,用户可以在其中输入命令,在左边是调色板。

任何时候都只有一个活动视图。 rx中的许多命令都在当前活动视图上运行。通过使用鼠标或其他定点设备单击视图或使用Tab键在视图之间循环来激活视图。

模式

rx具有和vim相类似的三种模式和命令操作形式,rx模式也分为普通,可视和命令三种模式。

普通模式是用户花费大部分时间的模式。这也是默认模式,也是使用画笔工具将像素绘制到视图上的一种模式。可以通过按esc键从任何其他模式进入普通模式。

可视模式是可以可视觉选择和操纵像素,但不能绘制像素的模式。使用v键激活可视模式。

命令模式允许用户在会话,视图或可视选择上运行命令。命令模式和vim类似,通过":"激活。因此,命令前面用冒号来描述,例如":q!"表示不保存,强制退出的命令。使用返回键提交命令,或使用:source <path>从文件加载命令。当保存在文件中时,命令没有前缀冒号。

导航

浏览rx会话很容易,并且涉及以下命令:

:zoom+和:zoom-,(快捷方式为"."和",")以缩放活动视图。也可以通过鼠标滚轮来完成。另外,要设置特定的缩放级别,:zoom可以乘以一个倍数,例如。 :zoom 1.0将缩放比例设置为100%。

:pan <x> <y>来平移工作空间。也可以通过保持空间并使用定点设备拖动或使用箭头键来实现。

:v/center以将活动视图居中(快捷方式为"z")。

:v/prev和:v/next循环浏览视图(快捷方式为"tab")。

绘画

画笔工具完成rx中的绘画,可以根据大小和画笔模式进行配置。通过"["和"] "或分别通过":brush/size -"和":brush/size +"命令来更改画笔大小。画笔模式是可以在工具上激活的行为:

erase:通过将像素的alpha设置为0来擦除像素。

multi:一次在多个帧上绘制。

xsym:x轴(水平)对称绘画。

ysym:y轴(垂直)对称绘画。

perfect:像素完美模式。

xray:始终查看底层像素的颜色。

刷模式通过:brush/set命令激活,并通过:brush/unset禁用。可以使用:brush/toggle切换。例如,切换X射线模式为:brush/toggle xray。

可以通过从调色板中选择一种颜色或使用采样器工具(ctrl)并从视图中选择一种颜色来设置画笔颜色。 rx始终在状态栏中显示两种颜色:画笔使用的前景色和跟踪最后使用的颜色的背景色。可以通过按x或使用:swap命令来交换前景色和背景色。

要撤消对活动视图的编辑,请按u(或:undo),然后要重做,请按r(或:redo)。

有时,区分透明像素与黑色(rx的默认背景颜色)很有用。在这些情况下,可通过输:set checker = on(或简单地:setseter)来激活检查器。关闭检查器只需调用:set checker = off。


使用网格

当处理某些类型的图像时,围绕像素网格工作可能会有所帮助。rx可以使用:set grid命令显示网格。它的间距和颜色可以连续与网格/间距和网格/颜色设置一起滚动。例如,

:set grid/spacing 4 4

:set grid/color #ff0000

会设置网格设置为红色、4 x 4像素。

使用颜色

rx可以与32位sRGB图像和颜色一起使用。界面的左侧是一个调色板,用户可以通过rx的命令语言对其进行配置:要向调色板添加颜色,可以通过指定十六进制颜色代码来使用:p/add命令。要清除调色板,请使用:p/clear。

可以从rx脚本轻松加载调色板,例如,可以通过在脚本rgb.rx添加一下代码保存三个调色板:

p/clear

p/add #ff0000

p/add #00ff00

p/add #0000ff

然后通过:source rgb.rx加载。

动画

rx从一开始就设计用于创建动画像素作品。只需按回车键或输入:f/add(添加帧)命令,即可将帧添加到现有视图中。动画显示在视图旁边,并在帧之间连续循环。要更改帧延迟,可以使用动画/延迟设置。例如,要将帧之间的延迟设置为250毫秒,可以命令:

:set animation/delay = 250

这会设置为以4帧/秒的速度循环播放。

如果动画中的帧过多,则可以通过按退格键或输入:f/remove命令来删除帧。也可以使用:f/clone命令从现有帧中克隆帧,该命令将使用可选的帧号进行克隆,否则将克隆最后一个帧。

处理动画时,一次处理多个帧会很有用。此时,使用multi刷模式很方便。可以通过按住shift或输入:brush/set multi来激活它。现在,在框架上绘制也会在所有后续框架上绘制。

像素操作

视觉模式允许用户通过对视觉选择进行操作来操纵像素。要激活此模式,输入命令行:visual,或直接按v。视图边框将变为红色,表示可见模式处于活动状态。用鼠标拖动视图中的任何位置都会创建一个可以移动的选择。可使用:selection/expand或\将选择范围扩展到框架。可以一次用w向前移动整个帧,然后用b(:selection/jump)向后移动整个帧。也可以使用h,j,k和l键(:selection/move)在任何方向上对像素位置微调。

选择到位后,使用:selection/yank(y)命令可创建副本,然后可通过:selection/paste命令将其放置到任意位置,方法是用鼠标左键单击或按p。

还有一些其他很有用的快捷方式,例如:

[和]将选择插入和偏移一个像素。

f用前景色填充选择。

剪切选择内容。

e删除选择内容。

保存和加载

rx操作是基于PNG图像文件格式。加载文件就像使用:e(edit)命令和文件路径一样简单,例如:

:e chongchong.png

使用:w(write)命令就可以完成文件保存。要保存在其他路径下,可以显式指定文件路径,例如:


:w /tmp/chongchong.png

要关闭文件,可以使用:q(退出)命令。关闭最后一个剩余的视图将退出会话。

提示::e命令还可以用于加载文件的整个目录。只需指定目录路径,rx就会加载该路径下的所有文件。

加载动画

从.png文件加载动画时,不显示帧信息。需要使用:slice命令。如果有六帧动画条,输入:slice 6。该命令会将图像转换为一系列帧。将来,此信息将与.png一起保存。

提示:要调整动画帧的大小,可以用:f/resize命令。例如 :f/resize 16 16

rx设置

即时配置

rx中的大部分功能和工具都配置有可即时配置的设置。更新设置通常是通过:set命令完成的,设置命令的格式为:set <key> = <value>,例如,可以通过以下方式将会话背景设置为灰色:

:set background = #333333

某些设置是打开/关闭开关,例如vsync设置。可以用:set vsync = on或:set vsync打开;通过:set vsync = off 或者 :unset vsync关闭。还可以用:toggle命令切换它们。

可以使用:echo命令显示设置的当前值。例如:echo background or :echo grid/spacing。

配置加载

有三种配置rx的方法:

通过在运行的会话中输入命令或使用:source命令来获取命令脚本。以这种方式进行的更改在会话关闭后将不会保留,但是例如对于加载颜色配置可能很有用。

通过在用户的配置目录中创建init.rx脚本。

在Linux系统上,这通常为~/.config/rx,可以通过从rx内部输入:echo config/dir显示。

通过在启动rx的工作目录中或通过rx加载的文件夹中创建一个名为.rxrc的文件。该文件的名称来自unix系统中传统的运行命令脚本,其语法与init.rx相同,在用户要加载特定于文件或项目集的配置时很有用。

rx中用于更改setting相同命令可以在脚本内部使用。不限于:set系列命令,而是扩展到rx中几乎所有可用的命令。一个重要区别的在编辑器中输入的命令以需要':'开头,而从脚本加载命令时则不必要。

在rx脚本中,注释可以通过在行前加双破折号--为前缀。

创建和修改键绑定

rx中的键绑定或快捷方式的配置与其他方式一样:使用命令语言以纯文本格式进行。:map系列命令创建快捷方式,格式为map <key> <command>。例如通过:

:map / :zoom 1.0

将/(斜杠)键映射为zoom命令。可打印字符可以简单地指定,例如:map x :swap,不可打印字符必须用<>括起来,例如map <return> :f/add。可以使用:help命令始终显示键绑定设置。

要清除所有键绑定(包括默认设置),可以使用命令:map/clear!

相关推荐

pyproject.toml到底是什么东西?(py trim)

最近,在Twitter上有一个Python项目的维护者,他的项目因为构建失败而出现了一些bug(这个特别的项目不提供wheel,只提供sdist)。最终,发现这个bug是由于这个项目使用了一个pypr...

BDP服务平台SDK for Python3发布(bdp数据平台)

下载地址https://github.com/imysm/opends-sdk-python3.git说明最近在开发和bdp平台有关的项目,用到了bdp的python的sdk,但是官方是基于p...

Python-for-Android (p4a):(python-for-android p4a windows)

一、Python-for-Android(p4a)简介Python-for-Android(p4a),一个强大的开发工具,能够将你的Python应用程序打包成可在Android设备上运行...

Qt for Python—Qt Designer 概览

前言本系列第三篇文章(QtforPython学习笔记—应用程序初探)、第四篇文章(QtforPython学习笔记—应用程序再探)中均是使用纯代码方式来开发PySide6GUI应用程序...

Python:判断质数(jmu-python-判断质数)

#Python:判断质数defisPrime(n):foriinrange(2,n):ifn%i==0:return0re...

为什么那么多人讨厌Python(为什么python这么难)

Python那么棒,为什么那么多人讨厌它呢?我整理了一下,主要有这些原因:用缩进替代大括号许多人抱怨Python完全依赖于缩进来创建代码块,代码多一点就很难看到函数在哪里结束,那么你就需要把一个函数拆...

一文了解 Python 中带有 else 的循环语句 for-else/while-else

在本文中,我们将向您介绍如何在python中使用带有else的for/while循环语句。可能许多人对循环和else一起使用感到困惑,因为在if-else选择结构中else正常...

python的numpy向量化语句为什么会比for快?

我们先来看看,python之类语言的for循环,和其它语言相比,额外付出了什么。我们知道,python是解释执行的。举例来说,执行x=1234+5678,对编译型语言,是从内存读入两个shor...

开眼界!Python遍历文件可以这样做

来源:【公众号】Python技术Python对于文件夹或者文件的遍历一般有两种操作方法,一种是至二级利用其封装好的walk方法操作:import osfor root,d...

告别简单format()!Python Formatter类让你的代码更专业

Python中Formatter类是string模块中的一个重要类,它实现了Python字符串格式化的底层机制,允许开发者创建自定义的格式化行为。通过深入理解Formatter类的工作原理和使用方法,...

python学习——038如何将for循环改写成列表推导式

在Python里,列表推导式是一种能够简洁生成列表的表达式,可用于替换普通的for循环。下面是列表推导式的基本语法和常见应用场景。基本语法result=[]foriteminite...

详谈for循环和while循环的区别(for循环语句与while循环语句有什么区别)

初九,潜龙勿用在刚开始使用python循环语句时,经常会遇到for循环和while循环的混用,不清楚该如何选择;今天就对这2个循环语句做深入的分析,让大家更好地了解这2个循环语句以方便后续学习的加深。...

Python编程基础:循环结构for和while

Python中的循环结构包括两个,一是遍历循环(for循环),一是条件循环(while循环)。遍历循环遍历循环(for循环)会挨个访问序列或可迭代对象的元素,并执行里面的代码块。foriinra...

学习编程第154天 python编程 for循环输出菱形图

今天学习的是刘金玉老师零基础Python教程第38期,主要内容是python编程for循环输出菱形※。(一)利用for循环输出菱形形状的*号图形1.思路:将菱形分解为上下两个部分三角形图案,分别利用...

python 10个堪称完美的for循环实践

在Python中,for循环的高效使用能显著提升代码性能和可读性。以下是10个堪称完美的for循环实践,涵盖数据处理、算法优化和Pythonic编程风格:1.遍历列表同时获取索引(enumerate...