컴퓨터를 시작할 때 Ubuntu처럼 마지막 세션을 닫기 전에 내 응용 프로그램이 열려 있다는 점을 기억하고 싶습니다. 반면 다른 배포판에서는 일반적으로 이렇게 합니다.
인터넷 검색을 통해 시작 세션에서 애플리케이션을 실행하고 자동 시작 파일을 구성할 수 있지만 시작 시 항상 동일한 프로그램을 실행하고 싶지 않고 이전 세션을 닫기 전에 열려 있던 프로그램을 다시 열고 싶다는 것을 알았습니다.
저는 Fedora 스핀과 LXDE를 사용합니다.
답변1
분명히 LXDE에는 적절한 세션 관리자가 없습니다. 그러나 언급한 대로 자동 시작 파일을 사용할 수 있습니다. 우리가 해야 할 일은 데스크탑을 종료하기 전에 실행 중인 프로그램의 동적 목록을 만드는 것뿐입니다.
다음은 자동 시작 파일에 추가할 응용 프로그램을 찾는 루트 X11 창의 하위 창을 구문 분석하는 작은 bash 스크립트입니다. 선택적 블랙리스트와 화이트리스트가 있습니다. 창 관리자 또는 실행하고 싶지 않은 항목에 대해 블랙리스트를 사용하십시오. 대신, 항상 실행하고 싶은 항목에 대해 화이트리스트를 사용하세요.
출력이 어떻게 보이는지 확인하기 위해 셸에서 실행해 보면 블랙리스트에 추가해야 할 항목이 있는지 확인할 수 있습니다.
LXDE를 종료하기 전에 어떤 방식으로든 실행하려면 연결해야 합니다. 아마도 메뉴에 새 항목을 추가하는 것일 수도 있습니다.
예를 들어:scriptnamehere.bash > ~/.config/lxsession/LXDE/autostart
보시다시피, 실행될 때마다 자동 시작 파일이 다시 작성되므로 화이트리스트가 필요합니다.
#!/bin/bash
WINDOWS=($(xwininfo -root -children | \
egrep \"[a-zA-Z]*\" | \
cut -d' ' -f7 | \
sed 's/":\?//g' | \
sort -du))
BLACKLIST=()
WHITELIST=()
for window in ${WINDOWS[@]}; do
# test to see if element in array is an executable
WHICH=$(which $window 2>/dev/null)
# is it in the blacklist?
# if so, move to the next window
for app in ${BLACKLIST[@]}; do
if [[ $app == $window ]]; then
continue 2
fi
done
# otherwise add it to the autostart list
if [[ -f $WHICH ]]; then
APPS[${#APPS[*]}]="$window"
fi
done
# add whitelisted apps
for app in ${WHITELIST[@]}; do
APPS[${#APPS[*]}]="$app"
done
for app in ${APPS[@]}; do
printf "@%s\n" "$app"
done