安装NES模拟器fceux
sudo apt install fceux
fceux

安装Doom
sudo apt install prboom doom-wad-shareware
多人
prboom-game-server
prboom -net 172.20.0.1
单机
prboom

Gmu音乐播放器(我没整明白)
https://github.com/NeoTheFox/gmu-chip.git
https://wej.k.vu/projects/gmu/

命令行播放音乐(mp3不卡顿)
sudo apt-get install sox libsox-fmt-all
chip@chip:~/Music$ play 灰澈\ -\ 森林.mp3
play *mp3 播放当前文件夹的所有mp3
Ctrl+C 下一曲

GUI版系统电量显示
先安装xfce4-genmon-plugin
sudo apt-get install xfce4-genmon-plugin
https://github.com/editkid/chip-battery-status

GUI版系统亮度调整
sudo apt-get install xfce4-power-manager-plugins

DOSBox
sudo apt-get install -y dosbox
sudo wget -O ~/.dosbox/dosbox-0.74.conf https://gitee.com/awnuxcvbn/PocketHome/raw/master/files/dosbox-0.74.conf
sudo nano /home/chip/.dosbox/dosbox-0.74.conf
这个配置文件的倒数第二行是DOSBox的C盘挂载路径
比如
MOUNT C /home/chip/Documents/DOSBox
C:
Install Price of Persia
wget http://www.bestoldgames.net/download/bgames/prince-of-persia.zip
unzip prince-of-persia.zip
Install Golden Axe
wget http://www.bestoldgames.net/download/bgames/wolfenstein-3d.zip
unzip wolfenstein-3d.zip
Install Wolfenstein 3D
wget http://www.bestoldgames.net/download/bgames/golden-axe.zip
unzip golden-axe.zip

通过命令行连接wifi(双引号不能少)
sudo nmcli d wifi connect "wifi名" password "wifi密码" wlan0

键盘功能键
wget -O /home/chip/.Xmodmap https://gitee.com/awnuxcvbn/PocketHome/raw/master/files/.Xmodmap
wget -O /home/chip/.xinitrc https://gitee.com/awnuxcvbn/PocketHome/raw/master/files/.xinitrc

更新pico8
wget www.lexaloffle.com/dl/chip/pico-8_0.2.4c_chip.zip
sudo unzip pico-8_0.2.4c_chip.zip -d /usr/lib

midori
wget https://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/pool/main/m/midori/midori_0.5.11-ds1-4_armhf.deb
sudo dpkg -i midori_0.5.11-ds1-4_armhf.deb
sudo apt install zeitgeist
sudo apt-get -f install

using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class UScrollRect : ScrollRect
{
    public RectTransform rect;
    /// <summary>
    /// 高度 往下拉是负数   往上拉是正数
    /// </summary>
    float dropValue = -30f;
    /// <summary>
    /// 是否刷新
    /// </summary>
    bool isRefresh = false;
    /// <summary>
    /// 是否处于拖动
    /// </summary>
    bool isDrag = false;
    /// <summary>
    /// 显示、隐藏刷新字段
    /// </summary>
    public Action<bool> OnValue;
    /// <summary>
    /// 如果满足刷新条件 执行的方法
    /// </summary>
    public Action OnRefresh;

    protected override void Awake()
    {
        base.Awake();
        rect = GetComponentInChildren<ContentSizeFitter>().GetComponent<RectTransform>();
        onValueChanged.AddListener(ScrollValueChanged);
    }

    /// <summary>
    /// 当ScrollRect被拖动时
    /// </summary>
    /// <param name="vector">被拖动的距离与Content的大小比例</param>
    void ScrollValueChanged(Vector2 vector)
    {
        //如果不拖动 当然不执行之下的代码
        if (!isDrag)
        {
            return;
        }
        //如果拖动的距离大于给定的值
        if (rect.anchoredPosition.y < dropValue)
        {
            isRefresh = true;
            if (OnValue != null)
            {
                OnValue(isRefresh);
            }
        }
        else
        {
            isRefresh = false;
            if (OnValue != null)
            {
                OnValue(isRefresh);
            }
        }
    }

    public override void OnBeginDrag(PointerEventData eventData)
    {
        base.OnBeginDrag(eventData);
        isDrag = true;
    }

    public override void OnEndDrag(PointerEventData eventData)
    {
        base.OnEndDrag(eventData);
        OnValue(false);
        if (isRefresh)
        {
            if (OnRefresh != null)
            {
                OnRefresh();
            }
        }
        isRefresh = false;
        isDrag = false;
    }
}