GitHubのミラーです
https://github.com/FascodeNet/dmc
Revisión | 3ddadcd5615fbc367534a402b70e352cdc377c87 (tree) |
---|---|
Tiempo | 2021-05-09 22:23:02 |
Autor | hayao <hayao@fasc...> |
Commiter | hayao |
[update] : Supported wayland session
@@ -276,13 +276,10 @@ get_icon_theme(){ | ||
276 | 276 | printf "%s\n" "${_gtk_theme_name_list[@]}" | sort | uniq |
277 | 277 | } |
278 | 278 | |
279 | -get_xorg_session(){ | |
280 | - find "/usr/share/xsessions" -type f -print0 -name "*.desktop" | xargs -0 -I{} bash -c 'basename {} | sed "s|.desktop||g"' | |
279 | +get_session(){ | |
280 | + find "/usr/share/xsessions" "/usr/share/wayland-sessions" -type f -print0 -name "*.desktop" | xargs -0 -I{} bash -c 'basename {} | sed "s|.desktop||g"' | |
281 | 281 | } |
282 | 282 | |
283 | -get_wayland_session(){ | |
284 | - find "/usr/share/wayland-sessions" -type f -print0 -name "*.desktop" | xargs -0 -I{} bash -c 'basename {} | sed "s|.desktop||g"' | |
285 | -} | |
286 | 283 | |
287 | 284 | # 質問を行う関数 |
288 | 285 | # Returns only the selected result to standard output |
@@ -351,8 +348,8 @@ ask_question(){ | ||
351 | 348 | # デスクトップセッションを聞く |
352 | 349 | ask_session(){ |
353 | 350 | local _session |
354 | - if (( $(get_xorg_session | wc -l) <= 1 )); then | |
355 | - _session="$(get_xorg_session)" | |
351 | + if (( $(get_session | wc -l) <= 1 )); then | |
352 | + _session="$(get_session)" | |
356 | 353 | elif [[ "${NON_INTERACTIVE}" = true ]]; then |
357 | 354 | # 非対話モード |
358 | 355 | # ~/.dmrcの値を設定します |
@@ -363,14 +360,8 @@ ask_session(){ | ||
363 | 360 | exit 1 |
364 | 361 | fi |
365 | 362 | else |
366 | - readarray -t _session_list < <(get_xorg_session) | |
367 | - if ! session="$(ask_question -p "Select the desktop session to autologin" "${_session_list[@]}")"; then | |
368 | - msg_error "Please enter the correct session name." | |
369 | - exit 1 | |
370 | - fi | |
371 | - if [[ -f "/usr/share/xsessions/${session}.desktop" ]]; then | |
372 | - _session="${session}" | |
373 | - else | |
363 | + readarray -t _session_list < <(get_session) | |
364 | + if ! _session="$(ask_question -p "Select the desktop session to autologin" "${_session_list[@]}")"; then | |
374 | 365 | msg_error "Please enter the correct session name." |
375 | 366 | exit 1 |
376 | 367 | fi |
@@ -394,18 +385,32 @@ ask_gtk_theme(){ | ||
394 | 385 | # セッションが利用可能かどうか確認する |
395 | 386 | # check_session <session> |
396 | 387 | check_session(){ |
397 | - if [[ ! -f "/usr/share/xsessions/${1}.desktop" ]]; then | |
398 | - # 存在しないセッションが指定された場合 | |
399 | - msg_error "This is a session (${1}) that does not exist." | |
400 | - exit 1 | |
401 | - fi | |
388 | + for _file in "/usr/share/wayland-sessions/${1}.desktop" "/usr/share/xsessions/${1}.desktop"; do | |
389 | + if [[ -f "${_file}" ]]; then | |
390 | + return 0 | |
391 | + fi | |
392 | + done | |
393 | + # 存在しないセッションが指定された場合 | |
394 | + msg_error "This is a session (${1}) that does not exist." | |
395 | + return 1 | |
396 | +} | |
397 | + | |
398 | +# セッションのフルパスを返す | |
399 | +get_session_path(){ | |
400 | + check_session "${1}" | |
401 | + for _file in "/usr/share/wayland-sessions/${1}.desktop" "/usr/share/xsessions/${1}.desktop"; do | |
402 | + if [[ -f "${_file}" ]]; then | |
403 | + echo "${_file}" | |
404 | + return 0 | |
405 | + fi | |
406 | + done | |
402 | 407 | } |
403 | 408 | |
404 | 409 | # セッションのバイナリを取得する |
405 | 410 | # get_session <session name> |
406 | -get_session(){ | |
411 | +get_session_exec(){ | |
407 | 412 | check_session "${1}" |
408 | - local session_exec="$(crudini --get "/usr/share/xsessions/${1}.desktop" "Desktop Entry" "Exec")" | |
413 | + local session_exec="$(crudini --get "$(get_session_path "${1}")" "Desktop Entry" "Exec")" | |
409 | 414 | if [[ ! -f "${session_exec}" ]]; then |
410 | 415 | session_exec="$(type -p "${session_exec}")" |
411 | 416 | fi |
@@ -1441,7 +1446,7 @@ command_lxdm_session_change(){ | ||
1441 | 1446 | fi |
1442 | 1447 | local session="${1}" |
1443 | 1448 | check_session "${session}" |
1444 | - local session_exec="$(get_session "${session}")" | |
1449 | + local session_exec="$(get_session_exec "${session}")" | |
1445 | 1450 | lxdm_set_config "base" "session" "${session_exec}" |
1446 | 1451 | } |
1447 | 1452 |