diff options
Diffstat (limited to 'kakaotalk')
| -rwxr-xr-x | kakaotalk | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/kakaotalk b/kakaotalk new file mode 100755 index 0000000..69e0020 --- /dev/null +++ b/kakaotalk @@ -0,0 +1,117 @@ +#!/bin/bash +# Copyright (c) 2023 Ho Kim (ho.kim@ulagbulag.io). All rights reserved. +# Use of this source code is governed by The Unlicense license that can be +# found in the LICENSE file. + +# Prehibit errors +set -e -o pipefail + +########################################################### +# Install Checker # +########################################################### + +function _check_wine() { + WINE_EXE="$1" + + ls "${WINE_EXE}" >/dev/null 2>/dev/null +} + +########################################################### +# Installer # +########################################################### + +function _install_wine() { + SRC_URL='https://app-pc.kakaocdn.net/talk/win32/KakaoTalk_Setup.exe' + DST_FILE="$(mktemp)" + WINE_EXE="$1" + + # Mock home directory + HOME_ORIGIN="${HOME}" + HOME_PATCH="${WINEPREFIX}/tmp" + export HOME="${HOME_PATCH}" + + echo 'Installing Kakaotalk...' + curl -s "${SRC_URL}" -o "${DST_FILE}" + wineboot + wine "${DST_FILE}" /S + rm "${DST_FILE}" + + # Install Fonts + _font_install + + # Remove tmp home directory + rm -rf "${HOME_PATCH}" + + # Restore home directory + export HOME="${HOME_ORIGIN}" + + # Create a desktop shortcut + if [ -d "${HOME}/Desktop/" ]; then + ICON_SRC='/usr/share/applications/kakaotalk.desktop' + ICON_DST="${HOME}/Desktop/kakaotalk.desktop" + + if [ ! -f "${ICON_DST}" ]; then + mkdir -p "$(dirname "${ICON_DST}")" + cp "${ICON_SRC}" "${ICON_DST}" + chmod u+x "${ICON_DST}" + + # Mark as trusted + if which gio >/dev/null 2>/dev/null; then + gio set -t string "${ICON_DST}" metadata::xfce-exe-checksum "$(sha256sum "${ICON_SRC}" | awk '{print $1}')" + fi + fi + fi +} + +########################################################### +# Font Installer # +########################################################### + +function _font_install() { + FONT_URL='https://campaign-cdn.pstatic.net/0/hangeul/2022/zip_v2/nanum-all.zip' + DST_FONT="$(mktemp -d)" + FONT_DIR="${WINEPREFIX}/drive_c/windows/Fonts" + + echo 'Installing Fonts...' + curl -s "${FONT_URL}" -o "${DST_FONT}/nanum-all.zip" + ! command -v unzip &> /dev/null && sudo pacman -Sy unzip + unzip "${DST_FONT}/nanum-all.zip" -d "${DST_FONT}" + find "${DST_FONT}" -type f -name "*.ttf" -exec mv -f {} "${FONT_DIR}" \; + rm -rf "${DST_FONT}" +} + +########################################################### +# Executor # +########################################################### + +function _exec_wine() { + WINE_EXE="$1" + + echo 'Executing Kakaotalk...' + exec wine "${WINE_EXE}" +} + +########################################################### +# Main Function # +########################################################### + +# Define a main function +function main() { + # Configure environment variables + export LANG='en_US.UTF-8' + export LC_ALL='en_US.UTF-8' + export WINEARCH='win64' + export WINEPREFIX="${HOME}/.local/share/kakaotalk" + + # Install + WINE_EXE="${WINEPREFIX}/drive_c/Program Files (x86)/Kakao/KakaoTalk/KakaoTalk.exe" + if ! _check_wine "${WINE_EXE}"; then + _install_wine "${WINE_EXE}" + fi + + # Exec + _exec_wine "${WINE_EXE}" +} + +# Execute main function +main "$@" || exit 1 |
