디스코드 봇으로 swaylock을 실행할 수 있도록 해봤는데요
커널패닉

Lv.1 커널패닉 (119.♡.59.225)

2025년 7월 31일 AM 02:14 · 수정됨(08. 01. 03:51)

조회 481 공감 0


위 사진은 여러번 시행착오를 겪고 난 후 최종 완성본(?) 입니다.


자리를 예상보다 오래 비워야 할 경우 가끔 다시 PC앞으로 오기 귀찮아서, 디스코드 봇 API를 통해 화면을 잠글 수 있도록 해 봤습니다.

하지만 swaylock이 이미 실행중인지를 모르겠더라구요.

따라서 이런저런 방법으로 실험하다 아래와 같이 작성했습니다. (일부 발췌)

[code]try:

is_sway_running = subprocess.run(["pgrep", "-x", "swaylock"], stderr=subprocess.DEVNULL)

if is_sway_running.returncode == 0:

raise RuntimeError("swaylock is already running! aborted.")


subprocess.Popen([f"{os.environ.get('HOME')}/.config/sway/src/backend", "lock_session"], start_new_session=True)

await interaction.response.send_message("🔒 화면이 잠겼습니다 (swaylock 실행됨).", ephemeral=True)

except FileNotFoundError:

await interaction.response.send_message("❌ 시스템에 sway 및 backend 가 설치되어 있지 않습니다.", ephemeral=True)

sys.exit(1)

except RuntimeError:

await interaction.response.send_message("⚠️ swaylock 실행에 실패했습니다. 이미 swaylock 이 실행 중입니다.", ephemeral=True)

except Exception as e:

await interaction.response.send_message(f"⚠️ swaylock 실행에 실패했습니다. 내부 오류가 발생했습니다.\\n{e}", ephemeral=True)

sys.exit(1)[/code]


하지만 어째선지 swaylock 이 이미 실행중일 경우에 위 봇을 실행하면 qt.qpa.wayland there are no outputs creating placeholder screen 오류와 함께 레드스크린이 뜨더군요 {emo:damoang-emo-015.gif:50}


따라서 해결 방안을 모색하던 도중 swaylock 이 이미 실행 중인 경우 이를 예외로 처리하지 말고, 단순히 if else 문으로 처리하기로 했습니다.

[code]try:

is_sway_running = subprocess.run(["pgrep", "-x", "swaylock"], stderr=subprocess.DEVNULL)

if is_sway_running.returncode == 0:

await interaction.response.send_message("⚠️ swaylock 실행에 실패했습니다. 이미 swaylock 이 실행 중입니다.", ephemeral=True)

else:

subprocess.Popen([f"{os.environ.get('HOME')}/.config/sway/src/backend", "lock_session"], start_new_session=True)

await interaction.response.send_message("🔒 화면이 잠겼습니다 (swaylock 실행됨).", ephemeral=True)

except FileNotFoundError:

await interaction.response.send_message("❌ 시스템에 sway 및 backend 가 설치되어 있지 않습니다.", ephemeral=True)

sys.exit(1)

except Exception as e:

await interaction.response.send_message(f"⚠️ swaylock 실행에 실패했습니다. 내부 오류가 발생했습니다.\\n{e}", ephemeral=True)

sys.exit(1)[/code]


그후 테스트를 해보니 정상적으로 화면이 잠기고, 만약 swaylock이 실행 중이라면 상태를 바로 알 수 있도록 기능이 향상되었네요.


레드스크린은 블루스크린과 다르게 또 다른 공포가 있네요

댓글 (21)

  • 신사아님당

    신사아님당 Lv.1

    25.07.31 · 125.♡.243.26

    오오오! 밖에서(멀리서) 내 컴퓨터를 잠글 수 있겠군요?
    레드스크린은 또 뭐죠? {emo:onion-077.gif:50}ㄷㄷㄷㄷㄷ
  • 커널패닉

    커널패닉 Lv.1 → 신사아님당 작성자

    25.07.31 · 160.♡.37.43

    [https://damoang.net/data/editor/2507/comment_2699961643_i9y4QLtG_5a3b04624fa7d7801b4fb86cb94ab12e46b3b4f5.jpeg]

    레드스크린은 이런식으로 보입니다 {emo:onion-217.gif:50}
  • 신사아님당

    신사아님당 Lv.1 → 커널패닉

    25.07.31 · 125.♡.243.26

    {emo:onion-263.gif:150}!!!!!!!!!!
    ㅗㅜ..PTSD 오겠습니다. LG IPS패널 사용자면 더더더 ㄷㄷㄷㄷ
  • 커널패닉

    커널패닉 Lv.1 → 신사아님당 작성자

    25.07.31 · 119.♡.59.225

    [https://damoang.net/data/editor/2507/comment_2009152481_43rV2MF9_897858f890e13c908fb44de89d1c5277f8f5d744.webp]

    에이 설마요 {emo:damoang-emo-015.gif:50}
  • 신사아님당

    신사아님당 Lv.1 → 커널패닉

    25.07.31 · 125.♡.243.26

    인터넷 사진 퍼온게 아니라 직찍이셨어요? {emo:onion-138.gif:50}{emo:damoang-emo-015.gif:50}{emo:damoang-emo-015.gif:50}
  • 커널패닉

    커널패닉 Lv.1 → 신사아님당 작성자

    25.07.31 · 119.♡.59.225

    얼마든지 재현도 가능하답니다??
    재현하려면 디스코드 봇에서 예외를 던지기만 하면 됩니다

    === 추가 ===
    아 그러고 보니 이 패널 잔상이 좀 심하긴 했네요
    https://www.clien.net/service/board/cm_mac/12817373
  • 신사아님당

    신사아님당 Lv.1 → 신사아님당

    25.07.31 · 125.♡.243.26

    @커널패닉 님에게 답글
    카비레이크 아이맥이면 소노마까지는 지원할텐데 리눅스 깔아 쓰시는군요!? 가..갑부... {emo:onion-002.gif:50}

    저는 deskmini 310 + i5-8500에 벤추라 깔아 쓰고 있는데... 이거 지원 끊기기 전까지 리눅스로 스위칭 하는걸 목표로 하고 있습니다. {emo:onion-051.gif:50} tmi;;
  • 커널패닉

    커널패닉 Lv.1 → 신사아님당 작성자

    25.07.31 · 119.♡.59.225

    옛날에 레딧쪽에서 글을 남겼었는데 여기에는 크로스포스팅을 안했었네요.
    UnrealEditor 와 Xcode 간의 궁합이 안좋아서 Linux를 깔게 되었습니다.

    https://www.reddit.com/r/linuxer/comments/1de4l43
  • 신사아님당

    신사아님당 Lv.1

    25.07.31 · 125.♡.243.26

    ㅗㅜㅑ... 3D 그래픽으로 뭔가 만드시나봐요. {emo:damoang-emo-015.gif:50}
    아이맥에 리눅스를 깔 수 밖에 없는 상황이라는게.. 있군요... 전문가의 영역에서는.... {emo:onion-008.gif:50}
  • 커널패닉

    커널패닉 Lv.1 → 신사아님당 작성자

    25.07.31 · 119.♡.59.225

    사실 Windows 를 깔아도 되긴 하지만 CS8409 칩셋용 드라이버 설치가 좀 더 편해서 리눅스를 설치하게 되었습니다.

    Windows 에서는 드라이버를 안전모드에서 제거한 후 (일반 부팅에서는 제거가 안되었습니다)
    일반 부팅에서 드라이버를 다시 깔고 다시 재부팅했어야 했거든요.

    하지만 현재는 DAC를 연결해서 듣고 있으니 Windows 를 사용해도 별 문제 없긴 합니다만, Windows 11은 이 아이맥과 궁합이 별로라 리눅스를 계속 사용할 예정입니다. (무엇보다 BOOTCAMP 드라이버를 다시 구하는 것도 일이네요)

댓글을 작성하려면 이 필요합니다.