Hi there 👋

Welcome to my blog

pacman Usage

To use pactree and paccache install pacman-contrib To install packages pacman -S package_name1 package_name2 来安装软件 pacman -S $(pacman -Ssq package_regex)来安装不太清楚名字的包 pacman -Sg package_group_name 查看一个软件包组有什么软件 pacman -S -needed package_name1 pacman 默认会重新安装软件, 即使软件已经是up to date. --needed 会避免安装已经up to date软件 一些软件会有选项, 例如Enter a selection (default=all): 1-10 15这将安装1到10和15号软件包 ^5-8 ^2 这将安装除了5-8和2号软件包之外的其他软件包 To remove packages pacman -R package_name 只移除目标软件包, 留下其依赖的软件包 pacman -Rs package_name 移除目标软件包和没有被其他软件依赖的软件包 pacman -Rsu 当移除一个group时上面的那一条命令可能拒绝执行, 尝试这一条命令 pacman -Rsc 递归移除目标软件包和它依赖的全部软件及依赖它的全部软件 pacman -Rdd 移除被其他包依赖的软件包, 而不移除依赖它的包. 这个命令可能会导致系统崩溃, 不推荐使用 pacman -Rn package_name 移除软件的配置文件, 但不会移除软件自己创建的, 和家目录的dot配置文件 To update packages pacman -Syu update full packages and system To get packages details pacman -Ss string1 string2 在datebase中搜索packages’ name and descriptions pacman -Ss '^vim-' 可以使用some ERE(Extend Regular Expressions) pacman -Si package_name 获取extensive information about a given package in remote pacman -Qs string1 string2 搜索本地已经安装的包的name和descriptions pacman -Q 只搜索主动安装的包的名字 pacman -Qi package_name 获取本地安装包的extensive information pacman -Qo /path/to/file_name 获取软件属于哪个软件包 pacman -F string1 string2 获取远程的包的文件路径名 pacman -Qdt 列出不再被依赖的软件包 pacman -Qet 列出不再被依赖的软件包详细信息 other feature pacman -Sw package_name 下载软件包不安装它 pacman -U /path/to/package/package_name-version.pkg.tar.zst 安装本地软件包 pacman -U file:///path/to/package/package_name-version.pkg.tar.zst 保留一个副本在pacman’s cahce中 pacman -U http://www.example.com/repo/example.pkg.tar.zst 安装远程软件包 yay yay -Ps 打印系统的一些安装软件包的分析 yay -Yc 清除不使用的依赖 yay -G aur_package_name 下载PKGBUILD文件从ABS或AUR yay -Y --gendb 生成开发者包数据库 yay -Syu --devel --timeupdate 更新系统, 检查开发者包 paru paru <target> 交互搜索和安装target paru 和 paru -Syu 相同, 更新系统 paru -Sua 只更新AUR packages paru -Qua 打印可用的AUR更新 paru -G <target> 下载PKGBUILD文件和关联的文件 paru -Gp <target> 打印target的PKGBUILD的内容 paru -Gc <target> 打印target的AUR的comments paru --gendb 创建devel database Archlinux install deb package 1. 使用AUR中其他人提供的包 using AUR(Arch Linux User Repository) 2. 手动安装 首先, 解压下载的 *.deb 包, ar -x *.deb --output dirname cd dirname 应该可以看到 control.tar.gz data.tar.xz debian-binary debian-binary 显示debian包管理的信息版本(super不重要) control.tar.xz 为软件介绍(包括依赖非常重要), 一些包的安全验证程序和完整性的验证程序(可以不用管) data.tar.xz 软件安装的位置及软件, 可能是 etc opt usr 然后根据依赖信息安装依赖, 根据data中目录的位置将相应的软件拷贝到相应的目录. 3. 自己写arch’s makepkg file. 首先, 通过cp /usr/share/pacman/PKGBUILD.proto ./PKGBUILD拷贝一个PKGBUILD模板. 然后, 设置PKGBUILD中的变量和函数的功能. pkgname: 软件包的名称 pkgver: 软件包的版本, 通常为数字, . _ -组成 pkgrel: 必须存在, 并设置为1 pkgdesc: 软件的描述 arch: 可以运行的平台, 一般为x86_64 url: 下载该软件的地址 license: 发行协议 depends: 软件的依赖 source: 构建包所需要的文件组, 如果只有一个可以写一个, 也可以使很多包的地址 noextract: 一个文件组在source中的没有解压缩包的名称 md5sums: 包检验码, md5sums生成md5sums码, 如果不想使用可以复制为SKIP package(): 最终安装函数 prepare(): 准备函数 更多变量解释: archwiki-PKGBUILD pkgdir: makepkg生成的目录默认为根目录. srcdir: 还不清楚. 设置完成后, 在包含该PKGBUILD的目录下, 执行makepkg即可生成archlinux下的包. 使用pacman -U pkgname安装该软件. 参考 How to install Deb package in arch Linux How to convert DEB packages into arch linux packages Archlinux-Creating packages

mpv Usage

基础快捷键 keys description q 退出mpv不记录进度 Q 退出mpv记录进度 o P 查看播放进度并显示进度条 f 全屏 O 在左上角持久显示播放进度, 但不显示进度条 p space pause 9 / 调小音量 0 * 调大音量 m 静音 s 截图 T 设置mpv窗口置顶 i 查看文件详细信息 A 调整视频高宽比 { } 成倍调节播放速度 [ ] 缓慢调节播放速度 backspace 恢复速度为1 F8 列出播放列表 < > 切换播放列表中的视频 hjkl 上下左右 快进后退 循环播放 keys description l 第一下标记开始, 第二下标记结束, 第三下清除 L 设置是否循环标记段 高级快捷键 keys description C-h 开关硬件解码 , . 逐帧播放 1 2 调节对比度 3 4 亮度 5 6 调节Gamma 7 8 调节色彩饱和度Saturation d 开关Deinterlace 音视频流 keys description # 选择音频流 _ 选择视频流 Ctrl+- 调大audio-video延迟 F9 列出所有的音频流和字幕流 字幕 keys description j 选择字幕流 v 设置字幕可见 u 开关ass字幕特效 z x 调节播放字幕时间 r 调低字幕在屏幕中的位置 R t 调高字幕在屏幕中的位置 参考 mpv config

Ctags Usage

ctags gun/global C and C++ 1. 通常使用 ctags ctags -R . -f .tags -R 从当前目录递归开始生成 ctags 索引 . 当前目录 -f -o 指定生成的文件名 ctags -R --c-kinds=+p --fields=+iaS --extra=+q . -f .tags 获取更多的信息 2. 一些 ctags 基础参数 ctags 支持多种语言的索引 ctags --list-maps 查看支持的语言种类 ctags 支持很多语义但并不是默认都开启的 ctags --list-kinds 查看所有语言支持的语义及默认开启状态(后面有 off 表示默认没有开启) ctags --list-kinds={lang} 查看{lang}语言支持的语义及开启状态 使用 ctags --{lang}-kinds=+px 来开启默认不支持的语义 ctags --langmap={lang}:+.inl 可以指定某种扩展名也为该 lang 的源文件 ctags -h +.inc 指定 .inc 文件也为头文件 ctags --fields=+aiKSz 如何描述语法元素 a 表示如果是类的成员, 要标明其 access 属性(即是 public 的还是 private 的) i 表示如果有继承, 要标明父类 S 表示如果是函数, 要标明函数的 signature K 表示要显示语法元素类型的全称 z 表示在显示语法元素的类型时, 使用格式 kind:type ctags --extras=+q 要求 ctags 记录全名(类和函数名), 可以更精确的定位 ctags --exclude=lex.yy.cc 不要扫描某些目录或文件 3. ctags 使用 使用ctags -R --c-kinds=+p --fields=+iaS --extras=+q /usr/include 将可以创建外部的跳转, 但会使用很长的时间, 得到的文件一般也很大 ...

Bluetooth Setup On Arch Linux

Xbox series x controller 首先安装蓝牙服务 pacman -S bluez bluez-utils pulseaudio-bluetooth bluez 提供bluetooth服务 bluez-utils 提供bluetoothctl工具 bluez-utils-compat(开机后无法NOT Default controller available)使用这个包据说可以修复这个问题. (optional)blueman显示systray pulseaudio-bluetooth 可以连接蓝牙耳机 启动连接设备 sudo systemctl start bluetooth.service开启bluetooth服务. sudo systemctl enable bluetooth.service设置为开机启动. 然后使用bluetoothctl进行蓝牙的连接. 将用户添加到lp用户组中, 添加方法usermod -G Groupname Username, 或直接修改/etc/group文件. 首次启动蓝牙 使用help查看帮助. 首先选择设备select MAC_address 然后使用power on开启蓝牙设备 如果开启失败检查是否是蓝牙设备被block了. 使用rfkill list观察. 如果是可以rfkill unblock all or connmanctl enable bluetooth来取消所有的被block的设备. 详细使用man rfkill. 然后使用devices查看可以使用的设备. (optional)如果devices没有可用的设备. 使用scan on来扫描附近可连接的蓝牙设备. (optional)agent on或选择其他的模式(DisplayOnly KeyboardDisplay NoInputNoOutput DisplayYesNO KeyboardOnly off on)如果你清楚的话. pair MAC_address开始配对设备. 如果设备没有PIN, 可能还需要手动trust MAC_address在重新连接之前. connect MAC_address来连接蓝牙设备. 如果连接失败, 可能是pulseaudio-bluetooth没有安装. 具体使用systemctl status bluetooth.service查看错误信息. 然后在/etc/pulse/system.pa中加入以下内容: ### Enable bluetooth daemon load-module module-bluetooth-policy load-module module-bluetooth-discover 之后每次启动bluetoothctl sudo systemctl start bluetooth.service 如果不想每次reboot输入可以sudo systemctl enable bluetooth.service ...

Pass Usage

install pass pacman -S pass 设置GnuPG pass使用PGP(Pretty Good Privacy)密钥, 最常用的PGP实现是GnuPG(GPG), 它随linux系统一起安装. gpg --generate-key 来产生PGP密钥 在这个过程中会提示你输入你的名字和电子邮箱 并为密钥创建一个密码 密钥加密, 密码解密(但只有密码没有密钥也无法解密) gpg --list-keys 可以查看你创建的PGP密钥 $ gpg --list-keys /home/seth/.gnupg/pubring.kbx ----------------------------- pub ed25519 2022-01-06 [SC] [expires: 2024-01-06] 2BFF94286461216C907CBA52F067996F13EF10D8 uid [ultimate] Seth Kenlon <seth@example.com> sub cv25519 2022-01-06 [E] [expires: 2024-01-06] export and import gpg key export a gpg public key gpg --export [-a] {key-id} > public-key.asc export a gpg private key gpg --export-secret-keys [-a] {key-id} > private-key.asc import a gpg key gpg --import [public|private key] backup a gpg public key gpg --export --export-options backup --output public.gpg backup a gpg private key gpg --export-secret-keys --export-options backup --output private.gpg export gpg private key and public key file change expiration data of a gpg key gpg --edit-key [key-id] > expire subcommand change expiration date gpg key 设置pass pass init 2BFF94286461216C907CBA52F067996F13EF10D8 初始pass仓库 存储密码 pass add {www.example.com} pass generate {www.example.com} 20 -c 自动为www.example.com网站创建一个20位随机密码并传送到系统剪切板 编辑密码 pass edit {www.example.com} 可以添加一些信息 bd%dc$3a49af49498bb6f31bc964718C user: seth123 url: example.com 获取密码 pass show {www.example.com} passmenu 查找密码 pass grep example $ pass grep example www.example.com: url: www.example.org ref Manage your passwords in the Linux terminal