CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·방탄소년당 ·일본산당 ·소시당 ·개발한당 ·자전거당 ·이륜차당 ·AI당 ·안드로메당 ·소셜게임한당 ·골프당 ·바다건너당 ·걸그룹당 ·곰돌이당 ·나스당 ·콘솔한당 ·가상화폐당 ·키보드당 ·클다방 ·패스오브엑자일당 ·리눅서당 ·퐁당퐁당 ·물고기당 ·전기자전거당 ·노젓는당 ·디아블로당 ·찰칵찍당 ·라즈베리파이당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·육아당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

리눅서당

리눅서수다
AV Layout + MPV Keybinding(for Image Viewer) 4

IPZ-721
10,737
2025-07-31 00:54:27 수정일 : 2025-07-31 01:21:29 193.♡.16.124

0. 진정한 미니멀 : #000000


1. AV Layout : 음악/애니메이션/유투브/TV 감상 및 웹서핑

    3x 워크스페이스

 |  좌: 스포티파이 앱, 유투브 뮤직 앱, (또는 최하단 mpv TV 채널)

 | 센터: qutebrowser, (또는 터미널)

 | 우: kitty terminal -> tmux (fastanime, rmpc, cava, yt-x) -> "Win + F8" 스크래치패드 토글 키

 | 우측 하단: mpv 유투브 -> root window 처럼 작동 -> wm 제어권 밖으로 (wm 키 입력 안됨)


2. Ricing-쌀질 모드: 2x 워크 스페이스

 | 좌: gemini, qutebrowser, pdf viewer 등 강좌/메뉴얼/위키/git 설명서 보는 부분, 복사/다운로드/뷰어 용도.

 |우: 터미널들 nvim 아님, 설정파일들 vim으로 개별적으로 열어서 수정하는 용도

 |센터: rational Floating - "Win + F12" 스크래치패드 tmux 토글 메인 터미널 : ranger | yazi(듀얼 팬 이상,디렉토리 이동, 파일 복사/붙여넣기, 잘라내기/붙여넣기), 쉘 실행용, CLI 앱들

* 좌에서 키보드나 마우스로 긁어서, 우로 붙여 넣기, '모방은 창조의 어머니'


* 쌀질 팁: 무수히 많은 설정 파일들을 열어서 수정해야 합니다.GUI 파일 매니저면 군데 군데 폴더들 찾아서 크릭하고 이동하고 파일 여는데 생각보다 시간이 많이 소모되어 던 거 같습니다

ranger나 yazi 같은 파일 매니저가 필요합니다

CLI 파일 매니저에서 zoxide 이용 폴더 이동, 폴더 북마크 기능 이용 폴더 이동, CLI 파일 매니저 내에서 fzf, ag, fd, ripgrep

이용 파일 검색 이동하면 시간을 절약 할 수 있습니다.


* 근데, 설정 파일 여는 용도,디렉토리 이동은 파일 매니저 없이, 그냥 fzf + fd + history 조합이면 충분 한 것 같습니다.


-- fzf 단축키

A. Ctrl + r : fzf 히스토리

B. Alt + t : fzf 파일 찾기

C. Alt + c : fzf 디렉토리 이동

D. 쉘의 자동 완성 기능

E. 쉘의 자체 history 기능


그러고 제미니 믿고 막 돌리다가 참사가 발생햇네요. 기존 영문 주석을 한글 주석으로 바꿔서 주석을 달라' 켔는데. 흠.. 부산 사투리로 질문해서 삐꾸 난 걸 까요?


파일이 유실 되엇습니다ㅠ 2014년부터 설정해 왓던 파일인데. 하드 언저리에 2018년도 설정 백업 파일을 찾앗습니다. 앞으로 중요한 파일은 재미니에게 파일을 새로 생성하거나 덮어 쓸거면 무조건 백업 파일도 만들어 달라고 질문을 날려야 하게씁니다


새로 복구/세팅하면서 mpv man 페이지를 읽어보니 vo=kitty 프로토콜이 추가 되어 있네요.

적용 해 봤는데 잘 되지만 성능 저하가 있습니다.1080p는 프레임 저하. 720p 토랭이는 실시간 재생하는 데 전혀 문제가 없엇습니다.

기존 파이션 vapoursyntch, lua, 쉘 스크립트들은 동일하게 사용 할 수 있었지만, 커스텀 세이터는 모두 비활성화

man 페이지에는 tmux 상에서도 가능하다 나와서 좋아라 했는데.시스팀 프리징 났습니다.

이것 저것 버그가 좀 있는 거 같지만, 언제가 해결 될 꺼라 기대합니다.터미널에서 이미지/영상 뷰어용도로는 무난합니다.


[메인 mpv key binding]

- 데모 영상(강력 후방 주의) :  크릭 주의 요망

 https://drive.google.com/file/d/1ee1PN1_wFCruhU7AYbKI2P-vJxbHf0ou/view?usp=sharing


- 영상 재생용 Mpv Default Key Binding


------- Image Viewer용 mpv custom key binding --------

1. ~/.config/mpv/input-image.conf

# vim:ft=cfg:foldmethod=marker


### mpv 이미지 뷰어용 설정 파일 (feh/vi 단축키 스타일) ###


# --- 탐색 ---
# 다음/이전 이미지로 이동
n repeatable playlist-next force
p repeatable playlist-prev
k playlist-next
j playlist-prev
SPACE playlist-next
BS playlist-prev
RIGHT playlist-next
LEFT playlist-prev
WHEEL_DOWN playlist-next # 마우스 스크롤 밑으로
WHEEL_UP playlist-prev # 마우스 스크롤 위로
HOME no-osd set playlist-pos 0 # Playlist 처음으로
END no-osd set playlist-pos-1 ${playlist-count} # Playlist 마지막으로




# --- 확대 및 이동 ---
# 확대
UP add video-zoom 0.1
= add video-zoom 0.1
KP_ADD add video-zoom 0.1


# 축소
DOWN add video-zoom -0.1
- add video-zoom -0.1
KP_SUBTRACT add video-zoom -0.1


# 확대 축소(마우스 휠 스크롤) : 위 WHEEL_DOWN/UP 키와 겹침/증복, 주석 해제하면 줌으로 동작,주석시 이전/다음 페이지로 동작
#MOUSE_BTN3 add video-zoom 0.1
#MOUSE_BTN4 add video-zoom -0.1


# 확대 초기화
0 set video-zoom 0
KP_MULTIPLY set video-zoom 0


# 이미지 이동 (패닝)
K add video-pan-y -0.01
J add video-pan-y 0.01
H add video-pan-x -0.01
L add video-pan-x 0.01
Alt+UP add video-pan-y -0.01
Alt+DOWN add video-pan-y 0.01
Alt+LEFT add video-pan-x -0.01
Alt+RIGHT add video-pan-x 0.01
Ctrl+UP add video-pan-y -0.1
Ctrl+DOWN add video-pan-y 0.1
Ctrl+LEFT add video-pan-x -0.1
Ctrl+RIGHT add video-pan-x 0.1
# 이미지 이동 (패닝) : 키패드(NumLock on)
Ctrl+KP2 add video-pan-y 0.01
Ctrl+KP4 add video-pan-x -0.01
Ctrl+KP6 add video-pan-x 0.01
Ctrl+KP8 add video-pan-y -0.01
Ctrl+KP1 add video-pan-x -0.01;add video-pan-y 0.01
Ctrl+KP3 add video-pan-x 0.01;add video-pan-y 0.01
Ctrl+KP7 add video-pan-x -0.01;add video-pan-y -0.01
Ctrl+KP9 add video-pan-x 0.01;add video-pan-y -0.01
# 이동 초기화
r set video-pan-x 0; set video-pan-y 0
Ctrl+KP5 set video-pan-x 0; set video-pan-y 0


# 확대/이동 초기화 (화면에 맞춤)
z set video-zoom 0; set video-pan-x 0; set video-pan-y 0
u set video-zoom 0; set video-pan-x 0; set video-pan-y 0




# --- 기타 제어 ---
# 시계 방향으로 90도 회전
#> add video-rotate 90 # "Shift + ."
> no-osd cycle-values video-rotate "90" "180" "270" "0"


# 반시계 방향으로 90도 회전
#< add video-rotate -90 # "Shift + ,"
< no-osd cycle-values video-rotate "270" "180" "90" "0"


# 좌우 반전
h vf toggle hflip
| vf toggle hflip


# 상하 반전
v vf toggle vflip
_ vf toggle vflip


# Toggle Aspect Ratio: 화면비 전환
A cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "no"


# 스케이링 알고리즘 전환
a cycle-values scale bilinear lanczos ewa_lanczos ewa_lanczossharp ewa_lanczos4sharpest mitchell hermite catmull_rom oversample


# Toggle Color Management on or off
Alt+i cycle icc-profile-auto
# Load an ICC profile and use it to transform video RGB to screen output. Needs LittleCMS 2 sup‐ port compiled in. This option overrides the --target-prim, --target-trc and --icc-profile-auto options.
#Ctrl+i cycle icc-profile="<icc profile file>"


# 전체 화면 전환
f cycle fullscreen


# 마우스 커서 보이기/숨기기
Ctrl+o cycle mouse-passthrough


# 스크린샷 (현재 보이는 화면을 파일로 저장)
s screenshot




# --- 애니메이션 이미지 제어 (GIF 등) ---
# 앞/뒤/ 한프레임씩 이동
, frame-back-step
. frame-step
# 일시정지/재생
/ cycle pause




# --- 바탕화면 설정 ---
# {png|jpg|webp} 단일 프레임 파일만,animation gif/webp와 동영상 파일은 lua script 필요. 작성 후 키바인딩
b run "/bin/sh" "-c" "notify-send -h string:x-canonical-private-synchronous:my-notification -i '${path}' '배경화면 지정' '${filename}'; feh --bg-scale '${path}'"
# HTTP 스트림을 포함한 모든 영상, 이미지 : ~/.config/stripts/set-wallpaper.lua
alt+b script-binding set_wallpaper




# --- 이미지 파일 삭제/휴지통 이동 ---
# 파일 시스템에서 현재 파일을 영구적으로 삭제하고, 재생목록에서 현재 이미지를 제거합니다.
Shift+Ctrl+Alt+DEL run "/bin/sh" "-c" "rm '${path}'"; playlist-remove current
# 파일 시스템에서 현재 파일을 휴지통으로 보내고, 재생목록에서 현재 이미지를 제거합니다.
Shift+Ctrl+Meta+DEL run "/bin/sh" "-c" "trash '${path}'"; playlist-remove current


# --- 현재 보고 있는 이미지 포스터의 영화/드라마 파일을 찾아서 바로 재생한다.---
alt+p run "/bin/sh" "-c" "play-video.sh '${filename}' rofi"; quit


# --- 종료 ---
q quit
ESC quit




## --- Lua Custom Keybind --- {{{
###########################################################
## Lua script custom keybinding
## lua scripts file: ~/.config/mpv/scripts/
## cutomization conf: ~/.config/mpv/lua-settings/


## mpv-manga-reader https://github.com/dudemanguy/mpv-manga-reader
D script-message double-page-mode


## stats.lua https://github.com/Argon-/mpv-stats
# stats.conf
# 1 stats (as usual)
# 2 frame timings
#i script-binding stats/display-stats # 아래 jumtofile 중북된다.
I script-binding stats/display-stats-toggle


## autocrop.lua https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autocrop.lua
C script-binding auto_crop


## autoload.lua https://github.com/mpv-player/mpv/blob/master/TOOLS/lua/autoload.lua


## easycrop.lua https://github.com/aidanholm/mpv-easycrop
#c script-binding easy_crop


## playlistmanager.lua https://github.com/jonniek/mpv-playlistmanager/blob/master/playlistmanager.luao
# playlistmanager.conf https://github.com/jonniek/mpv-playlistmanager/blob/master/playlistmanager.conf
#enter playlist-next ; script-message playlistmanager show playlist
# shitft+enter: show playlist toggle
Ctrl+p script-message playlistmanager sort startover
P script-message playlistmanager show playlist toggle # P로 변경, 상단 p playlist-prev 키(이전 이미지로 이동)를 덮어쓴다.
i script-binding jumptofile


## Encode, Various scripts for mpv https://github.com/occivink/mpv-scripts#encodelua
# vo mode: no hwdec, no vapoursynth
# {blacklist-extensions,blur-edges,crop,encode,misc,seek-to}.lua
# {blacklist-extensions,blur-edges,crop,encode_slice,encode_webm}.conf
## crop.lua
c script-message-to crop start-crop # start cropping
ctrl+c vf del -1 # (Deprecated. Use mvp-live-filters) remove video filter by 1 setp
alt+c script-message-to crop toggle-crop # or use the ready-make "toggle" binding
d script-message-to delogo start-delogo # start deloging
## delogo.lua
ctrl+d script-message-to delogo toggle-delogo # or use the ready-make "toggle" binding
## encode.lua
alt+e script-message-to encode set-timestamp # encode (default profile: vp8 webms)
e script-message-to encode set-timestamp encode_mp4 # encode (custom mp4 profile)
E script-message-to encode set-timestamp encode_slice # slice (custom profile)
## blur-edges.lua
#b script-message-to blur_edges toggle-blur # 위 b run /bin/sh feh 와 중복
## seek-to.lua
t script-message-to seek_to toggle-seeker




## mpv-live-filters: https://github.com/hdb/mpv-live-filters
################################
#ctrl+z undo last filter
#ctrl+shift+z re-do filter
#ctrl+x toggle filters on/off
#ctrl+shift+x clear all filters
################################


## image-viewer.lua https://github.com/occivink/mpv-image-viewer
#
## mpv-gallery-view https://github.com/occivink/mpv-gallery-view
# {gallery|gallery-thumbgen}.lua
# gallery.conf
#g script-message gallery-view
g script-message contact-sheet-close; script-message playlist-view-toggle
ctrl+alt+c script-message playlist-view-close; script-message contact-sheet-toggle
#g ignore
#g-y script-message-to playlist_view playlist-view-toggle


## mpv_thumbnail_script
shift+alt+s script-binding generate-thumbnails




2. ~/.local/bin/play-video.sh

#!/bin/bash


# 스크립트 실행 시 키워드가 주어졌는지 확인합니다.
if [ -z "$1" ]; then
  echo "사용법: $0 <검색 키워드> [fzf|rofi]"
  echo "  - 두 번째 인자로 fzf 또는 rofi를 지정하여 선택 도구를 변경할 수 있습니다 (기본값: rofi)."
  exit 1
fi


KEYWORD="$1"
UI_CHOICE="$2"


# 영화/드라마 파일 : 제목.{mp4|mkv|mov|ts}
# 영화/드라마 포스터 : 제목-poster.{jpg|png|webp}
# 이미지 포스터 파일에서 제목만 추출한다.
# ex) OFES-024-poster.jpg ----> OFES-024
KEYWORD=$(echo "$KEYWORD" | sed -E 's/(.*)(-poster.*)/\1/')


SEARCH_DIR="/run/media/nietz/External_HDD/Jav/Studio/__Uploading"


# fd로 동영상 파일을 검색하고, 결과를 배열로 저장합니다.
# -i: 대소문자 무시, -t f: 파일 타입, -e <ext>: 확장자
mapfile -t files < <(fd -i -t f -e mp4 -e mkv -e avi -e mov -e wmv -e flv -e webm "$KEYWORD" "$SEARCH_DIR")


# 검색된 파일의 개수를 확인합니다.
file_count=${#files[@]}


if [ "$file_count" -eq 0 ]; then
  # 파일이 없을 경우
  echo "키워드 '$KEYWORD'에 해당하는 영상 파일을 찾을 수 없습니다."
  exit 0
elif [ "$file_count" -eq 1 ]; then
  # 파일이 하나일 경우, 바로 재생
  echo "파일 1개를 찾았습니다. 바로 재생합니다: ${files[0]}"
  mpv "${files[0]}"
else
  # 파일이 여러 개일 경우, 선택한 UI 도구를 사용
  echo "${file_count}개의 파일을 찾았습니다. 재생할 파일을 선택하세요:"


  if [ "$UI_CHOICE" == "fzf" ]; then
    # fzf로 선택
    printf "%s\n" "${files[@]}" | fzf | xargs -r mpv
  else
    # rofi로 선택 (기본값)
    chosen_file=$(printf "%s\n" "${files[@]}" | rofi -dmenu -p "재생할 파일 선택")


    if [ -n "$chosen_file" ]; then
      mpv "$chosen_file"
    else
      echo "아무 파일도 선택되지 않았습니다."
    fi
  fi
fi



- 실행: $ mpv --input-conf=~/.config/mpv/input-image.conf ~/Wallpaper

위 단축키 파일이 작동하는 지 확인합니다.


3. ~/.config/mpv/mpv.conf

커스컴 profile 을 만들어서 설정파일 하단에 전부 추가 해 줍니다.

[kitty]
profile-desc="profile for kitty terminal play"
profile=sw-fast
# kitty 터미널의 그래픽 프로토콜을 이용해 이미지나 비디오를 터미널에 출력하는 방식입니다.
# 일반 GUI 창이 아니라, 텍스트 터미널 안에서 이미지/비디오 표시가 가능하다는 점이 특징입니다.
# glsl shader 사용할 수 없믐.
vo=kitty
# 기능; 이미지 출력이 끝난 후, 터미널에서 이미지 표시 영역을 지울 것인지 여부를 제어합니다.
# no: 출력이 끝나도 터미널에서 이미지가 사라지지 않음 (그대로 남아 있음).
# yes: mpv가 종료되면 kitty 프로토콜을 통해 이미지 영역을 초기화함.
# yes 로 두고 실행시, 창 사이즈 변경되면 Crash 나서 꺼짐
vo-kitty-config-clear=no
#기능: kitty 터미널이 멀티플렉서 환경 (예: tmux, screen) 안에서 실행 중일 때, 자동으로 프로토콜을 우회해서 passthrough 출력할지를 설정.
# no: 멀티플렉서 안에서도 kitty 그래픽 프로토콜을 직접 사용하려고 시도합니다.
# yes: 멀티플렉서 감지 시 kitty 이미지 출력 대신 fallback (텍스트 등) 사용합니다.
# no 로 두고 tmux서 실행시, key 입력 먹통 프리징 발생
vo-kitty-auto-multiplexer-passthrough=yes
# 모든 서브시스템의 로그 출력을 비활성화합니다.즉, 터미널에 아무 메시지도 표시되지 않게 됩니다 — 경고, 정보, 디버그 등 포함.
msg-level=all=no
term-status-msg=
term-osd-bar=no
input-ipc-server=/tmp/mpvsocket
hr-seek-framedrop=no
gpu-api=auto
gpu-context=auto
hwdec=auto
hwdec-codecs="h264,hevc,vp8,vp9,av1,mpeg2video"     # vc1(wmv) 코덱, 녹색 스크린, 하드웨어 디코딩 에러남.
af-clr
vf-clr
glsl-shaders-clr
keepaspect
screen=0
fs-screen=current
scale=bilinear
cscale=bilinear
dscale=bilinear
scale-antiring=0.0
cscale-antiring=0.0
dither-depth=no
correct-downscaling=no
sigmoid-upscaling=no
deband=no




### 이미지 뷰어 프로필 (Image Viewer Profile) ###
# 사용법: mpv --profile=image [이미지 파일 또는 디렉토리]
# 예시: mpv --profile=image my_picture.jpg
# 예시 (디렉토리 내 모든 이미지 보기): mpv --profile=image ./*
[image]
profile-desc="정적 이미지 뷰어 프로필 (Static image viewer profile)"


# --- 기본 설정 ---
# 다음 이미지를보기 전에 다음 이미지를 로드
prefetch-playlist
# 다음 이미지 재생시 zoom/alignment/rotation/pan 위치 초기화, on/off check
reset-on-next-file=video-zoom,panscan,video-unscaled,video-align-x,video-align-y,video-rotate
# 비디오에서 resume-playback 유용하지만, 이미지 모드에선 불필요하다.
no-resume-playback


# 새 파일을로드 한 후에 표시하십시오. osd-msg1 을 설정하여 텍스트를 영구적으로 표시 할 수 있습니다.
osd-playing-msg=${!playlist-count==1:[${playlist-pos-1}/${playlist-count}] }${media-title} ${?width:${width}x${height}} ${?current-tracks/video/image==no:${?percent-pos==0:${duration}}${!percent-pos==0:${time-pos} / ${duration} (${percent-pos}%)}}
osd-playing-msg-duration=5000


# 대부분의 플랫폼에서 배경을 투명하게 만들고 검은 색을 피할 수 있습니다.
# 막대는 여전히 축소 할 수있는 모든 화면 공간을 사용할 수 있습니다.
#background=none
#background-color=0/0
background=color
background-color='#ff312e39'
#
# Valid colors must be in the form #RRGGBB or #AARRGGBB (in hex)
# or in the form 'r/g/b/a', where each component is a value in the
# range 0.0-1.0. (Also allowed: 'gray', 'gray/a', 'r/g/b').
#
# 투명도가 없으면 다음 옵션이 유용할 수 있습니다.
#background-color=.2                         # 순수한 검정색을 사용하지 않음
force-window-position                       # X11에서 재생 목록 위치를 변경할 때 창을 중앙에 다시 배치
auto-window-resize=no                       # 재생 목록 항목을 변경할 때 창 크기 유지




# --- 동작 설정 ---
# 이미지 표시 시간 (초). 'inf'는 무한대를 의미하며, 사용자가 다음 이미지로 넘기기 전까지 계속 표시합니다.
image-display-duration=inf


# 파일 재생 끝난 후 창 유지
keep-open=yes


# 이미지 반복 안함
loop-file=no


# 원본 이미지 비율 유지
keepaspect=yes


# 파일 로드 시 '일시정지' 상태로 시작합니다. 이미지 뷰어에 적합한 설정입니다.
pause=yes


# 재생목록(여러 이미지)을 무한 반복합니다.
loop-playlist=inf


# --- 비디오/이미지 렌더링 설정 ---
# 비디오 보간(interpolation)을 비활성화합니다. 이미지의 픽셀이 뭉개지지 않고 선명하게 보이도록 합니다.
interpolation=no
tscale=box
tscale-antiring=0


# 작은 이미지를 창 크기에 맞게 강제로 확대하거나 하지 않습니다. 원본 크기를 유지/유지 하지 않습니다.
# 일반적으론 "no" 값 추천,or "downscale-big" ~big는 레터박스 생성, 플레이리스트 창사이즈를 고정할 수 있다
# --video-unscaled=<no|yes|downscale-big>
#              Disable  scaling  of the video. If the window is larger than the video, black bars are added. Otherwise, the video is cropped, unless the op‐
#              tion is set to downscale-big, in which case the video is fit to window. The video still can be influenced by the other  --video-...  options.
#              This option disables the effect of --panscan.
#
#              Note  that  the  scaler  algorithm  may still be used, even if the video isn't scaled. For example, this can influence chroma conversion. The
#              video will also still be scaled in one dimension if the source uses non-square pixels (e.g. anamorphic widescreen DVDs).
#
#              This option is disabled if --keepaspect=no is used.
video-unscaled=downscale-big


# Haasn으로  According, PNG 및  JPG의  종횡비  정보는  보편적입니다.
video-aspect-override=no




# --- OSD 및 창 설정 ---
# 화면 컨트롤러(OSD 막대 등)를 비활성화하여 이미지만 깔끔하게 표시합니다.
osc=no


# 창 제목을 미디어 제목(주로 파일명)으로 설정합니다.
#title='${media-title}'
# 창 제목에 파일명과 해상도 표시
title='[Image] ${filename} (${width}x${height})'


# 쓸모없는 라인을 제거한다 V: 00:00:00 / 00:00:00 line
term-status-msg=


# 모든 서브시스템의 로그 출력을 비활성화합니다.즉, 터미널에 아무 메시지도 표시되지 않게 됩니다 — 경고, 정보, 디버그 등 포함.
#msg-level=all=no
#
# 특정 서브시스템의 로그 메시지 레벨을 'fatal'(치명적 오류만 표시)로 제한하는 설정입니다.
#| 항목                   | 의미                                   | 설정 효과          |
#| ---------------------- | -------------------------------------- | ------------------ |
#| `vapoursynth=fatal`    | VapourSynth 필터 관련                  | 치명적 오류만 표시 |
#| `ffmpeg/video=fatal`   | FFmpeg 비디오 디코딩 관련              | 경고/정보 숨김     |
#| `ffmpeg/demuxer=fatal` | FFmpeg 디먹서 (container 해석기)  관련 | 최소 출력          |
#| `osd/libass=fatal`     | 자막 렌더링 (libass) 관련              | 디버그/경고 숨김   |
#| `mpv_lastfm=fatal`     | Last.fm 관련 Lua 스크립트 메시지       | 대부분의 로그 숨김 |
#
#| 레벨               | 설명                     |
#| ------------------ | ------------------------ |
#| `no`               | 메시지 출력 안 함        |
#| `fatal`            | **치명적인 오류**만 출력 |
#| `error`            | 오류                     |
#| `warn`             | 경고                     |
#| `info`             | 일반 정보                |
#| `v` 또는 `verbose` | 상세 정보                |
#| `debug`            | 디버깅용 로그            |
msg-level=vapoursynth=fatal,ffmpeg/video=fatal,ffmpeg/demuxer=fatal,osd/libass=fatal,mpv_lastfm=fatal


# 유휴 상태(아무 동작 없을 때)에서도 마우스 커서를 숨기지 않습니다. (필요 시 'yes'로 변경)
cursor-autohide=no


# 자막을 비활성화합니다.
sub=no


# 오디오 출력을 비활성화합니다. 이미지 뷰어이므로 소리가 필요 없습니다.
audio=no


# 필터 및 디코딩 설정 초기화
vf-clr                      # 다른 프로필의 비디오 필터 초기화
af-clr                      # 다른 프로필의 오디오 필터 초기화
glsl-shaders-clr            # 다른 프로필의 세이더 초기화
hwdec=no                    # 이미지에는 하드웨어 디코딩 불필요


# 렌더링 및 화질 설정
vo=gpu-next,gpu,drm,tct     # 비디오 출력 드라이버
profile=gpu-hq              # 고화질 렌더링 프로필 사용
scale=ewa_lanczossharp      # 확대 시 고품질 스케일러
cscale=ewa_lanczossoft      # 색상 공간 변환 시 스케일러 # Vlukan에서 에러난다 "[vo/gpu-next] Failed mapping filter function 'ewa_lanczossoft', no libplacebo analog?", 바꿔 쓰거나 시간이 지나면 해결될 듯
dscale=mitchell             # 축소 시 스케일러
dither-depth=auto           # 색상 양자화(quantization) 시 발생하는 밴딩(banding) 현상을 줄이기 위해 디더링(dithering) 깊이를 자동으로 설정합니다. 8비트 출력 디스플레이에서 그라데이션이 부드럽게 보이도록 합니다.
correct-downscaling         # 다운스케일링 시 디테일 손실을 최소화하도록 보정합니다. 영상/이미지를 축소할 때 모아레(moire) 현상이나 블러를 줄이고 선명도를 유지합니다. CPU/GPU 부하가 다소 늘어날 수 있으나 품질은 확실히 향상됩니다.
sigmoid-upscaling           # 업스케일링 시 대비(contrast)를 보존하는 방식으로, 일반적인 스케일링에서 생길 수 있는 경계 왜곡이나 뿌연 느낌을 완화합니다.이미지나 영상 확대 시 품질 유지에 도움됩니다.확대 품질은 좋아지지만, 일부 영상에서 대비가 강해 보일 수 있음.






# UI 설정
osc=no                      # On-Screen-Controller 비활성화
border=no                   # 창 테두리 없음
screen=0                    # <0|1|2|...> 다중모니터일 경우 구분이 필요하다.
fs-screen=current           # <current|all> current: 현재 모니터 풀스크린, all: 전체 모니터 확장 풀스크린
autofit-larger=72%x72%      # 창 크기에 맞춰 이미지 크기를 자동으로 조절합니다. (예: 가로/세로 72% 이내로)
geometry=                   # 창 크기 초기화


# 기본 input.conf에 있는 키바인딩 모두 제거
#input-default-bindings=no
# [가장 중요] # 이미지용 키 바인딩 파일 로드
# 쉘에서 --pofile을 명시해서 실행하면 커스텀 키바인딩이 적용되지만 Auto 프로파일로 호출될때는 커스텀 키바인딩이 자동 호출되지 않는다.
input-conf=~/.config/mpv/input-image.conf




### 애니메이션 GIF/WebP 프로필 (Animated GIF/WebP Profile) ###
[gif-webp]
profile-desc="애니메이션 GIF/WebP 프로필 (Animated GIF/WebP profile)"
profile="image"             # image 프로필을 상속한다.
pause=no                    # start 이하 반대 속성들만 재정의 한다.
loop-file=inf               # 단일 파일(주로 GIF 같은 움직이는 이미지)을 무한 반복합니다.
title='[Animation] ${filename} (${width}x${height})'




[jjal]
profile-desc="profile for Image, Animatied-GIF/Webp"
profile=gif-webp
# normal top-level option
#no-config
#no-resume-playback
vo=gpu-next
gpu-api=vulkan
hwdec=vulkan
gpu-context=x11vk
#hwdec=no
#keepaspect
#fullscreen=no
#screen=0
#fs-screen=current
#loop-file=yes      # <N|inf|no> yes is equal inf
#geometry=
osd-status-msg='${time-pos}-${=time-pos} / ${duration} (${percent-pos}%) #${estimated-frame-number} frame\n${osd-ass-cc/0}{\\1c&H725761&}{\\b1} ${osd-sym-cc}${osd-ass-cc/0}{\\1c&H725761&}{\\b1}\t${media-title}\nFilename: ${filename}'




### Extension Specific #########################################################
# Ignore aspect ratio information for PNG and JPG, because it's universally bust
[extension.png]
profile=image


[extension.jpg]
profile=image


[extension.jpeg]
profile=image


[extension.vpy]
demuxer-lavf-format=vapoursynth


- 실행 :

A. $ mpv --profile=image(또는 jjal) ~/Wallpaper

이미지 폴더일 경우 image 또는 jjal, 이미지에 gif/webp 잇을시 jjal,

mpv 윈도우 창이 뜬다.

B. $ mpv --profile=image --profile=kitty ~/Wallpaper

이미지 파일들이 kitty 터미널 창에 나타난다

C. $ mpv --profile=kitty [영상파일]

영상 파일이 kitty 터미널 창에 나타난다.


4. ~/.zshrc : 자주 수정하는 설정파일들과 command는 alias 를 설정/사용한다

⁠# Viewer
alias mw='mpv --profile=jjal --profile=kitty $HOME/Wallpapers/'
alias mpi='mpv --profile=jjal'
alias mpik='mpv --profile=jjal --profile=kitty'
alias tlswkr="fd --print0 'poster' /mnt/Media/신작 | sort -z | xargs -0 mpv --profile=image --profile=kitty "
alias f='feh'


5. 터미널 헤더 로고/정보

~/.zshrc (or ~/.bashrc) 파일 젤 아랫 부분에 fastfetch 커맨드 또는 아래 스크립트 파일 이름을 한 줄 넣어 준다.

~/.local/bin//terminal_header.sh : kitty, urxvt, tty 터미널 구분용

#!/bin/zsh


kitty_image_dir="/mnt/Media/신작/드라마"
kitty_search_keyword=".*-poster"
kitty_height=40
other_search_keyword=".*poster.jpg"
other_image_dir="/mnt/Media/신작/어른영화"
other_height=35


[[ ! -d ${kitty_image_dir} || ! -d ${other_image_dir} ]] && exit;
kitty_logo=$(fd "${kitty_search_keyword}" -t f ${kitty_image_dir} | shuf -n 1)
other_logo=$(fd "${other_search_keyword}" -t f ${other_image_dir} | shuf -n 1)
[[ ${kitty_logo} == "" && ${other_logo} == "" ]] && exit;
if [[ $TERM == "xterm-kitty" || $TERM == "kitty" ]] ;then
  [[ ${kitty_logo} == "" ]] || { clear; fastfetch --logo ${kitty_logo} --logo-type kitty-icat --logo-width ${kitty_height} -c ~/.config/fastfetch/10.jsonc; }
else
  [[ ${other_logo} == "" ]] || { clear; fastfetch --logo ${other_logo} --logo-type auto --logo-width ${other_height} --logo-preserve-aspect-ratio -c ~/.config/fastfetch/11.jsonc; }
fi
print -Pn "\e]0;%~\a"


글자 수 초과 됫네요.감사합니다.누군가에게는 도움이 되시길...

출처 : 상상속에서
IPZ-721 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [4] 을 클릭하면 간단한 회원메모를 할 수 있습니다.
화이트핸드
IP 211.♡.99.102
11-07 2025-11-07 20:05:14
·
선생님, mpv 를 통해서 jxr 이미지를 제대로 보고 싶은데 그냥 파일을 드랍하니 아무 반응을 하지 않네요. 단축키 설정은 바라지 않고, 이미지를 보고 싶은데 mpv.conf 를 어떻게 수정하면 될까요?
IPZ-721
IP 93.♡.212.52
11-15 2025-11-15 19:10:53 / 수정일: 2025-11-15 19:24:25
·
@화이트핸드님
1.

✦ MPV에서 JXR (JPEG XR) 이미지를 보는 것은 가능하지만, MPV가 사용하는 FFmpeg 라이브러리가 JXR 디코딩을 지원하도록 빌드되었는지에 따라 달라집니다.

기본적으로 MPV는 직접 이미지 파일을 디코딩하지 않고, FFmpeg라는 강력한 미디어 라이브러리를 통해 처리합니다. 따라서 핵심은 FFmpeg가 JXR을 지원하는가 입니다.

$ mpv --version
mpv v0.40.0-415-g6b0139114 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
built on Oct 28 2025 16:58:04
libplacebo version: v7.351.0
FFmpeg version: n8.0
FFmpeg library versions:
libavcodec 62.11.100 <--------------- this
libavdevice 62.1.100
libavfilter 11.4.100
libavformat 62.3.100
libavutil 60.8.100
libswresample 6.1.100
libswscale 9.1.100

$ ffmpeg -decoders | grep jpeg
VFS..D jpeg2000 JPEG 2000
V....D jpegls JPEG-LS
V....D libjxl libjxl JPEG XL (codec jpegxl)
V....D libjxl_anim libjxl JPEG XL animated (codec jpegxl_anim)
V....D mjpeg MJPEG (Motion JPEG)
V..... mjpeg_cuvid Nvidia CUVID MJPEG decoder (codec mjpeg)
V....D mjpeg_qsv MJPEG video (Intel Quick Sync Video acceleration) (codec mjpeg)
V....D mjpegb Apple MJPEG-B
V....D smvjpeg SMV JPEG
A....D adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG

JPEG XL 은 있는데 JPEG XR은 없네요 . 따라서 mpv에서 jxr 재생 불가
(만약 ffmpeg JXR 라이브러리가 별도로 존재한다면
A. libjxr 포함해서 ffmpeg 빌드
-> 이후 다시
B. ffmpeg 를 포함하는 mpv 다시 빌드하면. 기본 상태에서 mpv로 jxr 이미지 뷰어가 가능 할 것입니다.)

- FFmpeg는 JPEG XR 형식을 기본적으로 지원하지 않습니다. FFmpeg는 다양한 미디어 형식을 지원하지만, JPEG XR (이전 이름: Windows Media Photo 또는 HD Photo)은 공식 지원 형식 목록에 포함되어 있지 않습니다.

- FFmpeg 및 JPEG XR
* 지원 여부: FFmpeg 공식 문서 및 지원 코덱 목록에는 JPEG, JPEG 2000, JPEG XL 등은 포함되어 있지만 JPEG XR은 없습니다. 따라서 FFmpeg만으로는 JPEG XR 파일을 직접 디코딩하거나 인코딩할 수 없습니다.
* JPEG XR 이란: JPEG XR은 Microsoft가 개발한 스틸 이미지 압축 표준으로, Windows 이미징 구성 요소(WIC)를 통해 기본 코덱이 제공됩니다. 주로 Microsoft 환경에서 사용됩니다.
IPZ-721
IP 93.♡.212.52
11-15 2025-11-15 19:14:22
·
@화이트핸드님
2.

- 대안 방법
ImageMagic 툴로 jxr 포맷을 png 포맷으로 변환 한 후, 변환된 png 파일을 mpv가 로딩하도 록 설정해서 사용합니다.

* File: ~/.zshrc
function mpv_jxr () { convert $1 png:- | mpv - }

* Shell
$ mpv_jxr ~/Downloads/JXR_샘플.jxr
IPZ-721
IP 93.♡.212.52
11-15 2025-11-15 19:21:03 / 수정일: 2025-11-15 19:57:21
·
@화이트핸드님
3.

위 2번 방식을 사 용하는 자동화 lua 스 크립트를 작성합니다.

- file: ~/.config/mpv/scripts/jxr_converter.lua
------------------------------------------------------------------------------------------------------------------------------------------------------
-- jxr_converter.lua (v1)
-- ImageMagick을 사용하여 .jxr 파일을 .png로 자동 변환하고 로드합니다.
-- 'on_load' 훅을 사용하여 MPV가 파일을 직접 로드하기 전에 가로채서,
-- 서브프로세스가 'killed'되는 오류를 방지합니다.

local msg = require 'mp.msg'

-- 임시 변환 파일의 경로를 저장할 변수입니다.
local temp_file_path = nil

-- 임시 파일이 존재할 경우, 정리하는 함수입니다.
local function cleanup_temp_file()
if temp_file_path then
local path_to_remove = temp_file_path
temp_file_path = nil -- 즉시 nil로 설정하여 중복 실행을 방지합니다.
os.remove(path_to_remove)
msg.info("임시 파일 삭제 완료: " .. path_to_remove)
end
end

-- 이 훅은 mpv가 파일을 로드하기 *전*에 실행됩니다.
-- 다른 기본 훅보다 먼저 실행되도록 높은 우선순위(50)를 부여합니다.
mp.add_hook("on_load", 50, function()
local filepath = mp.get_property("path")

-- 새 파일이 로드될 때마다 이전 임시 파일을 정리합니다.
--cleanup_temp_file()

-- 파일 경로가 없거나, 파일 확장자가 .jxr이 아니면 (대소문자 무시)
-- mpv가 정상적으로 처리하도록 그냥 둡니다.
if not filepath or not filepath:lower():match("%.jxr$") then
return
end

mp.osd_message("JXR 파일 감지. 변환을 시작합니다...", 3)
msg.info("JXR 파일 감지, 로드 가로채기: " .. filepath)

-- 임시 PNG 파일의 경로를 생성합니다.
local filename = filepath:match("([^/\\]+)$") -- Windows와 Linux 경로 구분자 모두 지원
local temp_dir = os.getenv("TMPDIR") or os.getenv("TEMP") or "/tmp"
local new_temp_path = temp_dir .. "/" .. filename .. ".png"

-- 변환 명령어를 구성하고 실행합니다.
local args = {"convert", filepath, new_temp_path}
msg.info("명령어 실행: " .. table.concat(args, " "))

local res = mp.command_native({
name = "subprocess",
args = args,
capture_stderr = true,
})

-- 변환이 성공했는지 확인합니다.
if res.status == 0 then
mp.osd_message("변환 성공. 이미지를 로드합니다...", 2)
msg.info("변환 성공. 새 파일: " .. new_temp_path)

-- 나중에 정리할 수 있도록 새 파일 경로를 저장합니다.
temp_file_path = new_temp_path

-- *** 핵심 수정 사항 ***
-- mpv에게 원본 JXR 파일 *대신* 새로 변환된 PNG 파일을 로드하라고 지시합니다.
mp.commandv("loadfile", new_temp_path, "replace")
else
-- 변환이 실패하면 OSD와 로그에 오류 메시지를 남깁니다.
mp.osd_message("JXR 파일을 PNG로 변환하는 데 실패했습니다.", 5)
msg.error("JXR 변환 실패. 상태 코드: " .. tostring(res.status))
if res.stderr and res.stderr ~= "" then
msg.error("ImageMagick 오류 출력: " .. res.stderr)
end
-- 변환이 실패하면 아무것도 하지 않으며, mpv는 원본 파일 로드에 실패할 것입니다.
end
end)

-- mpv가 종료될 때 임시 파일을 정리하도록 이벤트를 등록합니다.
mp.register_event("shutdown", cleanup_temp_file)

msg.info("JXR 자동 변환 스크립트가 성공적으로 로드되었습니다.")
------------------------------------------------------------------------------------------------------------------------------------------------------

- Shell ((도는 파일 드롭)
$ mpv ~/Downloads/JXR_샘플.jxr

- (옵 션) : file : ~/.config/mpv/scripts/autoload.lua
기존 autoload.lua 파일을 아래와 같이 수정
------------------------------------------------------------------------------------------------------------------------------------------------------
...(중략)...

EXTENSIONS_IMAGES = Set {
'avif', 'bmp', 'gif', 'j2k', 'jp2', 'jpeg', 'jpg', 'jxl', 'jxr',
'png', 'svg', 'tga', 'tif', 'tiff', 'webp'
}

...(중략)...
------------------------------------------------------------------------------------------------------------------------------------------------------

스크립트에 들여 쓰기가 깨지네요 이미지 첨부
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB
업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.