아래 잠금화면의 알록달록한 점들, 장식이 아닙니다. 아이폰 캘린더에 등록된 일정이 있는 날짜입니다.
가족 일정은 초록색, 업무 일정은 파란색처럼 캘린더 색상을 나눠 두면, 어느 날짜에 어떤 종류의 일정이 있는지 배경화면에서 확인하는 방식입니다. 약속 이름을 빼곡하게 적지 않아도 됩니다.
이건 위젯을 하나 올리는 방법이 아닙니다. 단축어가 캘린더를 읽고, 달력 이미지를 만든 뒤, 잠금화면 배경으로 지정하는 방법입니다. 여기에 매일 실행하는 자동화를 붙입니다.
이번 글에서는 제작자의 LockScreen Calendar를 기준으로 설치부터 자동 실행까지 연결해 보겠습니다. 처음 실행하기 전에 바꿔야 할 사진 설정도 있으니, 다운로드한 뒤 바로 실행하지 마시고 3단계까지 먼저 확인해 주세요.
화면 안내 기준: iOS 26.5 한국어 단축어 앱. iOS 버전에 따라 메뉴 배치가 다를 수 있습니다. 제작자 배포 파일과 코드를 확인해 작성했으며, 실물 아이폰에서 Scriptable 실행부터 잠금화면 자동 갱신까지의 전체 동작은 아직 검증하지 않았습니다.
1. 준비물은 단축어와 Scriptable입니다
단축어 앱만으로 끝나는 구성은 아닙니다. 달력 이미지를 그리는 역할은 Scriptable이 맡습니다. 코드를 처음부터 작성할 필요는 없지만, 이 앱은 설치해야 합니다.
- 아이폰에서 Scriptable 앱을 설치해 주세요.
- 아이폰 Safari에서 제작자의 LockScreen Calendar 단축어를 여세요.
- 단축어 앱으로 이동해 내용을 확인한 후 보관함에 추가하세요.
이 글에서 확인한 공유 링크의 이름은 LockScreen Calendar입니다. 제작자의 1월 15일 업데이트 댓글에 있는 링크이며, 내부 스크립트에는 v30으로 표시되어 있습니다. GitHub의 별도 스크립트는 v32이므로, 두 버전이 완전히 같다고 생각하고 섞어서 따라 하지는 마세요.
잠금화면을 바꾸는 단축어입니다. 기존 화면을 유지하고 싶으시면 실험용 잠금화면을 준비한 뒤 적용 대상을 확인해 주세요.
2. 캘린더 이름 앞에 ‘*’를 붙여 주세요
이 단축어의 기본 설정은 모든 캘린더를 무조건 표시하지 않습니다. 이름이 *로 시작하는 캘린더를 골라 읽습니다. 설치했는데 일정이 안 보인다면 가장 먼저 확인할 부분입니다.
기존 캘린더 이름을 바꾸기 부담스럽다면 테스트용 캘린더 하나로 시작하세요.
- 아이폰의 캘린더 앱을 열고 하단의 캘린더 목록으로 들어갑니다.
- 캘린더 추가에서 이름을
*테스트로 입력하고, 눈에 잘 띄는 색상을 선택합니다. - 내일 날짜에 테스트 일정 하나를 만들고, 그 일정의 소속 캘린더를
*테스트로 지정합니다.
별표는 일정 제목이 아니라 ‘캘린더 이름’ 앞에 붙입니다. 일정 제목을 *운동으로 바꾸는 것과는 다릅니다. ‘오늘’은 별도의 강조색이 우선하므로, 처음 확인할 때는 내일 날짜가 구분하기 편합니다.
| 용도 | 캘린더 이름 예시 | 색상 예시 |
|---|---|---|
| 가족 행사·학교 일정 | *1 가족 | 초록색 |
| 업무·중요한 마감 | *2 업무 | 파란색 |
| 운동·개인 약속 | *3 개인 | 보라색 |
이름과 색상은 활용 예시입니다. 날짜의 색은 해당 캘린더에 지정한 색상을 가져옵니다. 하루에 여러 캘린더의 일정이 겹치면 모든 색을 동시에 표시하는 것이 아니라 우선순위에 따라 한 색을 표시합니다.
3. 실행 전, ‘최근 항목’을 전용 앨범으로 바꾸세요
이번 설정에서 가장 놓치기 쉬운 부분입니다.
확인한 배포본은 첫 동작이 사진 찾기이고, 기본 앨범은 최근 항목(Recents), 정렬은 무작위, 개수는 1개입니다. 그대로 두면 배경으로 쓰려던 사진이 아닌 다른 사진이 선택될 수 있습니다.
- 사진 앱에
달력 배경이라는 앨범을 만드세요. - 잠금화면에 사용해도 되는 사진을 넣으세요. 처음에는 한 장만 넣으면 결과를 확인하기 쉽습니다.
- 단축어 보관함에서
LockScreen Calendar의 더 보기(…)를 눌러 편집 화면을 엽니다. - 맨 위 사진 찾기 동작의 앨범을 달력 배경으로 변경합니다. 무작위 정렬과 1개 제한은 그대로 두세요.
구조는 사진 찾기 → Scriptable 실행 → 배경화면 설정, 세 단계입니다. 마지막 동작의 적용 대상이 잠금화면인지 확인하세요. 제작자 안내에서는 자동 실행을 위해 미리보기 표시(Show Preview)와 피사체에 맞춰 자르기(Crop to Subject)를 끄도록 안내합니다. 배포 파일에서도 두 옵션은 꺼져 있었습니다.
4. 자동화보다 먼저, 한 번 직접 실행하세요
편집을 마쳤다면 단축어를 수동으로 실행하세요. 첫 실행에서 요청하는 사진·캘린더 접근 권한을 확인하고, 필요한 권한을 허용합니다. 동작을 알아볼 수 없는 추가 요청이 뜨면 무조건 허용하지 말고 먼저 내용을 확인하세요.
여기서 확인할 것은 세 가지입니다.
- 배경에 전용 앨범에 넣은 사진이 사용되었는지
- 내일 만든 테스트 일정이 해당 캘린더 색으로 표시되는지
- 달력이 시계나 기존 위젯과 겹치지 않는지
이 단계가 안 되는데 자동화부터 만들면, 같은 오류가 매일 반복될 뿐입니다. 수동 실행 성공 → 자동화 연결 순서로 진행하세요.
5. 매일 자동으로 바뀌게 만들기
수동 실행을 확인했다면, 이제 단축어를 실행할 시간을 정합니다. 예를 들어 매일 오전 8시로 설정하면 됩니다. 아래는 iOS 26.5의 한국어 단축어 앱에서 직접 촬영한 화면입니다.
iOS 27을 사용한다면: 기존 LockScreen Calendar 단축어를 열고 편집 → 자동화 → 특정 시간에서 실행 조건을 붙이는 방식으로 설정합니다. 자동화 목록은 보관함 → 자동화에서 확인합니다. 버튼 위치는 iOS 27 실제 화면 안내를 참고하세요. 이 경로는 Apple의 통합 자동화 안내를 바탕으로 하며, 이 달력의 실기기 예약 갱신을 확인했다는 뜻은 아닙니다. 아래 캡처와 ①~④는 iOS 26.5 기준입니다.
① 자동화에서 ‘특정 시간’을 선택합니다
단축어 앱 하단의 자동화 → 새로운 자동화 → 특정 시간으로 들어갑니다. 이미 자동화가 있다면 추가 버튼을 사용하세요.


② 시간과 ‘매일’을 선택합니다
원하는 갱신 시간을 정하고 반복을 매일로 선택하세요. 아래 캡처는 메뉴 위치를 보여주기 위한 것으로, 화면의 오전 6시 41분을 그대로 따라 맞출 필요는 없습니다.

③ ‘확인 후 실행’이 아니라 ‘즉시 실행’입니다
화면을 아래로 내려 즉시 실행을 선택하세요. 실행 알림이 필요 없다면 실행되면 알리기는 끕니다. ‘즉시 실행’은 지금 실행한다는 의미가 아니라, 정해 둔 조건이 충족되면 추가 확인 없이 실행한다는 뜻입니다.

④ 실행할 단축어를 연결합니다
다음을 누르고 실행할 항목에서 LockScreen Calendar를 찾아 선택해 저장하세요. 동작을 직접 구성하는 화면이라면 단축어 실행(Run Shortcut)을 추가하고 이 단축어를 지정하면 됩니다.
설정이 끝나면 자동화 목록에서 반복 시간과 연결된 단축어 이름을 다시 확인하세요. 실제 예약 실행도 확인하려면 시간을 몇 분 뒤로 맞춰 시험하고, 확인 후 원하는 일일 시간으로 돌려놓으세요.
6. 점이 어렵다면 날짜 숫자로 바꿀 수 있습니다
기본 화면을 확인한 뒤에 꾸미는 편이 좋습니다. 단축어 편집 화면의 Scriptable 실행 동작에 들어 있는 코드에서 맨 위 CONFIG 부분을 찾으세요. 다음은 확인한 배포본에 있는 설정입니다.
| 바꾸고 싶은 것 | 변경할 설정 |
|---|---|
| 점 대신 날짜 숫자 표시 | showDayNumbers: true |
| 한 번에 3개월만 표시 | monthsToShow: 3 |
| 한 줄에 3개월 배치 | monthsPerRow: 3 |
| 일요일부터 시작 | firstDayOfWeek: 0 |
| 하단 통계 숨기기 | showStats: false |
| 위쪽 위젯을 위한 공간 확보 | widgetsTop: true |
표의 항목을 새로 덧붙이는 것이 아니라 기존 항목의 값만 바꾸세요. 줄 끝의 쉼표는 유지하고, 한 항목씩 수정한 뒤 수동으로 실행해 보세요. 코드를 수정하기 부담스럽다면 이 단계는 건너뛰셔도 됩니다.
캘린더 이름을 바꿀 수 없는 경우에는 기존 specificCalendarNames: []를 아래처럼 바꾸는 방법도 있습니다. 이름은 실제 캘린더 이름과 정확히 같아야 합니다.
specificCalendarNames: ["가족", "업무"],
이 목록을 채우면 별표 기준 대신 입력한 이름으로 캘린더를 선택합니다. 목록의 앞쪽 캘린더가 우선입니다.
7. 막히면 여기부터 확인하세요
달력은 나오는데 일정의 색이 안 보여요
*를 일정 제목이 아니라 캘린더 이름에 붙였는지, 테스트 일정이 그 캘린더 소속인지 확인하세요. Scriptable의 캘린더 접근 권한도 확인합니다. 이름을 직접 지정하는 설정을 사용했다면 목록의 철자가 맞는지 보세요.
사진이 엉뚱하게 바뀌었어요
첫 번째 사진 찾기 동작의 앨범 조건을 확인하세요. 최근 항목 대신 전용 앨범을 지정하고, 원하는 사진 한 장만 넣어 다시 실행해 보세요.
수동으로는 되는데 아침에 안 바뀌어요
자동화의 반복 주기, 시간, 즉시 실행 여부와 연결된 단축어를 확인하세요. 배경화면 설정의 미리보기가 켜져 있거나 권한 확인이 남아 있는지도 살펴보세요. 이것들을 확인해도 실패하면 표시되는 오류 메시지와 iOS 버전을 기록해야 원인을 좁힐 수 있습니다.
일정을 방금 추가했는데 화면은 그대로예요
실시간 위젯이 아니라 실행 시점에 만드는 이미지이기 때문입니다. 바로 반영하고 싶다면 단축어를 수동으로 다시 실행하세요. 매일 한 번으로 설정했다면 다음 예약 실행 때까지 기다릴 수도 있습니다.
회사 일정이나 Google Calendar도 되나요?
이 스크립트는 아이폰에서 접근 가능한 캘린더를 읽습니다. 외부 서비스 앱에만 있고 아이폰 캘린더에서 보이지 않는 일정까지 자동으로 가져오는 구성은 아닙니다. 먼저 아이폰 기본 캘린더에 일정이 보이는지 확인하세요. 회사 계정의 권한·정책은 별도로 확인해야 합니다.
마음에 안 들면 어떻게 되돌리나요?
만든 자동화를 비활성화한 뒤 원래 잠금화면으로 돌아가세요. 배경화면만 바꾸고 자동화는 남겨두면 다음 예약 시간에 다시 적용될 수 있습니다.
처음에는 ‘내일 일정 하나’만 표시해 보세요
시작부터 모든 캘린더와 사진을 연결할 필요는 없습니다.
배경 사진 한 장, *테스트 캘린더 하나, 내일 일정 하나. 이 세 가지로 먼저 결과를 확인하세요. 그다음 가족·업무 캘린더를 나누고, 마지막에 매일 실행하는 자동화를 붙이면 됩니다.
점 달력은 약속의 시간과 장소를 자세히 읽는 용도가 아닙니다. 중요한 약속 알림은 그대로 두세요. 대신 잠금화면을 볼 때 어느 날에 일정이 모여 있는지 한 번 더 떠올리는 화면으로 활용해 보시면 좋겠습니다.
사진을 고르는 것에서 한 단계 더 나아가, 매일 볼 이유가 있는 잠금화면을 만들어 보세요.