summaryrefslogtreecommitdiff
path: root/kakaotalk
diff options
context:
space:
mode:
Diffstat (limited to 'kakaotalk')
-rwxr-xr-xkakaotalk117
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