一不注意竟然已经三个多月没写文章了,十一月份总算找到感觉比较满意的实习工作了,同时把近视给弄好了,已经有十多年没有这么清晰地看过这个世界了:-D
关于 ArchLinux
请自己谷歌度娘,由于整个工作环境都是自己从头开始搭建的,最是熟悉和顺手,再加上神器 yaourt
, 滚动更新
(一年多来未滚挂过),十分给力的 Wiki
,简直爱不释手。
笔者已经在主力机上运行这套工作环境一年多,暂未感到任何不适。
如果对Linux不是很熟悉且不太乐于折腾的请绕过。
搭建完成后大概是下面这个样子:
桌面使用 i3-gaps ( i3wm 的分支)+ py3status + i3lock + LilyTerm 。
选择平铺桌面管理器是因为可以 自动排列所有打开的窗口
,所有窗口操作 使用快捷键实现
、 最大化利用工作区
、 最大化利用屏幕空间
、 占用资源小
。
选择 i3-gaps
是因为 i3wm
的本身配置非常简单, i3-gaps
在它的基础之上增加窗口间隙调整的支持,方便把桌面弄得更漂亮一些。
选择 py3staus
是因为它支持更多的插件和属性配置。截图中右下角显示的信息分别是:
内存 内存使用率
| cpu使用率
| cpu温度
| 下行速度
上行速度
| 未读邮件数
| 当前时间
| 音量
| 单机截图
| DPMS
| 其他软件
。
选择 LilyTerm
是因为易于配置和对中文支持比较好。
整个桌面最多可以开启10个工作区,我的布置是这样的:
窗口1(1:Info)
用来运行 glances+系统命令
。
窗口2(2:Web)
运行浏览器。
窗口3~8(3~8:Work)
运行开发相关的程序。
窗口9(9:Other)
虚拟机运行windows10。
窗口10(10:Other)
运行音乐播放器。
同时在一个可切换显示和隐藏的小窗口中运行 ydcv ,需要翻译的时候就切换出来相当方便。
我说这么多1 2 3 4…………只为了说明一点:只要习惯了自己配置的快捷键和空间布局,工作效率飕飕地往上升。习惯了在平铺式的桌面中开发后,再回到windows这类层叠式的有种生不如死的感觉= =
ArchLinux
的Wiki是十分完善的,且大多数常用的文档都有中文版,系统的安装主要也是参照 Installation guide (简体中文) ),如果按照以下流程安装系统时和官方Wiki有冲突,以官方Wiki为准。
执行 ping www.baidu.com
测试网络是否可用,安装过程中需要用到网络。
执行 timedatectl set-ntp true
设置时间自动同步。
执行 fdisk -l
查看要安装的目标硬盘,并用 fdisk
对硬盘进行操作,我要把系统安装到 /dev/sda
这个硬盘中。
执行 fdisk /dev/sda
,其中 /dev/sda
是步骤3中找到的,fdisk的详细使用方法请查阅 Wiki
,如果你的硬盘是 GPT磁盘分区
,要记得创建一个 EFI
分区。
我是 MBR磁盘分区
,在进入fdisk工具后:
重复执行 d
命令直到删除所有已有分区。
执行 n
命令创建分区, Partition type
、 Partition number
、 First sector
直接回车用默认值,Last sector输入 +512M
表示给该分区分配 512M
大小的空间。
执行 n
命令创建根分区,分配 45G
的空间
执行 n
命令并一路回车,把硬盘所有剩余空间都给 home
分区, 如果有需要的话也可以选择再分配一个 swap
分区。
执行 p
命令查看是否和预想中的分区情况一致。
如果上一个步骤没问题的话,执行 w
命令保存并退出。
执行 mkfs.ext4 /dev/sda1
格式化 /dev/sda1
分区为EXT4格式。
执行 mkfs.ext4 /dev/sda2
格式化 /dev/sda2
分区为EXT4格式。
执行 mkfs.ext4 /dev/sda3
格式化 /dev/sda3
分区为EXT4格式。
执行 mount /dev/sda2 /mnt
挂载根分区。
执行 mkdir /mnt/boot
和 mkdir /mnt/home
分别创建boot分区和home分区的挂载点。
执行 mount /dev/sda1 /mnt/boot
和 mount /dev/sda3 /mnt/home
分别将对应的分区挂载好。
执行 vim /etc/pacman.d/mirrorlist
,删除不需要的mirror,我只保留了163和中科大的mirror。
执行 pacman -Syy
更新mirror数据库。
执行 pacstrap /mnt base base-devel
安装基本系统。
执行 genfstab -U /mnt >> /mnt/etc/fstab
生成 fstab
文件。
执行 arch-chroot /mnt /bin/bash
切换到新安装的系统上。
执行 pacman -S vim
安装vim。
执行 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置时区。
执行 hwclock --systohc --utc
设置时间标准 为 UTC。
执行 vim /etc/locale.gen
修改本地化信息,移除 en_US.UTF-8 UTF-8
、 zh_CN.UTF-8 UTF-8
、 zh_TW.UTF-8 UTF-8
前面的 #
后保存。
执行 locale-gen
生成本地化信息。
执行 echo LANG=en_US.UTF-8 > /etc/locale.conf
将系统 locale 设置为en_US.UTF-8.
执行 echo myhostname > /etc/hostname
修改主机名。
执行 systemctl enable dhcpcd
设置dhcpcd自启动。
执行 passwd
设置root密码。
执行 pacman -S grub os-prober efibootmgr
安装grub、os-prober和efibootmgr。
安装引导程序:
grub-install --target=i386-pc /dev/sda grub-mkconfig -o /boot/grub/grub.cfg
执行 exit
。
执行 umount -R /mnt
。
执行 reboot
到此为止,基本系统已经安装完成,重启后登陆root帐号开始搭建桌面环境。
执行 useradd -m yourusername
创建新用户,并执行 passwd yourusername
设置登陆密码。
执行 vim /etc/sudoers
编辑sudo权限,复制一行 root ALL=(ALL) ALL
, 并替换其中的root为新用户名,保存并退出。
执行 exit
退出root用户,并登陆新创建的用户。
执行 sudo pacman -S alsa-utils xf86-video-vesa xorg xorg-xinit
安装声卡、显卡及xorg。
执行 sudo pacman -S zsh git unrar zip unzip openssh glances htop iftop screenfetch tree vlc wget net-tools
安装常用程序。
oh-my-zsh
执行 sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
安装 oh-my-zsh ,我们将使用它作为默认shell。
执行 vim .zshrc
编辑配置文件,修改 ZSH_THEME
的值可以更改shell的主题,主题可以到 这里 来查看,我个人比较喜欢使用 rkj-repos
这个主题。
在配置文件最底端加入一下代码段为一些命令创建别名:
alias ll='ls -l' alias la='ls -a' alias vi='vim' alias svi='sudo vim' alias grep='grep --color=auto' alias install='sudo pacman -S' alias remove='sudo pacman -Rcn' alias upgrade='sudo pacman -Syu' alias findProc='ps -ef | grep ' alias docker='sudo docker ' alias cls='printf "/033c"'
编辑完成后保存并退出,执行 source .zshrc
更新。
插件和其他的配置根据自己所需到 这里 查询配置。
执行 sudo vim /etc/pacman.conf
,在文件最底部加入以下文本后保存并退出:
[archlinuxcn] SigLevel = Optional TrustAll Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
然后执行 sudo pacman -Syu yaourt
更新仓库数据库并安装 yaourt
。
接着再执行 install archlinuxcn-keyring
安装archlinuxcn的keyring,不然有些pacman的软件包无法安装。
执行 install i3lock i3status compton dmenu feh
, compton
如果没有装的话会一些窗口效果会消失。因为 i3wm
是没有桌面图标这些东西的,所以我们通过dmenu来打开应用程序。 feh
是用来设置壁纸的。
执行 yaourt i3-gaps
安装 i3wm
。
安装好 i3-gaps
后,编辑 ~/.i3/config
文件配置 i3wm
的快捷键和外观等,其中 mod键
我设置为 win键
。
以下是我的快捷方式:
win+0 ~ win+9:切换工作区。
win+左:聚焦到左边的窗口。
win+右:聚焦到右边的窗口。
win+上:聚焦到上边的窗口。
win+下:聚焦到下边的窗口。
win+shift+左:移动当前聚焦的窗口到左边。
win+shift+右:移动当前聚焦的窗口到右边。
win+shift+上:移动当前聚焦的窗口到上边。
win+shift+下:移动当前聚焦的窗口到下边。
win+shift+0 ~ win+shift+9:将当前聚焦的窗口移动到指定的工作区中。
win+H:窗口水平分离,即新创建的窗口将会出现在当前窗口的右侧。
win+V:窗口垂直分离,即新创建的窗口将会出现在当前窗口的下侧。
win+R:调整当前聚焦的窗口的大小,在按完快捷键后再按方向键即可调整。
win+F:切换当前聚焦的窗口为全屏/非全屏。
ctrl+alt+W:关闭当前聚焦的窗口。
win+shift+space:使当前聚焦的窗口浮动。
win+space:在浮动的窗口和非浮动的窗口之间切换焦点。
win+T:切换窗口显示为边框+标题栏。
win+Y:切换窗口显示为只有1像素的边框。
win+U:切换窗口显示为没有边框也没有标题栏,默认为这种显示方式,因为边框和标题栏太丑而且太占空间了= =。
win+shift+ -:移动当前窗口到scratchpad中,即可以在需要的时候将其调出来,不需要时将其隐藏。
win+ -:切换scratchpad中的窗口的显示与否,该功能我最常将用来创建一个运行ydcv进程的窗口来翻译,相当方便。
win+回车:打开一个新的终端。
win+E:打开dmenu,会在屏幕顶部出现一个黑色输入框,输入程序名字按回车就会打开程序。
win+L:锁屏。
win+E:打开资源管理器。
fn+音量+:音量上调5%。
fn+音量-:音量下调5%。
win+shift+Q:调出系统命令。
在调出系统命令后,按 O注销会话
、 S关机
、 R重启
、 Esc取消
。
win+shift+C:重新加载 i3wm
的配置文件。
win+shift+R:重新启动 i3wm
,不会丢失已经打开的窗口等信息。
win+shift+E:关闭 i3wm
,将会导致所有窗口被关闭。
以下是我的配置:
#===============设置字体=============== font pango:Source Code Pro, EmojiOne Color 10 #===============定义$mod键为win键=============== # customized set $mod Mod4 #===============设置窗口边框=============== new_window none bindsym $mod+t border normal bindsym $mod+y border pixel 1 bindsym $mod+u border none #===============状态栏=============== bindsym $mod+m bar mode toggle bar { i3bar_command i3bar -t # status_command i3status status_command py3status position bottom modifier Shift separator_symbol " | " colors { background #000000CC #statusline #000000FF separator #B8F788 focused_workspace #B8F788 #000000AA active_workspace #FFFFFF #FFFFFFAA inactive_workspace #AAAAAA #000000AA #AAAAAA urgent_workspace #E57B85 #000000AA } } #===============窗口间距=============== gaps inner 6 gaps outer 0 smart_gaps on #===============系统命令=============== set $mode_system 注销(O) 关机(S) 重启(R) 取消(Esc) bindsym $mod+shift+q mode "$mode_system" mode "$mode_system" { bindsym o exec i3-msg exit bindsym s exec systemctl poweroff bindsym r exec systemctl reboot bindsym Escape mode "default" } #===============鼠标聚焦=============== focus_follows_mouse no #===============锁屏快捷键=============== # bindsym Mod4+l exec --no-startup-id i3lock -i '/home/huang/Pictures/Wallpapers/universe.png' bindsym Mod4+l exec --no-startup-id i3lock -i 'path/to/lock/screen/wallpaper' #===============自动启动fcitx=============== exec --no-startup-id fcitx bindsym $mod+e exec nautilus #===============音量控制=============== bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -q sset Master 5%+ bindsym XF86AudioLowerVolume exec --no-startup-id amixer -q sset Master 5%- #===============浮动窗口=============== # use Mouse+Mod1 to drag floating windows to their wanted position #floating_modifier $mod #===============打开终端=============== # bindsym $mod+Return exec i3-sensible-terminal bindsym $mod+Return exec lilyterm #===============关闭窗口=============== bindsym Control+Mod1+w kill #===============打开dmenu=============== # start dmenu (a program launcher) bindsym $mod+d exec dmenu_run # There also is the (new) i3-dmenu-desktop which only displays applications # bindsym Mod1+d exec --no-startup-id i3-dmenu-desktop # change focus #bindsym $mod+$left focus left #bindsym $mod+$down focus down #bindsym $mod+$up focus up #bindsym $mod+$right focus right # alternatively, you can use the cursor keys: #===============窗口聚焦=============== bindsym $mod+Left focus left bindsym $mod+Down focus down bindsym $mod+Up focus up bindsym $mod+Right focus right # move focused window #bindsym $mod+Shift+$left move left #bindsym $mod+Shift+$down move down #bindsym $mod+Shift+$up move up #bindsym $mod+Shift+$right move right # alternatively, you can use the cursor keys: #===============窗口移动=============== bindsym $mod+Shift+Left move left bindsym $mod+Shift+Down move down bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right #===============窗口拆分模式=============== bindsym $mod+h split h bindsym $mod+v split v #===============切换全屏=============== bindsym $mod+f fullscreen toggle #===============切换布局模式=============== #bindsym $mod+s layout stacking #bindsym $mod+w layout tabbed #bindsym Mod1+e layout toggle split #===============切换窗口浮动=============== bindsym $mod+Shift+space floating toggle #===============浮动/平铺聚焦切换=============== bindsym $mod+space focus mode_toggle #===============聚焦到父窗口=============== #bindsym $mod+a focus parent #===============聚焦到子窗口=============== #bindsym Mod1+d focus child #===============添加窗口到存储=============== bindsym $mod+Shift+minus move scratchpad #===============切换存储器中的窗口=============== # Show the next scratchpad window or hide the focused scratchpad window. # If there are multiple scratchpad windows, this command cycles through them. bindsym Mod1+minus scratchpad show #===============绑定workspace快捷键=============== # switch to workspace bindsym $mod+1 workspace 1:Info bindsym $mod+2 workspace 2:Web bindsym $mod+3 workspace 3:Work bindsym $mod+4 workspace 4:Work bindsym $mod+5 workspace 5:Work bindsym $mod+6 workspace 6:Work bindsym $mod+7 workspace 7:Work bindsym $mod+8 workspace 8:Other bindsym $mod+9 workspace 9:Other bindsym $mod+0 workspace 10:Other #==============设置workspace默认显示到LVDS1=============== workspace "1:Info" output LVDS1 workspace "2:Web" output LVDS1 workspace "3:Dev" output LVDS1 workspace "4:Dev" output LVDS1 workspace "5:Dev" output LVDS1 workspace "6:Dev" output LVDS1 workspace "7:Dev" output LVDS1 workspace "8:Music" output LVDS1 workspace "9:Other" output LVDS1 workspace "10:Other" output LVDS1 #===============绑定移动窗口到指定workspace快捷键=============== # move focused container to workspace bindsym $mod+Shift+1 move container to workspace 1:Info bindsym $mod+Shift+2 move container to workspace 2:Web bindsym $mod+Shift+3 move container to workspace 3:Work bindsym $mod+Shift+4 move container to workspace 4:Work bindsym $mod+Shift+5 move container to workspace 5:Work bindsym $mod+Shift+6 move container to workspace 6:Work bindsym $mod+Shift+7 move container to workspace 7:Work bindsym $mod+Shift+8 move container to workspace 8:Other bindsym $mod+Shift+9 move container to workspace 9:Other bindsym $mod+Shift+0 move container to workspace 10:Other #===============指定程序打开后出现在指定工作区=============== assign [class="chrome"] 2:Web # assign [class="idea"] 3:Dev # assign [class="VirtualBox"] 9:Other #===============重新加载配置=============== # reload the configuration file bindsym $mod+Shift+c reload #===============重启i3=============== # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym $mod+Shift+r restart #===============退出i3=============== # exit i3 (logs you out of your X session) bindsym $mod+Shift+e exec "i3-nagbar -t warning -m '是否确定退出i3? 这将导致所有工作窗口被关闭.' -b '确定' 'i3-msg exit'" #===============调整窗口大小=============== # resize window (you can also use the mouse for that) mode "resize" { # same bindings, but for the arrow keys bindsym Left resize shrink width 10 px or 10 ppt bindsym Down resize grow height 10 px or 10 ppt bindsym Up resize shrink height 10 px or 10 ppt bindsym Right resize grow width 10 px or 10 ppt # back to normal: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } #===============绑定调整窗口大小快捷键=============== bindsym $mod+r mode "resize" #===============开启i3时自启动项=============== exec_always --no-startup-id feh --bg-fill path/to/background/image exec i3-config-wizard exec --no-startup-id i3-msg "workspace 1:Info" exec compton &
如果复制了我的配置文件,请修改 path/to/background/image
和 path/to/lock/screen/wallpaper
。
至此i3wm的配置已经弄好了,就是这么简单= = 关于 i3wm
的详细配置参考 官方文档 。
执行 yaourt py3status
安装。
py3status
的配置文件在 ~/.i3status
中,在配置 i3wm
的时候我们已经在配置文件中启用了 py3status
,在这一部分只需要配置要启用的模块即可,所有支持的模块可以在 这里找到 。
执行 install noto-fonts-emoji
安装Emoji字体。
以下是我 py3status
的配置文件:
general { output_format = "i3bar" colors = true color_good = "#BBBBBB" color_bad = "#CC1616" color_degraded = "#55858E" interval = 1 } order += "sysdata" order += "cpu_usage" order += "cpu_temperature 0" order += "net_rate" order += "imap" order += "time" order += "volume_status" order += "static_string screenshot" order += "dpms" sysdata { format = ":chart_with_upwards_trend: {mem_used}G :chart_with_downwards_trend: {mem_used_percent}%" color = "#48CCCD" } cpu_usage { format = ":black_square_button: %usage" color = "#52D017" } cpu_temperature 0 { format = ":hotsprings: %degrees °C" max_threshold = 65 path = "/sys/class/thermal/thermal_zone0/temp" color = "#CCFB5D" } net_rate { interfaces = "enp0s25" format = ":small_red_triangle_down:{down} :small_red_triangle:{up}" color = "#FFDB58" } imap { cache_timeout = 60 format = ":envelope_with_arrow: {unseen}" imap_server = 'imap.gmail.com' mailbox = 'INBOX' name = 'you/name' password = 'you/mail/password' port = '993' user = 'your/mail' new_mail_color = "#F87431#F62217" on_click 1 = 'exec google-chrome-stable https://mail.google.com/mail' color = "#FCDFFF" } time { format = ":clock5: %Y-%m-%d %H:%M:%S" color = "#9E7BFF" } volume_status { format = ":loud_sound: {percentage}%" cache_timeout = 1 device = "default" thresholds = [ (0, "#A0CFEC"), (10, "#82CAFF"), (20, "#79BAEC"), (30, "#3BB9FF"), (40, "#56A5EC"), (50, "#5CB3FF"), (60, "#1589FF"), (70, "#157DEC"), (80, "#306EFF"), (90, "#2B65EC") ] } static_string 'screenshot' { format = "" on_click 1 = "exec gnome-screenshot" color = "#C44975" } dpms { format_on = " DPMS" format_off = " DPMS" color_on = "#F9B7FF" color_off = "#6B9299" }
我的配置文件中使用了 imap
模块,需要配置邮箱相关的信息。
volume_status
模块需要安装 pamixer
和 alsa-utils
。
不同的Emoji字体会造成状态栏的图标不一样,我截图中使用的是 nodejs-emojione
,这里的配置使用的是 noto-fonts-emoji
,因为觉得后者 比较好看= =。
执行 install lilyterm
安装终端模拟器。
LilyTerm
的配置文件在 /etc/lilyterm.conf
, 不过不建议直接修改配置文件,可以在启动 i3wm
后打开终端,在终端上右键即可进行可视化配置。字体我使用的 Source Code Pro
+ Noto Sans CJK SC
执行 vim ~/.xinitrx
编辑xinit配置文件, 这一步的配置关系到 i3wm
的启动和搜狗输入法的使用,将内容修改如下:
export LANG=zh_CN.UTF-8 export LANGUAGE=zh_CN:en_US export LC_CTYPE=en_US.UTF-8 export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx exec i3 exec sogou-qimpanel
修改完成后执行 startx
就会发现桌面环境启动成功了。
执行 vim ~/.zshrc
,在文件底部加入这一行 [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
,这样以后登陆系统后会自动运行startx登陆到桌面中。
在桌面环境下打开一个终端(win+回车),执行 install fcitx-im fcitx-configtool fcitx-sogoupinyin
安装 fcitx
套件和搜狗输入法。
安装完成后右击状态栏最右侧的小键盘,在设置中添加搜狗输入法,然后重启系统,就会发现输入法可以使用了,输入法的切换默认按键为 ctrl+space
。
执行 install google-chrome
安装Chrome浏览器,安装完成后按 win+d
调出dmenu,输入 chrome
回车,即可运行Chrome。
执行 install nautilus
安装gnome的资源管理器,安装完成后可以通过 win+e
打开。
为了能够让 nautilus
识别安卓手机,需要执行 install gvfs-mtp
来支持MTP。
执行 install foxitreader
安装福昕PDF阅读软件, 安装完成后按 win+d
调出dmenu,输入 foxitreader
回车,即可运行foxitreader。
执行 install gnome-screenshot
安装gnome的截屏软件,安装完成后点击状态栏中的截屏按钮就会自动截屏。
执行 yaourt shutter
可以安装功能强大的截图软件 shutter
,安装完成后按 win+d
调出dmenu,输入 shutter
回车,即可运行shutter。
执行 install wps-office
安装 wps套件
,虽然绝大多数时候我都会在虚拟机下开windows编辑文档,但是只是查看的话还是很方便的。
执行 install ydcv
安装 ydcv
,通过它再配scratchpad功能,在简单翻译的情境下比任何翻译工具都要好用。
做到这里差不多桌面环境都搭建好了,笔者是实体机上边安装边写的文章,大体上不会有什么问题,如果安装过程中有疑问或者不对的地方欢迎提出讨论。
转载请注明出处:疯狂的爱因斯坦