[分享] 自動換桌布腳本,支援 Unity/Gnome3 [論壇 - Ubuntu 與 GNOME]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 2 (3)


回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3
管理員
註冊日期:
2011/3/11 6:32
所屬群組:
討論區管理群
等級: 44
HP : 216 / 1084
MP : 1088 / 29190
EXP: 38
離線
K.W. 寫到:
3. 改成每次都詢問了,但還是用gedit執行

建議使用 Dolphin 檔案管理軟體

poloshiao 寫到:
sh 自動桌布
lrwxrwxrwx 1 root root 4 5月 16 19:02 sh -> dash

把 sh 取消
試試
直接執行
自動桌布

因為 shebang 所以效果相同

poloshiao 寫到:
如果不行
把 自動桌布
改爲 英文 看看

備註
某些 程式語言
沒有處理好 中文執行檔名碼

在現行的 Ubuntu 下不可能是此問題
就算是這個問題也頂多出現 file not found

而且很明顯樓煮在終端機底下執行是正常的

poloshiao 寫到:
按 alt + F2
輸入 gksudo dconf-editor

poloshiao 寫到:
3. 1,2 兩個都要設定


root 身份執行的 dconf 編輯器是編輯 root 自己的設定,並非全系統設定值
另外明明 nautilus 設定頁面中就已經有了不需要改 dconf

2013/6/14 13:43
本篇發表文章以「創用CC BY 3.0 或更新之台灣地區版本」授權條款釋出,如何使用敬請參考
 Creative Commons — 姓名標示 3.0 台灣 — CC BY 3.0 TW
 http://creativecommons.org/licenses/by/3.0/tw/

「你不懂的東西就不要亂講,被懂得人看破手腳就算了,騙不懂的人誤導別人,還要別人把你當成大師,這就真的是說不過去了。」
 by Allen Own
 出處 http://www.plurk.com/p/i4uogm

自由知識創作平台介紹
 https://docs.google.com/document/d/1MGG6lW_0qCgH4U785R-IwSc_INdoBGej1l-JxiA4gPE
如何建立新的自由知識創作平台文件
 https://docs.google.com/document/d/11NdzOW2lGYksfyQIcPMPye5tlmj1J0QTkgPTmQvIvKA
應用擴展 工具箱
回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3

註冊日期:
2009/12/6 10:32
所屬群組:
已註冊使用者
等級: 71
HP : 1053 / 1756
MP : 4456 / 53725
EXP: 24
離線
root 身份執行的 dconf 編輯器是編輯 root 自己的設定,並非全系統設定值

root 身份 什麼時候 執行了 dconf 編輯器 ?
另外明明 nautilus 設定頁面中就已經有了

人家新手問問題嘛
附個圖如何

2013/6/14 20:51
應用擴展 工具箱
回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3
會員三級
註冊日期:
2009/8/27 21:33
所屬群組:
已註冊使用者
等級: 13
HP : 0 / 308
MP : 68 / 9669
EXP: 32
離線
小弟原先以為是 K.W. 大大忘記設定可執行,看來小弟猜錯了,問題比小弟想的複雜。
K.W. 寫到:
1. 先cd 目標圖片夾,然後

sh 自動桌布

我的腳本檔名就是自動桌布,權限已先改成可執行
...

首先,這裡不能用「sh 自動桌布」,你注意一下這一行:
K.W. 寫到:
...
-rwxr-xr-x 1 root root 959168 3月 30 23:37 bash
-rwxr-xr-x 1 root root 105712 8月 15 2012 dash
lrwxrwxrwx 1 root root 4 5月 16 19:02 rbash -> bash
lrwxrwxrwx 1 root root 4 5月 16 19:02 sh -> dash
lrwxrwxrwx 1 root root 4 5月 16 19:02 sh.distrib -> dash
lrwxrwxrwx 1 root root 7 5月 16 19:02 static-sh -> busybox
...

由於 Ubuntu 的 sh 連結到 dash,
所以「sh 自動桌布」會使系統以 dash 執行自動桌布這個腳本;
然而小弟寫這個腳本時使用的是 bash 語法,這樣就會造成難以預料的結果。
請改用「bash 自動桌布」,結果應該就會正常了。

另外,請在終端機裡下這個命令:「echo $0」,看看回應是不是「bash」。
是的話,請先進入自動桌布的目錄,然後下這個命令:「./自動桌布」。
( 請注意基於安全理由,Unix/Linux 系統在呼叫可執行檔案時,
不像 DOS 那樣會在當下的目錄裡尋找,所以前面一定要加上「./」。)
結果應該是會正常執行的,如果這時候跳出 gedit 來,那你的系統可能問題大了。

K.W. 寫到:...
3. 改成每次都詢問了,但還是用gedit執行

嗯... 詢問的視窗跟底下這張圖按鈕相同嗎?

你按下的按鈕是最左邊的「在終端機中執行(T)」還是最右邊的「執行(R)」?
還是兩個你都試過?

2013/6/15 14:40
應用擴展 工具箱
回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3
管理員
註冊日期:
2011/3/11 6:32
所屬群組:
討論區管理群
等級: 44
HP : 216 / 1084
MP : 1088 / 29190
EXP: 38
離線
自由車自由人 寫到:
小弟原先以為是 K.W. 大大忘記設定可執行,看來小弟猜錯了,問題比小弟想的複雜。
K.W. 寫到:
1. 先cd 目標圖片夾,然後

sh 自動桌布

我的腳本檔名就是自動桌布,權限已先改成可執行
...

首先,這裡不能用「sh 自動桌布」,你注意一下這一行:
K.W. 寫到:
...
-rwxr-xr-x 1 root root 959168 3月 30 23:37 bash
-rwxr-xr-x 1 root root 105712 8月 15 2012 dash
lrwxrwxrwx 1 root root 4 5月 16 19:02 rbash -> bash
lrwxrwxrwx 1 root root 4 5月 16 19:02 sh -> dash
lrwxrwxrwx 1 root root 4 5月 16 19:02 sh.distrib -> dash
lrwxrwxrwx 1 root root 7 5月 16 19:02 static-sh -> busybox
...

由於 Ubuntu 的 sh 連結到 nash,
所以「sh 自動桌布」會使系統以 nash 執行自動桌布這個腳本;
然而小弟寫這個腳本時使用的是 bash 語法,這樣就會造成難以預料的結果。
請改用「bash 自動桌布」,結果應該就會正常了。

另外,請在終端機裡下這個命令:「echo $0」,看看回應是不是「bash」。
是的話,請先進入自動桌布的目錄,然後下這個命令:「./自動桌布」。
( 請注意基於安全理由,Unix/Linux 系統在呼叫可執行檔案時,
不像 DOS 那樣會在當下的目錄裡尋找,所以前面一定要加上「./」。)
結果應該是會正常執行的,如果這時候跳出 gedit 來,那你的系統可能問題大了。

他在終端機中執行應該是正常的
自由車自由人 寫到:
K.W. 寫到:...
3. 改成每次都詢問了,但還是用gedit執行

嗯... 詢問的視窗跟底下這張圖按鈕相同嗎?


你按下的按鈕是最左邊的「在終端機中執行(T)」還是最右邊的「執行(R)」?
還是兩個你都試過?

他的意思應該是雖然改成沒次都詢問但是還是不會問就用 Gedit 打開

2013/6/15 14:48
本篇發表文章以「創用CC BY 3.0 或更新之台灣地區版本」授權條款釋出,如何使用敬請參考
 Creative Commons — 姓名標示 3.0 台灣 — CC BY 3.0 TW
 http://creativecommons.org/licenses/by/3.0/tw/

「你不懂的東西就不要亂講,被懂得人看破手腳就算了,騙不懂的人誤導別人,還要別人把你當成大師,這就真的是說不過去了。」
 by Allen Own
 出處 http://www.plurk.com/p/i4uogm

自由知識創作平台介紹
 https://docs.google.com/document/d/1MGG6lW_0qCgH4U785R-IwSc_INdoBGej1l-JxiA4gPE
如何建立新的自由知識創作平台文件
 https://docs.google.com/document/d/11NdzOW2lGYksfyQIcPMPye5tlmj1J0QTkgPTmQvIvKA
應用擴展 工具箱
回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3
會員三級
註冊日期:
2008/4/25 9:32
所屬群組:
已註冊使用者
等級: 9
HP : 0 / 219
MP : 38 / 7767
EXP: 79
離線
改成英文檔名後,就可以在直接點擊兩次,出現詢問的視窗,但中文還是不行。

2013/6/18 11:18
應用擴展 工具箱
回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3

註冊日期:
2009/12/6 10:32
所屬群組:
已註冊使用者
等級: 71
HP : 1053 / 1756
MP : 4456 / 53725
EXP: 24
離線
改成英文檔名後,就可以在直接點擊兩次,出現詢問的視窗

所以建議 目錄與檔案名稱 儘量使用 ASCII Table 的英文/數字碼 不要使用 中文碼
以避免不必要的錯誤/失敗訊息

2013/6/18 12:19
應用擴展 工具箱
回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3
管理員
註冊日期:
2011/3/11 6:32
所屬群組:
討論區管理群
等級: 44
HP : 216 / 1084
MP : 1088 / 29190
EXP: 38
離線
K.W. 寫到:
改成英文檔名後,就可以在直接點擊兩次,出現詢問的視窗,但中文還是不行。

確定有這個問題嗎?
確定的話就可以像軟體上游或 Launchpad.net 回報軟體缺陷,這樣以後就有機會修好

2013/6/18 15:41
本篇發表文章以「創用CC BY 3.0 或更新之台灣地區版本」授權條款釋出,如何使用敬請參考
 Creative Commons — 姓名標示 3.0 台灣 — CC BY 3.0 TW
 http://creativecommons.org/licenses/by/3.0/tw/

「你不懂的東西就不要亂講,被懂得人看破手腳就算了,騙不懂的人誤導別人,還要別人把你當成大師,這就真的是說不過去了。」
 by Allen Own
 出處 http://www.plurk.com/p/i4uogm

自由知識創作平台介紹
 https://docs.google.com/document/d/1MGG6lW_0qCgH4U785R-IwSc_INdoBGej1l-JxiA4gPE
如何建立新的自由知識創作平台文件
 https://docs.google.com/document/d/11NdzOW2lGYksfyQIcPMPye5tlmj1J0QTkgPTmQvIvKA
應用擴展 工具箱
回覆: [分享] 自動換桌布腳本,支援 Unity/Gnome3
會員三級
註冊日期:
2009/8/27 21:33
所屬群組:
已註冊使用者
等級: 13
HP : 0 / 308
MP : 68 / 9669
EXP: 32
離線
小弟這個程式發行新版本了!
並且放到了 GitHub 上
詳情請見本討論串首篇
GitHub 專案網頁:robertmodesty/make-slideshow-wallpaper - GitHub

新版程式碼:

mksldshw
- - - - 8< - - - - - - - - - - 請自本虛線下方剪下 - - - - - - - - - - - - - - -
#!/bin/bash

##########    Make Slideshow Wallpaper   by Freedman   ##########

readonly _OutputFile=background.xml
readonly _StaticTime=595.0
readonly _TransitionTime=5.0
readonly _FileType="gif|jpg|png|bmp"
# readonly _SortFiles=Alphabetic
readonly _SortFiles=Random
readonly _Depth=30 # at most levels of directories been include
# The line under here helps to setup the wallpaper automaticlly,
# comment it with octothorpe if you want do that yourself.
readonly _Autoset=on _AutosetPath=$HOME/.config
readonly _StartNow=on


function find_image_files() {
  BOARD_ImgFils=$(
                  find -L $PWD \
                       -maxdepth $_Depth \
                       -regextype posix-extended \
                       -iregex \
                       ".*\.($_FileType)" \
                    2> /dev/null
                 )

  if  [ "$_SortFiles" == "Random" ] ; then
    BOARD_ImgFils=$( echo -e "$BOARD_ImgFils" | sort -R )
  elif  [ "$_SortFiles" == "Alphabetic" ] ; then
    BOARD_ImgFils=$( echo -e "$BOARD_ImgFils" | sort )
  fi
}


function error_exit_if_too_less_image_file() {
  local FilTotl=$( echo -e "$BOARD_ImgFils" \
                  | wc -l \
                  | cut -d " " -f1
                )

  if [ $FilTotl -lt 2 ] ; then
    /usr/bin/zenity --warning \
                    --title='Error!' \
                    --text='Need two image files at least!' \
          > /dev/null 2>&1
    echo -e '\nError!\nNeed two image files at least!\n'
    exit 1
  fi
}


function generate_slide_show_xml() {
  eval $( date +"
          local Yer=%Y
                Mnth=%m
                Day=%d
                Hour=%H
                Minute=%M
                Second=%S
         ")
  local Head="  <static>\n    <duration>$_StaticTime</duration>\n    <file>"
  local Tail="</file>\n  </static>"
  local FrmHead="  <transition>\n    <duration>$_TransitionTime</duration>\n    <from>"
  local FrmTail="</from>"
  local ToHead="    <to>"
  local ToTail="</to>\n  </transition>"
  local FstFil

  if [ "$_StartNow" != "on" ] ; then Hour=00 Minute=00 Second=00 ; fi

  echo "<background>"
  echo "  <starttime>"
  echo "    <year>$Yer</year>"
  echo "    <month>$Mnth</month>"
  echo "    <day>$Day</day>"
  echo "    <hour>$Hour</hour>"
  echo "    <minute>$Minute</minute>"
  echo "    <second>$Second</second>"
  echo "  </starttime>"
  echo "<!-- This animation starts at $Yer/$Mnth/$Day $Hour:$Minute:$Second. -->"

  if [ "$_TransitionTime" == "0" ] ; then
    echo -e "$BOARD_ImgFils" | sed "s|^\(.*\)$|$Head\0$Tail|"
  else
    FstFil=$( echo -e "$BOARD_ImgFils" | head -n 1 )
    echo -e "${Head}${FstFil}${Tail}"
    echo -e "${FrmHead}${FstFil}${FrmTail}"
    echo -e "$BOARD_ImgFils" \
     | tail -n +2 \
     | sed "s|^\(.*\)$|$ToHead\0$ToTail\n$Head\0$Tail\n$FrmHead\0$FrmTail|"
    echo -e "${ToHead}${FstFil}${ToTail}"
  fi

  echo "</background>"
}


function distribution_n_release() {
  local distri reles issue

  distri="$(lsb_release -i 2> /dev/null)"
  distri="$(echo $distri)"
  distri="${distri##* }"

  issue="$(head -n1 /etc/issue)"
  issue="$(echo $issue)"
  issue="${issue%% *}"

  if [ -z "$distri" ] ; then
    distri="$issue"
    reles="$( grep [0-9] /etc/issue \
              | head -n1 \
              | sed 's/^[^0-9]*//' )"
  elif [ "$issue" == "LMDE" ] ; then
    distri="$issue"
    reles="$(lsb_release -r)"
    reles="$(echo $reles)"
    reles="${reles##* }"
  else
    reles="$(lsb_release -r)"
    reles="$(echo $reles)"
    reles="${reles##* }"
  fi

  echo $distri $reles
}


function move_output_file() {

  if [ -z "$_AutosetPath" ] ; then
    _AutosetPath="$PWD"
  else
    mkdir -p "$_AutosetPath"
    mv -f "$_OutputFile" "$_AutosetPath/$_OutputFile"
  fi
}


function set_background() {
  local x distro

  distro="$( distribution_n_release )"

  case "$distro" in
    "Ubuntu 15.04"|"Ubuntu 14.04"|"Ubuntu 12.04"|"Fedora 22"*)
      case "$DESKTOP_SESSION" in
        ubuntu*|gnome*)
          move_output_file
          gsettings set org.gnome.desktop.background picture-uri \
                          "file://$_AutosetPath/$_OutputFile"
          ;;
        cinnamon*)
          move_output_file
          gsettings set org.cinnamon.desktop.background picture-uri \
                          "file://$_AutosetPath/$_OutputFile"
          ;;
        mate)
          move_output_file
          gsettings set org.mate.background picture-filename \
                          "$_AutosetPath/$_OutputFile"
          ;;
      esac
      ;;

    "Ubuntu 10."*)
      if [ "$DESKTOP_SESSION" == "gnome" ] ; then
        move_output_file
        gconftool --set --type=string \
                    /desktop/gnome/background/picture_filename \
                                   "$_AutosetPath/$_OutputFile"
      fi
      ;;

    "Debian 8"*)
      case "$XDG_CURRENT_DESKTOP" in
        GNOME*)
          move_output_file
          gsettings set org.gnome.desktop.background picture-uri \
                          "file://$_AutosetPath/$_OutputFile"
          ;;
        X-Cinnamon)
          move_output_file
          gsettings set org.cinnamon.desktop.background picture-uri \
                          "file://$_AutosetPath/$_OutputFile"
          ;;
        MATE)
          move_output_file
          gsettings set org.mate.background picture-filename \
                          "$_AutosetPath/$_OutputFile"
          ;;
      esac
      ;;

    "LinuxMint 17"*|"LMDE 2")
      if [ "$XDG_CURRENT_DESKTOP" == "X-Cinnamon" ] ; then
          move_output_file
          gsettings set org.cinnamon.desktop.background picture-uri \
                          "file://$_AutosetPath/$_OutputFile"
      elif [ "$DESKTOP_SESSION" == "mate" ] ; then
          move_output_file
          gsettings set org.mate.background picture-filename \
                          "$_AutosetPath/$_OutputFile"
      fi
      ;;

    *)
      x=$(gnome-session --version)
      x=${x#* }
      if [ "${x%%.*}" == "3" ] ; then
        move_output_file
        gsettings set org.gnome.desktop.background picture-uri \
                          "file://$_AutosetPath/$_OutputFile"
      fi
      ;;
  esac
}


function main() {

  find_image_files

  error_exit_if_too_less_image_file

  generate_slide_show_xml > "$_OutputFile"

  if [ "$_Autoset" == "on" ] ; then set_background ; fi

}


main

2015/8/23 21:43
應用擴展 工具箱

« 1 2 (3)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.