-
Notifications
You must be signed in to change notification settings - Fork 14
/
pinejinx.sh
159 lines (159 loc) · 6.04 KB
/
pinejinx.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#!/usr/bin/env sh
# Prepare environment
rm -rf /tmp/pineapple
mkdir -p /tmp/pineapple && cd /tmp/pineapple
#Define the functions
getoptions() {
if ! [ "$(command -v gamemoderun)" ]; then
printf "Warning:Gamemode not found!\nIf you want to use it you'll have to install it.\n"
printf "\e[91m$(tput bold)This means that if you choose Y you will have to install it manually yourself (sudo pacman -Syu gamemode on arch)!\e[0m\n"
fi
printf "Gamemode is a tool that improves performance on non custom kernels.\n"
read -p "Do you want to use it? [y/N]: " gamemode
read -p "Optimize Ryujinx for 1)Nvidia 2)Intel and AMD 3)None: " gpuopt
if [ "$gpuopt" = "2" ]; then
printf "MESA_NO_ERROR can give performance boosts in games but potentially crash others (very rare).\n"
read -p "Do you want to use it? [y/N]: " mesanoerror
fi
read -p "Do you want to disable the console window? [y/N]: " console
read -p "Do you want PineJinx to setup an alias for ryujinx? [y/N]: " alias
}
makealias() {
ryualias='alias ryujinx="'$arg' DOTNET_EnableAlternateStackCheck=1 GDK_BACKEND=x11 /home/'${USER}'/.local/share/Ryujinx/Ryujinx"'
if [ -z "${SHELL##*zsh*}" ]; then
printf "Detected shell: ZSH\n"
FILE="/home/${USER}/.zshrc"
elif [ -z "${SHELL##*bash*}" ]; then
printf "Detected shell: BASH\n"
FILE="/home/${USER}/.bashrc"
else
printf "Unsupported shell, no alias will be created!\n"
return 1
fi
if [ -f $FILE ]; then
sed -i '/alias ryujinx/d' $FILE
echo $ryualias >> $FILE
else
printf "$FILE does not exist, creating new file..."
echo $ryualias > $FILE
fi
printf "Alias created successfully, use the command ryujinx the next time you open your terminal.\n"
}
removealias() {
if [ -z "${SHELL##*zsh*}" ]; then
FILE="/home/${USER}/.zshrc"
elif [ -z "${SHELL##*bash*}" ]; then
FILE="/home/${USER}/.bashrc"
else
return 1
fi
sed -i '/alias ryujinx/d' $FILE
}
install() {
printf "Downloading $version...\n"
curl -L "https://github.com/Ryujinx/release-channel-master/releases/download/${version}/ryujinx-${version}-linux_x64.tar.gz" > ryujinx-${version}-linux_x64.tar.gz
tar -xf ryujinx-${version}-linux_x64.tar.gz
arch_dir=$(tar --exclude='*/*' -tf ryujinx-${version}-linux_x64.tar.gz)
if [ -d "$arch_dir" ]; then
printf "Extraction successful!\n"
mkdir -p /home/${USER}/.local/share/Ryujinx
cp -a $arch_dir/. /home/${USER}/.local/share/Ryujinx
else
printf "Extraction failed!\nAborting...\n"
exit
fi
curl -s -L "https://raw.githubusercontent.com/edisionnano/Pine-jinx/main/Ryujinx.desktop" > Ryujinx.desktop
curl -s -L "https://raw.githubusercontent.com/edisionnano/Pine-jinx/main/Ryujinx.png" > Ryujinx.png
curl -s -L "https://raw.githubusercontent.com/edisionnano/Pine-jinx/main/Ryujinx.xml" > Ryujinx.xml
if [ "$noconfirm" = "1" ]; then
:
else
getoptions
fi
if [ "$gamemode" = "y" ] || [ "$gamemode" = "Y" ]; then
arg1="gamemoderun "
curl -s -L "https://raw.githubusercontent.com/edisionnano/Pine-jinx/main/gamemode.ini" > /home/${USER}/.config/gamemode.ini
else
arg1=""
fi
if [ "$gpuopt" = "1" ]; then
arg2="__GL_THREADED_OPTIMIZATIONS=0 __GL_SYNC_TO_VBLANK=0 "
elif [ "$gpuopt" = "2" ]; then
arg2="AMD_DEBUG=w32ge,w32cs,nohyperz,nofmask glsl_zero_init=true radeonsi_clamp_div_by_zero=true force_integer_tex_nearest=true mesa_glthread=false vblank_mode=0 RADV_PERFTEST=bolist "
if [ "$mesanoerror" = "y" ] || [ "$mesanoerror" = "Y" ]; then
arg3="MESA_NO_ERROR=1 "
else
arg3=""
fi
else
arg2=''
fi
arg=$(echo "$arg2$arg3$arg1"|sed 's/ *$//')
if [ "$console" = "y" ] || [ "$console" = "Y" ]; then
sed -i "s/Terminal=true/Terminal=false/g" Ryujinx.desktop
fi
if [ "$alias" = "y" ] || [ "$alias" = "Y" ]; then
makealias
else
:
fi
#Desktop entries do not accept relative paths so the user's name must be in the file
sed -i "s/dummy/${USER}/g" Ryujinx.desktop
#Append any optimizations
sed -i "s/x11/x11 ${arg}/" Ryujinx.desktop
#Place desktop entry
mkdir -p /home/${USER}/.local/share/applications && cp Ryujinx.desktop /home/${USER}/.local/share/applications
#Place icon
mkdir -p /home/${USER}/.local/share/icons && cp Ryujinx.png /home/${USER}/.local/share/icons
#Place mime entry
mkdir -p /home/${USER}/.local/share/mime/packages && cp Ryujinx.xml /home/${USER}/.local/share/mime/packages
#Set the rights
chmod +x /home/${USER}/.local/share/Ryujinx/Ryujinx
#Update the MIME database
update-mime-database /home/${USER}/.local/share/mime
#Update the application database
update-desktop-database /home/${USER}/.local/share/applications
printf "Installation successful, launch Ryujinx from your app launcher.\n"
printf "Also don't forget to show your love on Patreon at https://www.patreon.com/ryujinx\n"
}
uninstall() {
printf "Uninstalling..."
rm -rf /home/${USER}/.local/share/Ryujinx
rm -rf /home/${USER}/.local/share/mime/packages/Ryujinx.xml
rm -rf /home/${USER}/.local/share/applications/Ryujinx.desktop
rm -rf /home/${USER}/.local/share/icons/Ryujinx.png
rm -rf /home/${USER}/.config/gamemode.ini
update-mime-database /home/${USER}/.local/share/mime
update-desktop-database /home/${USER}/.local/share/applications
printf "\nUninstallation successful!\n"
removealias
}
clear
if [ "$option" != "2" ]; then
printf "Welcome to PinEApple-Ryujinx\n"
printf "Fetching latest version info from the Github release page...\n"
version=$(curl -s https://api.github.com/repos/Ryujinx/release-channel-master/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
printf "Latest version is: $version\n"
fi
if [ -n "$option" ]; then
:
else
printf "[1] Install it\n"
printf "[2] Uninstall\n"
printf "[3] Reinstall\Repair\n"
printf "[4] LDN version\n"
read -p "Choose an option (or anything else to quit): " option
fi
if [ "$option" = "1" ]; then
install
elif [ "$option" = "2" ]; then
uninstall
elif [ "$option" = "3" ]; then
uninstall
install
elif [ "$option" = "4" ]; then
bash -c "$(curl -s https://raw.githubusercontent.com/edisionnano/Pine-jinx/LDN/pinejinx.sh)"
else
:
fi
exit