Package Details: kakaotalk 0.1.0-8

Git Clone URL: https://aur.archlinux.org/kakaotalk.git (read-only, click to copy)
Package Base: kakaotalk
Description: A mobile messaging app for smartphones operated by Kakao Corporation in South Korea
Upstream URL: https://www.kakaocorp.com/page/service/service/KakaoTalk
Keywords: kakao kakaotalk messenger wine x86
Licenses: Unlicense, LicenseRef-KakaoTalk
Submitter: kerryeon
Maintainer: kerryeon
Last Packager: kerryeon
Votes: 4
Popularity: 0.115673
First Submitted: 2023-11-19 16:09 (UTC)
Last Updated: 2026-05-20 07:25 (UTC)

Latest Comments

linukizx commented on 2026-07-15 08:31 (UTC)

안녕하세요

고해상도 노트북을 단독으로 사용하거나, 집/사무실에서 외부 모니터에 연결하는 등 모니터 환경이 자주 바뀌는 사용자들의 경우, 와인(Wine)이 호스트의 배율 설정을 자동으로 따라가지 못해 카카오톡 창과 글씨가 너무 작게 출력되는 문제가 있습니다.

이를 해결하기 위해, 카카오톡이 실행되는 시점에 현재 활성화된 모니터의 배율을 딱 한 번 감지하여 와인 레지스트리에 주입**하는 로직을 _patch_wine() 함수에 추가하는 방향을 제안해 드립니다.

이 패치는 카카오톡이 구동되기 직전(0.01초 내외)에만 실행되며, 이후 exec wine으로 프로세스가 완전히 전환되므로 백그라운드 리소스를 전혀 소모하지 않고 상주하지도 않는 아주 가벼운 로직입니다. Hyprland, KDE Plasma, GNOME, X11 등 다양한 데스크톱 환경을 상호 보완하도록 설계했으며, 예외 처리(|| true)를 철저히 하여 명령어 실패 시에도 스크립트가 뻗지 않고 안전하게 기본값(96 DPI)으로 작동합니다.

제안하는 _patch_wine() 함수의 수정안 코드는 아래와 같습니다.

```bash function _patch_wine() { # Patch #5: Install CJK fonts if not exists # Issue: https://github.com/ulagbulag/kakaotalk/issues/5 if ! cat "${WINEPREFIX}/winetricks.log" 2>/dev/null \vert{} grep -Posq '^cjkfonts$'; then winetricks --optout --unattended corefonts cjkfonts fi

###########################################################
# [동적 대응] 모니터 변경 대비 시동 시 DPI 감지 패치      #
###########################################################
echo 'Detecting current active monitor scaling...'
local host_dpi=""

# 1. Hyprland 환경 대응 (현재 포커스된 모니터의 배율 감지)
if which hyprctl >/dev/null 2>&1; then
    local hypr_scale=$(hyprctl monitors 2>/dev/null | awk '/focused: yes/{p=1} p && /scale:/{print $2; exit} /Monitor/{if(p) exit}' || true)
    if [ -n "${hypr_scale}" ]; then
        host_dpi=$(awk "BEGIN {print int(${hypr_scale} * 96)}" 2>/dev/null || true)
    fi
fi

# 2. KDE Plasma 환경 대응 (kscreen-doctor 이용해 현재 활성화된 모니터 배율 감지)
if [ -z "${host_dpi}" ] && which kscreen-doctor >/dev/null 2>&1; then
    local kde_scale=$(kscreen-doctor -o 2>/dev/null | grep -i "scale:" | head -n1 | awk -F'scale: ' '{print $2}' | awk '{print $1}' || true)
    if [ -n "${kde_scale}" ]; then
        host_dpi=$(awk "BEGIN {print int(${kde_scale} * 96)}" 2>/dev/null || true)
    fi
fi

# 3. GNOME 환경 대응 (gsettings 값 기반 동적 계산)
if [ -z "${host_dpi}" ] && which gsettings >/dev/null 2>&1; then
    local g_scale=$(gsettings get org.gnome.desktop.interface scaling-factor 2>/dev/null | awk '{print $2}' || true)
    local g_text_scale=$(gsettings get org.gnome.desktop.interface text-scaling-factor 2>/dev/null || true)
    [ -z "${g_scale}" ] \vert{}\vert{} [ "${g_scale}" -eq 0 ] 2>/dev/null && g_scale=1
    if [ -n "${g_text_scale}" ]; then
        host_dpi=$(awk "BEGIN {print int(${g_scale} *${g_text_scale} * 96)}" 2>/dev/null || true)
    fi
fi

# 4. X11 / xrdb 기본값 동적 로드 (모니터 디스플레이 프로필 세팅 추적)
if [ -z "${host_dpi}" ]; then
    host_dpi=$(xrdb -query 2>/dev/null | awk '/^[Xx]ft\.[Dd]pi:/ {print $2}' || true)
    host_dpi=${host_dpi%.*}
fi

# 5. 최종 예외 처리 (모든 감지 실패 시 기본 96 DPI = 100% 배율 고정)
if [ -z "${host_dpi}" ] \vert{}\vert{} [ "${host_dpi}" -lt 96 ] 2>/dev/null; then
    host_dpi=96
fi

echo "-> Dynamically applied DPI: ${host_dpi}"

# 와인이 켜지기 직전, 감지한 DPI 설정을 레지스트리에 강제 주입
wine reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v LogPixels /t REG_DWORD /d "${host_dpi}" /f >/dev/null 2>&1 || true
wine reg add "HKEY_CURRENT_USER\Software\Wine\Fonts" /v LogPixels /t REG_DWORD /d "${host_dpi}" /f >/dev/null 2>&1 || true
###########################################################

# Patch #5: Detect and apply IME-dependent environment variables
# Issue: [https://github.com/ulagbulag/kakaotalk/issues/5](https://github.com/ulagbulag/kakaotalk/issues/5)
if ! echo "x${XMODIFIERS}" | grep -Posq '^x\*?@im='; then
    # Probe current IME (alphabetical order)
    im=''
    if pgrep fcitx >/dev/null; then
        im='fcitx'
    elif pgrep ibus >/dev/null; then
        im='ibus'
    elif pgrep kime >/dev/null; then
        im='kime'
    elif pgrep nimf >/dev/null; then
        im='nimf'
    fi

    # Apply
    if [ "x${im}" != 'x' ]; then
        export XMODIFIERS="@im=${im}"
    fi
fi

}

kerryeon commented on 2026-05-20 07:44 (UTC) (edited on 2026-05-20 07:44 (UTC) by kerryeon)

제보 감사합니다! 약관 파일 주소를 업데이트하였습니다.

shkim commented on 2026-05-20 07:03 (UTC)

https://www.kakao.com/ko/terms.html 페이지가 사라져서 빌드가 불가능합니다. https://www.kakao.com/policy/kakaoTerms?type=s&version=simple&lang=ko 여기로 옮겨진 것 같습니다