guowengen / DotFiles

:art: one-stop service for you to configure many Unix tools. And here are also some cheat-sheet.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

screen shot

目录

笔记

:仓库中bin目录下的seesay两个命令用于终端快速查阅笔记与修改笔记, see -h ; say -h了解详情。
它们会搜索~/.cheat/*.md查找entry,一级列表开头到<!-- -->结束为一条entry,见下图
see会利用ANSI进行简单的美化输出,其中包括将<!-- -->替换成空行

see&say

Linux

C++

底层

网络

其它

安装

提供了shell脚本用于安装配置,Manjaro20才得行哦,不然的话照着init.sh也可以非常容易的安装

注意:在安装之前,需要你需要做两件事

  1. 修改/etc/sudoers/etc/sudoers.d/10-installer,使sudo执行所有命令且无需密码, 不然安装过程有你受的

  2. 安装的最重要也最容易出错的便是下载软件包,确保你的网络环境OK。 同时确认你没有动过/etc/pacman.conf(除非你知道自己在干什么),因为:

    • 脚本会在里面添加腾讯云的archlinuxcn源,且若里面已有archlinuxcn字样则不会进行修改, 如果你用的清华源等教育网最好换了,经常出问题

    • 修改源列表一般在/etc/pacman.d/mirrorlist中修改,若你在/etc/pacman.conf中修改源配置, 请确保其有效且速度快,因为它会覆盖前者的配置。脚本默认会在mirrorlist中添加腾讯源(PS:它真的很快诶)

准备妥当后,执行

git clone https://github.com/mrbeardad/DotFiles ~/.local/DotFiles

cd ~/.local/DotFiles

./init.sh

详细

init.sh脚本中已经写了非常详细的注释,可以直接打开看看修改了那些内容,不懂bash语法也无关系哦

所以接下来介绍的主要是如何使用整个开发环境:

  • 为什么需要这个工具
  • 怎么使用这个工具

Gnome Dconf

 Gnome作为最流行的DE之一,总是少不了争议,卡是确实有点卡,不知道是X的锅还是gnome的(或者鱼与熊掌都下锅?)。 我没用过其它桌面环境,就不多评价了,反正挺好看就得行

界面元素

就像第一张图那样,桌面还挺好看是吧!

gnome

  1. 简洁的用户列表与软件列表
  2. 任务栏
  3. 时间
  4. 一些后台软件,如guaketim
  5. 天气预报,需要自己设置定位
  6. 插件列表(一些软件启动后也会将图标显示在此),从左到右依次为
    • FlameShot截图
    • chrome浏览器
    • caffeine,防止息屏
    • RIME输入法
    • pamac软件更新提醒
    • 提示数字小键盘锁与大写字母锁
    • 系统状态监测
  7. 简洁的工具栏
  8. 所有软件列表

快捷键

当然除了好看,还挺好用哦!
列出了实用的一些快捷键,包括默认自带的

Misc

按键 功能
Super+n 启动底部工具栏第n个软件
Super 软件搜索
Super+A 列出所有软件
Super+V 打开通知窗口
Super+L 锁屏
Alt+F2 执行命令,r可重启X

截图

按键 功能
Ctrl+Alt+A FlameShot截图
PrtSc 保存桌面截图到~/Pictures
Ctrl+PrtSc 保存截图到系统剪切板
Alt+PrtSc 保存当前窗口截图到~/Pictures
Ctrl+Alt+PrtSc 保存当前窗口截图到系统剪切板

窗口操作

按键 功能
Ctrl+1 最大化窗口
Ctrl+2 还原窗口大小
Ctrl+3 最小化窗口
Ctrl+4 关闭窗口
Super+←/→ 当前窗口左/右分屏
Super+H 隐藏窗口
Super+tab 选择窗口
Alt+tab 切换窗口
Ctrl+Alt+ ↑/↓ 上/下个工作区

Guake操作

guake是一个下拉式终端,可以集成在gnome中

按键 功能
Ctrl+T 下拉或者隐藏guake窗口
Alt+ T 切换guake全屏状态
Ctrl+ Alt+ R ranger
Ctrl+ Alt+ H htop
Ctrl+ Alt+ I iotop
Ctrl+ Alt+ F fzf
Ctrl+ Alt+ M cmatrix屏保
Ctrl+ Alt+ C cmatrix -r屏保

矩阵革命来一波( ◔ ڼ ◔ )

cmatrix

踩过的坑

 guake相关的快捷键依赖于在guake中运行tmux,且需要仓库中的.tmux.conf。
 原理即是使用guake命令传递按键序列给正在运行的guake,于是guake就会把这些序列视作用户手动输入一般, 但若此时guake中运行有前台程序,如vim,通常会出错。因为这些按键序列传递给了vim,而我们本想在shell中运行命令。
 于是我让guake启动时自动连接tmux,tmux配置了一些快捷键,而利用guake命令传递tmux快捷键的按键序列给guake, guake中的tmux于是重新开启一个window执行命令,而不会影响到原来的“前台程序”

grub

 系统启动加载器(bootloader),由固件启动并加载Linux Kernel并为其提供参数, 如果你装的双系统,则需要它提供选单来在开机是决定进入哪个OS。学过Linux都知道这东西,就不多废话了

  • init.sh会下载grub-theme-manjaro,你可以用你喜欢的图片替换/usr/share/grub/themes/manjaro/background.png, 注意图片的名字和格式都得一样哦,不然你得修改/usr/share/grub/themes/manjaro/theme.txt配置。 grub目录里面有几张为觉得还🉑️️的图片。
    默认是这张

    dna

  • 现在你可以在/boot/grub/user.cfg中定义变量GRUB_PASSWORD密码即可为grub设置密码

    # 输入两次密码,此命令会输出加密后的密码
    $ grub-mkpasswd-pbkdf2
    
    # 然后把密码写入/boot/grub/user.cfg,没有该文件就自己建一个
    $ vim /boot/grub/user.cfg
    
    # 最后/bot/grub/user.cfg中应该设置成这样
    GRUB_PASSWORD=grub.pbkdf2.sha512.一长串密码

    PS: 该配置是我用fedora时抄下来的

踩过的坑

  • grub背景图片只能用png格式(似乎是能支持jpg格式的呀,grub里有jpg的模块)。 找个在线转换网站转换下格式就行。

ssh

 安全外壳协议,OpenSSH是它的一个实现。 有了它你就可以安全、方便地远程连接你的主机,连上后取得你的shell,就像在本地登录一样。 它通过非对称加密技术为你和主机之间建立安全隧道,故公私钥对是必不可少的。 当然你可以使用你的用户密码登录而不用密钥,如果你的主机暴露在互联网中那当然是不推荐的。

  • 提供~/.ssh/ssh_config,用于git通过ssh协议链接github与gitee

    这个你得自己把ssh/ssh_config复制到你的~/.ssh下,因为这是我自己的配置, 你得自己创建公私钥对才能用,若不知道可以google,也可以用命令$ see ssh查看

  • 提供/etc/ssh/sshd_config,用于手机ssh链接电脑,端口改为50000

    本来想设置只允许密钥链接的,结果我手机上用的JuiceSSH,它生成的公钥电脑上无法识别, 电脑上生成的私钥它又无法识别。要是有万能的网友朋友知道,提个issue呀:smile:

  • 安装/etc/hosts文件,手动解析github的域名,访问更快速

    (* ̄︿ ̄)现在是不是就被墙一下,搞的我们很难受呀。
    要是速度仍然慢,或者有些域名直接无法访问,那就照着自己改改, 去这个网站上测试一下域名对应的IP

zsh

代替bash,强有力的生产工具,当然写脚本还是得用bash
相较与bash,zsh主要的有点是好看好用

好看

提示符
zsh1 很奈斯的提示符是吧,从左到右分别是:

  • 状态提示符
  • 用户名
  • 时间
  • 当前目录
  • git分支
  • git状态
  • vi-mode提示

状态提示符会出现3种符号:

  • 表示上个命令返回非零
  • 表示当前用户为root
  • 表示后台有作业

zsh2
zsh3
git状态:

  • 背景为黄色代表工作区不干净,反之则为绿色
  •  master代表分支名,➦ a53b99b代表HEAD指向a53b99b的提交
  • 表示工作区相对暂存区有变更, 表示暂存区有待提交

语法高亮
zsh4
对命令行进行语法高亮,大大减少了输入错误语法的可能

命令推荐
zsh5
每次输入命令时,都会自动搜索历史命令,并找出匹配已输入的命令的历史,然后推荐给你。 你只需要按即可应用它推荐的历史命令

好用

vi-mode

  • EscCtrl+[:进入vi-mode,可以使用vi形式的快捷键更方便的修改命令

  • /:搜索历史命令

  • v:按快捷键v可打开$EDITOR编辑命令

命令

  • 提供了大量的命令别名,其中最主要的就是git的命令别名

  • r:重复上次命令

  • x:该命令可以智能解压各种压缩包

  • j:该命令会根据你cd的频率,智能、模糊化地跳转到目标目录

  • f:该命令启动fzf并用ranger打开选择的文件, 若用init.sh安装的话默认都会显示所有隐藏文件

  • fuck:该命令帮助修改上次错误的命令,解气由实用,提高祖安手速

踩过的坑

  • 开启vi-mode会导致history-substring-search失效。
    解决办法是手动设置映射
  • 使用syntax-highlight会让终端复制极其之慢,原因是该插件会对每个复制的字符进行检测。
    解决办法是给该插件设置一下

tmux

终端分屏工具和环境保护工具:

  • 首先是分屏:
    如果只是在本地登录,那这相较于终端模拟器的分屏没有啥区别, 但如果你是通过ssh连接远程主机的,那你就很需要它了,因为tmux分出的屏都是在同一个session中, 不然你得重新再用ssh连接主机然后再同时进行多个前台任务。
  • 然后是环境保护:
    使用C/S模型,你所做的操作都由tmux服务端接管,当你意外退出或断线时,你的任务都会被tmux保留, 你只需重新用ssh连接主机在连接tmux即可回复现场,而不用再一个个的打开工作窗口,甚至丢失一些进度

默认把状态栏啥的都关了,你要不确定是不是在tmux里,就按AltW+w试试

  • 使用方法:

    AltW 为快捷键前缀,以下快捷键会省略写出前缀

    • pane操作:
      • s:水平切分panes
      • v:竖直切分panes
      • x:关闭当前pane
      • z:最大化该pane或恢复大小
      • 方向键:跳转到该方向的pane
      • q:选择一个pane
      • Ctrl+o:交换pane
      • !:新窗口打开该pane
    • window操作:
      • b 上一个window
      • n 下一个window
    • session操作:
      • d:卸离会话(可通过tmux a -t session-name重新恢复)
      • w:预览整个会话窗口
      • Ctrl+S:保存会话到磁盘文件
      • Ctrl+R:从磁盘文件恢复会话
    • copy模式:
      • [:进入copy-mode
      • /:在copy-mode中的快捷键,搜索tmux缓冲区,和vim差不多
    • 其他操作:
      • R:重载配置,某些配置重载是没用的,需要重启tmux服务
      • ::命令模式
      • h:打开htop
      • r:打开ranger
      • f:打开fzf
      • m:打开cmatrix
      • c:打开cmatrix -r

踩过的坑:

  • 按键序列被截获并更改,导致vim里面的映射失效

  • 开启终端真色

  • 开启undercurl并支持其特殊颜色

  • 如果你的neovim剪切板使用的是xsel,有时重启X是会导致其失效,因为$DISPLAY环境变量在重启X时已经更改了, 而neovim不知道,当你在tmux运行neovim的时候就会出现这bug,因为tmux也不知道$DISPLAY变了,而neovim以致被它接管着, 所以解决办法就是重启tmux,tmux kill-server把tmux服务杀了在重启。所有在终端启动图形程序的操作都会有这问题

alacritty终端

 一个GPU加速的终端模拟器
 alacritty是用rust写的,没用qt也没用gtk, 为了可移植性而与OS的交互甚少,反正开发者们为alacritty添加特性很谨慎。 这些种种原因导致我弃坑,现在用的xfce4-terminal,除了速度没alacritty快(有时真的可以感受得到) 其他都OK。不过alacritty的配置我始终保留着,在alacritty目录下

xfce4-terminal终端

现在分析一波xfce4-terminalalacritty的区别:

  • alacritty优点:
    • GPU加速是它的卖点,最快的终端模拟器,莫的之一

    • 可以取消 顶栏 的显示,看起来更加清爽

    • 可以对Regular Bold Italic三种Style使用不同字体,这是非常nice的, 特别是在vim下开gruvbox主题就会有Bold Style区分,两种字体看起来特别清晰

  • alacritty缺点:
    • 不支持fcitx5单行模式,这是因为它没用gtk也没用qt

    • 没有响铃警报,只有可视铃,就是本该响铃的时候屏幕闪一下,可以配置闪的那下的颜色

      在官方的issue下看到了一个响铃的issue和merge,但是还是没配置出来
      当然这一条其实无伤大雅,可视铃已经够用了,而且实在要铃声可以配置tmux, 我把我的tmux.conf里有关这个的给注释了,有兴趣可以看看

    • 中文字体丑陋,但是终端下选字体肯定首先考虑西文字体呀

    • emoji字体无法显示:
      其实这最后三条都与alacritty没用使用gtk有关,我的DE是gnome,主打gtk, gtk应用搜寻字体时会由fontconfig安排字体回滚顺序,若在应用使用的字体中若没有搜索到对应字体, 则会使用在其他字体中搜索,所以在gtk应用我可以同时拥有好看的中文字体与西文字体, 还有大量大量的emoji字体

 综上,为了弥补alacritty的缺点,我需要找一个基于gtk的终端模拟器。 同时,为了保留其优点2,我需要在一众gtk TE中选择能够取消顶栏的; 为了保留其优点3,我需要合并字体(fonts目录),以让RegularBolditalic使用不同字形;

当 !当 !当 !当 !

Xfce4-terminal满足所有需求,童叟无欺。配置在xfce4-terminal目录下,与guake一样,会自动运行tmux

gdb调试器

终端调试器,程序出错了,可以设置断断点,跟踪变量值等等操作,找出产生非预期结果的代码

gdb

  • 该配置大部分来自网络,提供了一些额外命令比如pvectorpstring之类的更好地打印容器元素
  • 下载cgdb,一个gdb的wrapper,按 a进入gdb-mode,按EscCtrl+[进入vi-mode,一下为vi-mode中的快捷键

真正调试的话,脚本下载了更好用的gdbgui,里面可以使用gdb命令,所以学好gdb命令更方便,

chfs

一个小型局域网web,方便手机与电脑传文件,当然用wine.qq也很方便,不过wine.qq没法在局域网共享资源吧

  • init.sh默认安装并设置了开机自动启动它,使用ip a查看主机的ip地址,然后用浏览器访问就ok

prime独显运行程序

一个Linux上解决Nvidia显卡切换的方案,Manjaro.20默认使用该方案
PS:玛德,以后笔记本还是买AMD吧,核显就够用了,性价比高还没linux的驱动问题

  • 修改了一些桌面应用的desktop文件,从桌面图标启动时默认使用prime而让他们运行在Nvidia独显上
    包括:
    • google-chrome

    • WPS全家桶

    • wine.qq.office,而且启动TIM前会自动禁用ipv6,这样TIM才可以接受图片

      the evil tencent 😂

  • 在此也将就解释一下bin目录下的东西吧
    • terminal-tmux.sh会由xfce4-terminal调用(写在其配置里了), 启动xfce4-terminal时会自动启动或连接到tmux,session name为Routine

    • see & say最上面提到了,用于快速查阅与修改笔记

fcitx5-rime输入法

fcitx5是一个输入框架。
rime是一个输入法引擎,高度自定义,Linux称作中州韵,Windows小狼毫,Mac鼠须管。作者文化人,仰慕!

 我只开启了全拼方案双拼方案,默认双拼, 修改~/.local/share/fcitx5/rime/default.custom.yaml中的顺序即可更改默认方案。

常用快捷键:

  • Ctrl+Space:切换输入法
  • Left_Shift:切换中英,有提示
  • Right_Shift:切换中英,注意这个哦,切换中英没有提示,要是不小心按到了你可能会很懵逼
  • Ctrl+ `:设置输入方案、半/全角、中/西文等等
  • `:反查

 此外,还提供了海量词库,好吧其实是小水沟量的词库o(=·ェ·=)o,毕竟不是云词库,这方面肯定比不上搜狗输入法。 初始的词库来自与Chernfalin/better-rime-dictIorest/rime-dict, 万分感谢这两位亲爱的网友啦 😄
 还有注意,词库需要由yaml格式转换成二进制格式,有时会重新执行这一过程,需要点时间

neovim编辑器

vim/neovim是现在最流行的编辑器之二。
通过编写脚本与安装插件,可以让双手打字有飞一般的感觉
这个配置单独一个仓库,传送门
vim目录下的配置是以前用vim是自己搭的,现在转neovim了,并把配置都转移到了spacevim里

About

:art: one-stop service for you to configure many Unix tools. And here are also some cheat-sheet.

License:Apache License 2.0


Languages

Language:Shell 44.2%Language:Vim Script 28.8%Language:Python 27.0%