MusicWidget을 완성했습니다

취미로 만들던 뮤직 위젯입니다.
원래는 다른 플레이어도 지원하려 했지만 휴가 기간동안 완성을 위해 다른 플레이어의 지원은 스톱했습니다.

내용은 아래와 같습니다.

Music Widget C++

GTKmm3 기반의 데스크탑 음악 플레이어 위젯입니다. D-Bus를 통해 MPRIS를 지원하는 미디어 플레이어(Rhythmbox, Spotify, VLC 등)를 제어하고 현재 재생 정보를 표시합니다.
현재는 리듬박스(Rhythmbox)에서만 정상 작동합니다.

기능

  • 앨범 아트워크 표시
  • 트랙 제목 및 아티스트 정보 표시
  • 재생/일시정지, 이전 곡, 다음 곡 컨트롤
  • 음악 재생 진행률 표시
  • 창 테두리 없음
  • Ctrl + 드래그 앤 드롭으로 위치 변경
  • 모든 가상 데스크톱에 고정 표시 ( Xorg에서만 작동 )

예정 기능

  • CAVA를 이용한 오디오 스펙트럼 시각화

의존성

  • C++11 이상을 지원하는 컴파일러 (g++, clang)
  • CMake
  • GTKmm 3.0
  • pkg-config

Ubuntu/Debian 기반 시스템에서 의존성 설치

sudo apt update
sudo apt install build-essential pkg-config cmake libgtkmm-3.0-dev libglibmm-2.4-dev

빌드 및 실행

  1. 저장소 클론:

    git clone https://github.com/dogsinatas29/music_widget_cpp.git
    cd music_widget_cpp
    
  2. 빌드:

    mkdir build
    cd build
    cmake ..
    cmake --build .
    
  3. 실행:
    build 디렉토리 안에서 다음 명령어를 실행합니다. (디버그 메시지를 output.log로 리디렉션)

    ./MusicWidgetCpp > output.log 2>&1 &
    

    또는 터미널에서 직접 실행하여 디버그 메시지를 확인하려면:

    ./MusicWidgetCpp > output.log 2>&1
    

사용법

  • 위젯을 이동하려면 Ctrl 키를 누른 상태에서 마우스 왼쪽 버튼으로 드래그하세요.
  • 하단의 슬라이더를 조절하여 위젯의 투명도를 변경할 수 있습니다.

알려진 버그

  • 웨이랜드에서 가상 화면 이동시에 Sticky가 불가능한 문제. Xorg로는 가능함.
  • 리듬 박스 이외의 다른 미디어 플레이어에서 작동하지 않음.
  • 위젯의 창 사이즈 위치 변경시에 정보는 저장되지만 세로 높이가 변경이 되지 않습니다. 다시 시작해도 위치가 지정한 위치로 바뀌지 않습니다.

완료된 작업

  • 가상 화면을 이동해도 항상 보이게 작업 ( Xorg에서만 가능 )
  • 자체 스펙트럼 시각화 기능 추가
  • 위젯 사이즈를 바꾸더라도 위젯의 UI를 일정 사이즈로 유지하도록 수정
    • 버튼 사이즈
    • 앨범 아트 사이즈는 위젯 사이즈에 맞게 조절
    • 앨범 정보 ( 타이틀, 가수 ) 출력 위치 및 자간, 행간 고정

예정 기능

  • 위젯 자체에 있는 투명도 조절 기능을 옵션메뉴에서 설정하도록 변경
2개의 좋아요

위젯안 정보들 위치가 좀 이상한건 다음주에나 수정해야 겠습니다. 기능이 정상 작동한다데 일단 만족합니다. 아마 세로 높이를 고정시키면 될 거 같습니다.
이제 터미널용 로그라이크게임 작업이 남았네요.
어차피 시간 들여 만드는 게임이니 천천히 해야겠어요