“UbuntuHelp:RotateWallpapers”的版本间的差异
来自Ubuntu中文
小 (新页面: {{From|https://help.ubuntu.com/community/RotateWallpapers}} {{Languages|UbuntuHelp:RotateWallpapers}} This program was custom made by a developer in the nautilus channel. Thanks gicmo! ...) |
小 |
||
(未显示2个用户的4个中间版本) | |||
第1行: | 第1行: | ||
{{From|https://help.ubuntu.com/community/RotateWallpapers}} | {{From|https://help.ubuntu.com/community/RotateWallpapers}} | ||
{{Languages|UbuntuHelp:RotateWallpapers}} | {{Languages|UbuntuHelp:RotateWallpapers}} | ||
+ | <<Include(Tag/Deletion)>> | ||
This program was custom made by a developer in the nautilus channel. | This program was custom made by a developer in the nautilus channel. | ||
− | |||
Thanks gicmo! | Thanks gicmo! | ||
− | |||
change-bg rotates your wallpaper (jpg/png) in a gnome enviornment over a specified amount of time. | change-bg rotates your wallpaper (jpg/png) in a gnome enviornment over a specified amount of time. | ||
− | |||
=== Dependencies === | === Dependencies === | ||
Install both of the following. | Install both of the following. | ||
− | |||
'''libgnomevfs2-dev''' | '''libgnomevfs2-dev''' | ||
− | |||
'''build-essential''' | '''build-essential''' | ||
− | |||
=== Source Code === | === Source Code === | ||
− | + | 1.Copy this source code into a blank text document. | |
− | + | 2.Save as change-bg.c | |
− | + | ||
<pre><nowiki> | <pre><nowiki> | ||
/* | /* | ||
− | Compile with: | + | Compile with: |
− | gcc -Wall -o change-bg `pkg-config --cflags --libs gnome-vfs-2.0 gconf-2.0` change-bg.c | + | gcc -Wall -o change-bg `pkg-config --cflags --libs gnome-vfs-2.0 gconf-2.0` change-bg.c |
− | + | ||
− | Copyright (C) 2005, Christian Kellner | + | Copyright (C) 2005, Christian Kellner |
− | The Gnome Library is free software; you can redistribute it and/or | + | The Gnome Library is free software; you can redistribute it and/or |
− | modify it under the terms of the GNU Library General Public License as | + | modify it under the terms of the GNU Library General Public License as |
− | published by the Free Software Foundation; either version 2 of the | + | published by the Free Software Foundation; either version 2 of the |
− | License, or (at your option) any later version. | + | License, or (at your option) any later version. |
− | The Gnome Library is distributed in the hope that it will be useful, | + | The Gnome Library is distributed in the hope that it will be useful, |
− | but WITHOUT ANY WARRANTY; without even the implied warranty of | + | but WITHOUT ANY WARRANTY; without even the implied warranty of |
− | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
− | Library General Public License for more details. | + | Library General Public License for more details. |
− | You should have received a copy of the GNU Library General Public | + | You should have received a copy of the GNU Library General Public |
− | License along with the Gnome Library; see the file COPYING.LIB. If not, | + | License along with the Gnome Library; see the file COPYING.LIB. If not, |
− | write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | + | write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
− | Boston, MA 02111-1307, USA. | + | Boston, MA 02111-1307, USA. |
第139行: | 第133行: | ||
mins = atoi (argv[1]); | mins = atoi (argv[1]); | ||
− | if (text_uri | + | if (text_uri == NULL || mins == 0) { |
fprintf (stderr, "Usage: %s <seconds> 0> <uri>\n", argv[0]); | fprintf (stderr, "Usage: %s <seconds> 0> <uri>\n", argv[0]); | ||
return 1; | return 1; | ||
第174行: | 第168行: | ||
} | } | ||
</nowiki></pre> | </nowiki></pre> | ||
− | |||
=== Compiling === | === Compiling === | ||
Change directories to where change-bg.c is located and run the following command. | Change directories to where change-bg.c is located and run the following command. | ||
第180行: | 第173行: | ||
gcc -Wall -o change-bg `pkg-config --cflags --libs gnome-vfs-2.0 gconf-2.0` change-bg.c | gcc -Wall -o change-bg `pkg-config --cflags --libs gnome-vfs-2.0 gconf-2.0` change-bg.c | ||
</nowiki></pre> | </nowiki></pre> | ||
− | |||
=== Using === | === Using === | ||
./change-bg <seconds> <location of wallpapers> | ./change-bg <seconds> <location of wallpapers> | ||
− | + | === Doing it with a Bash script === | |
− | [[ | + | As an alternative you could save the following script and call it from a startup program [Sessions]. |
+ | Modify the WALLPAPER_LOCATION to the place where you store your wallpaper images. | ||
+ | <pre><nowiki> | ||
+ | #!/bin/bash | ||
+ | # change_wp [seconds] Changes the wallpaper at a given interval of seconds. | ||
+ | # example: change_wp 3600 change the wallpaper every hour. | ||
+ | # If you do not supply any time it just changes the wallpaper and exits. | ||
+ | # Copyleft (C) 2007, Albert Bicchi [email protected] | ||
+ | WALLPAPER_LOCATION="/home/albert/wallpapers" | ||
+ | find "${WALLPAPER_LOCATION}" -iname '*.jp*g' -o -iname '*.png' > /tmp/wallpapers | ||
+ | TOTAL=`cat /tmp/wallpapers | wc -l` | ||
+ | while [ 1 ] | ||
+ | do | ||
+ | ((LINE=RANDOM%TOTAL+1)) | ||
+ | WALLPAPER=`sed -n "$LINE"p /tmp/wallpapers` | ||
+ | gconftool -t str -s /desktop/gnome/background/picture_filename "${WALLPAPER}" | ||
+ | if [ "$1" = "" ]; then | ||
+ | exit 0 | ||
+ | fi | ||
+ | sleep "$1s" | ||
+ | done | ||
+ | </nowiki></pre> | ||
[[category:UbuntuHelp]] | [[category:UbuntuHelp]] |
2009年11月17日 (二) 20:32的最新版本
点击翻译: |
English |
请不要直接编辑翻译本页,本页将定期与来源同步。 |
<<Include(Tag/Deletion)>> This program was custom made by a developer in the nautilus channel. Thanks gicmo! change-bg rotates your wallpaper (jpg/png) in a gnome enviornment over a specified amount of time.
Dependencies
Install both of the following. libgnomevfs2-dev build-essential
Source Code
1.Copy this source code into a blank text document. 2.Save as change-bg.c
/* Compile with: gcc -Wall -o change-bg `pkg-config --cflags --libs gnome-vfs-2.0 gconf-2.0` change-bg.c Copyright (C) 2005, Christian Kellner The Gnome Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The Gnome Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the Gnome Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <libgnomevfs/gnome-vfs.h> #include <gconf/gconf-client.h> #include <glib.h> #include <stdio.h> #include <stdlib.h> GConfClient *gcc = NULL; char *text_uri = NULL; GnomeVFSURI *uri; GList *files = NULL; GList *iter = NULL; static gboolean change_picture (gpointer data) { GnomeVFSURI *nuri; gboolean result; char *path; if (gcc == NULL) { gcc = gconf_client_get_default (); } path = (char *) iter->data; nuri = gnome_vfs_uri_append_string (uri, path); path = gnome_vfs_uri_to_string (nuri, GNOME_VFS_URI_HIDE_USER_NAME | GNOME_VFS_URI_HIDE_PASSWORD | GNOME_VFS_URI_HIDE_TOPLEVEL_METHOD | GNOME_VFS_URI_HIDE_FRAGMENT_IDENTIFIER | GNOME_VFS_URI_HIDE_HOST_PORT | GNOME_VFS_URI_HIDE_HOST_NAME); fprintf (stdout, "Setting bg to %s\n", path); result = gconf_client_set_string (gcc, "/desktop/gnome/background/picture_filename", path, NULL); g_free (path); if (result == FALSE) { fprintf (stderr, "Error setting %s as bg\n", path); } if (iter->next != NULL) { iter = iter->next; } else { iter = files; } return TRUE; } static gboolean visit_files (const gchar *rel_path, GnomeVFSFileInfo *info, gboolean recursing_will_loop, gpointer data, gboolean *recurse) { GList **files = (GList **) data; *recurse = TRUE; if (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE && (g_str_equal (info->mime_type, "image/png") || g_str_equal (info->mime_type, "image/jpeg"))) { *files = g_list_prepend (*files, g_strdup (rel_path)); fprintf (stdout, "Adding %s\n", rel_path); } return !recursing_will_loop; } int main (int argc, char **argv) { GnomeVFSResult result; GMainLoop *ml; int mins; if (argc != 3) { fprintf (stderr, "Usage: %s <seconds> <uri>\n", argv[0]); return 1; } if (! gnome_vfs_init ()) { fprintf (stderr, "Cannot initialize gnome-vfs.\n"); return 1; } text_uri = gnome_vfs_make_uri_from_shell_arg (argv[2]); mins = atoi (argv[1]); if (text_uri == NULL || mins == 0) { fprintf (stderr, "Usage: %s <seconds> 0> <uri>\n", argv[0]); return 1; } fprintf (stdout, "Generating file list ...\n"); files = NULL; result = gnome_vfs_directory_visit (text_uri, GNOME_VFS_FILE_INFO_GET_MIME_TYPE | GNOME_VFS_FILE_INFO_FORCE_FAST_MIME_TYPE, GNOME_VFS_DIRECTORY_VISIT_LOOPCHECK | GNOME_VFS_DIRECTORY_VISIT_SAMEFS, visit_files, &files); if (result != GNOME_VFS_OK) { fprintf (stderr, "Error: %s\n", gnome_vfs_result_to_string (result)); return 1; } uri = gnome_vfs_uri_new (text_uri); iter = files; g_timeout_add (1000 * mins, change_picture, NULL); ml = g_main_loop_new (NULL, FALSE); fprintf (stdout, "Going into main loop (timeout: %d seconds)\n", mins); g_main_loop_run (ml); return 0; }
Compiling
Change directories to where change-bg.c is located and run the following command.
gcc -Wall -o change-bg `pkg-config --cflags --libs gnome-vfs-2.0 gconf-2.0` change-bg.c
Using
./change-bg <seconds> <location of wallpapers>
Doing it with a Bash script
As an alternative you could save the following script and call it from a startup program [Sessions]. Modify the WALLPAPER_LOCATION to the place where you store your wallpaper images.
#!/bin/bash # change_wp [seconds] Changes the wallpaper at a given interval of seconds. # example: change_wp 3600 change the wallpaper every hour. # If you do not supply any time it just changes the wallpaper and exits. # Copyleft (C) 2007, Albert Bicchi [email protected] WALLPAPER_LOCATION="/home/albert/wallpapers" find "${WALLPAPER_LOCATION}" -iname '*.jp*g' -o -iname '*.png' > /tmp/wallpapers TOTAL=`cat /tmp/wallpapers | wc -l` while [ 1 ] do ((LINE=RANDOM%TOTAL+1)) WALLPAPER=`sed -n "$LINE"p /tmp/wallpapers` gconftool -t str -s /desktop/gnome/background/picture_filename "${WALLPAPER}" if [ "$1" = "" ]; then exit 0 fi sleep "$1s" done