ฉันจะตั้งวอลล์เปเปอร์เลื่อนข้างได้อย่างไร?


10

ฉันต้องการวอลล์เปเปอร์ของฉันจะเป็นด้านการเลื่อนของเกาะซูเปอร์มาริโอเวิลด์โยชิ 1 เมื่อวอลล์เปเปอร์เลื่อนไปจนสุดมันก็จะวนกลับไปที่จุดเริ่มต้นอย่างราบรื่น

มีโปรแกรมหรือ XML ที่จะทำสิ่งนี้ให้ฉันได้ไหม ฉันใช้ GNOME Shell


6
ดังนั้น . . คุณต้องการวอลเปเปอร์แบบเคลื่อนไหวหรือไม่?
Sergiy Kolodyazhnyy

มันเป็นภาพเคลื่อนไหว แต่ฉันไม่พบสิ่งใดที่สามารถเลื่อนด้านข้างได้
Soren

3
สิ่งที่ฉันคิดว่าสามารถทำได้คือการแยกภาพนั้นออกเป็น "ภาพรวม" หลาย ๆ ภาพและใช้ไฟล์ XML เพื่อตั้งค่าการเปลี่ยนภาพด้วยช่วงเวลาที่กำหนด ด้วยวิธีนี้มันจะเหมือนกับเกมคอนโซลเก่าที่คุณมี "มุมมอง" หนึ่งจุดจากนั้นคุณข้ามชายแดนและมุมมองอื่นจะปรากฏขึ้นบนหน้าจอและอื่น ๆ คิดว่าจะเป็นความคิดที่ดี?
Sergiy Kolodyazhnyy

2
ฉันกำลังคิดที่จะเขียนสคริปต์สำหรับสิ่งนั้น อาจจะพาฉันไปสองสามวัน ฉันจะแจ้งให้คุณทราบเมื่อฉันคิดรหัสการทำงานขึ้นมาใช่ไหม
Sergiy Kolodyazhnyy

1
ฉันจะส่งคำขอนี้ไปยังผู้พัฒนา XScreenSaver ดูเหมือนความคิดที่ยอดเยี่ยมที่ฉันหวังว่าผู้พัฒนาจะพิจารณา มันจะไม่เป็นภาพพื้นหลังตามที่คุณร้องขอ แต่เป็นทางเลือกอื่นในการตอบสนอง "ความต้องการกราฟิก" ของคุณ โฟลเดอร์อันเดียวกัน / รูปภาพอาจถูกจัดคิวด้วยวิธีนี้เพื่อเลื่อนเช่นกัน ฉันชอบคำขอของคุณจริงๆ!
WinEunuuchs2Unix

คำตอบ:


4

อัปเดต 10/22/16

สคริปต์ได้รับการอัปเดตให้ตรงกับข้อกำหนดในคำถามนี้: https://askubuntu.com/a/840381/295286

การเปลี่ยนแปลงและระยะเวลาถูกทำให้เป็นตัวเลือกและมีค่าเริ่มต้น -sนอกจากนี้ยังมีการเพิ่มตัวเลือกสำหรับการปรับขนาดวอลเปเปอร์ (เช่นเดียวกับตัวเลือก Tile, Scale, Stretch จากการตั้งค่าระบบ)


เช่นเดียวกับที่ฉันพูดในความคิดเห็นคุณจะต้องลดภาพเป็นชิ้นขนาดหรือทับซ้อนกันและสร้างสไลด์โชว์สำหรับมัน ฉันไม่ทราบสิทธิ์ใช้งานของรูปภาพเฉพาะที่คุณต้องการดังนั้นฉันจะปล่อยให้คุณตัดมัน ( คำแนะนำ )

อย่างไรก็ตามนี่เป็นสคริปต์ตัวสร้างภาพพื้นหลังแบบเคลื่อนไหวที่ฉันได้เขียน การใช้งานง่ายมาก ตามที่แสดงโดย-hตัวเลือก:

usage: xml_wallpaper_maker.py [-h] -d DIRECTORY -t TRANSITION -l LENGTH [-o]

Serg's XML slideshow creator

optional arguments:
  -h, --help            show this help message and exit
  -d DIRECTORY, --directory DIRECTORY
                        Directory where images stored
  -t TRANSITION, --transition TRANSITION
                        transition time in seconds
  -l LENGTH, --length LENGTH
                        Time length in seconds per image
  -o, --overlay         Enables use of overlay transition

ตัวอย่าง:

./xml_wallpaper_maker.py -d Pictures/My_SideScroller_Images/ -t 5 -l 10 

รหัสแหล่งที่มา

ยังมีอยู่ในGitHub

#!/usr/bin/env python3
# -*- coding: utf-8 -*- 

#
# Author: Serg Kolo , contact: 1047481448@qq.com
# Date: September 2 , 2016
# Purpose: A program that creates and launches XML slideshow
#      
# Tested on: Ubuntu 16.04 LTS
#
#
# Licensed under The MIT License (MIT).
# See included LICENSE file or the notice below.
#
# Copyright © 2016 Sergiy Kolodyazhnyy
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.


from gi.repository import Gio
import xml.etree.cElementTree as ET
import lxml.etree as etree
import argparse
import sys
import os

def gsettings_set(schema, path, key, value):
    """Set value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema, path)
    if isinstance(value,list ):
        return gsettings.set_strv(key, value)
    if isinstance(value,int):
        return gsettings.set_int(key, value)
    if isinstance(value,str):
        return gsettings.set_string(key,value)

def parse_args():
        """ Parses command-line arguments """
        arg_parser = argparse.ArgumentParser(
        description='Serg\'s XML slideshow creator',
        )

        arg_parser.add_argument(
                                '-d', '--directory',
                                help='Directory where images stored',
                                type=str,
                                required=True
                                )

        arg_parser.add_argument(
                                '-t','--transition', 
                                type=float,
                                help='transition time in seconds',
                                required=True
                                )


        arg_parser.add_argument(
                                '-l','--length', 
                                type=float,
                                help='Time length in seconds per image',
                                required=True
                                )

        arg_parser.add_argument(
                                '-o','--overlay', 
                                action='store_true',
                                help='Enables use of overlay transition',
                                required=False
                                )
        return arg_parser.parse_args()



def main():
    """ Program entry point"""
    args = parse_args()
    xml_file = os.path.join(os.path.expanduser('~'),'.local/share/slideshow.xml')
    path = os.path.abspath(args.directory)
    duration = args.length
    transition_time = args.transition

    if not os.path.isdir(path):
       print(path," is not a directory !")
       sys.exit(1)

    filepaths = [os.path.join(path,item) for item in os.listdir(path) ]
    images = [ img for img in filepaths if os.path.isfile(img)]
    filepaths = None
    images.sort()
    root = ET.Element("background")
    previous = None

    # Write the xml data of images and transitions
    for index,img in enumerate(images):

        if index == 0:
           previous = img
           continue

        image = ET.SubElement(root, "static")
        ET.SubElement(image,"duration").text = str(duration)
        ET.SubElement(image,"file").text = previous

        if args.overlay: 
            transition = ET.SubElement(root,"transition",type='overlay')
        else:
            transition = ET.SubElement(root,"transition")
        ET.SubElement(transition,"duration").text = str(transition_time)
        ET.SubElement(transition, "from").text = previous
        ET.SubElement(transition, "to").text = img

        previous = img

    # Write out the final image
    image = ET.SubElement(root, "static")
    ET.SubElement(image,"duration").text = str(duration)
    ET.SubElement(image,"file").text = previous

    # Write out the final xml data to file
    tree = ET.ElementTree(root)
    tree.write(xml_file)

    # pretty print the data
    data = etree.parse(xml_file)
    formated_xml = etree.tostring(data, pretty_print = True)
    with open(xml_file,'w') as f:
        f.write(formated_xml.decode())

    gsettings_set('org.gnome.desktop.background',None,'picture-uri','file://' + xml_file)

if __name__ == '__main__':
    main()

คุณรู้วิธีตัดภาพเป็นโปรแกรมn* nชิ้นโดยใช้nพิกเซล x และnพิกเซล y ในแต่ละภาพหรือไม่ ตัวอย่างเช่นคำสั่งสำหรับวอลล์เปเปอร์ YI1 จะเป็นcommand 1920 1080 1 0และมันจะวนรอบตัวเอง?
Soren

@moo_we_all_do จริง ๆ แล้วสิ่งนี้ถูกถามมาก่อน: askubuntu.com/a/143501/295286
Sergiy Kolodyazhnyy

เพื่อวนรอบฉันจะใช้ 1920 พิกเซลแรกและคัดลอกไปด้านหลัง?
Soren

@moo_we_all_do คุณหมายถึงการวนรอบแบบใด สิ่งที่คุณต้องทำคือแยกภาพนั้นออกเป็นส่วน ๆ ใส่ลงในโฟลเดอร์แล้วบอกเส้นทางของสคริปต์ไปยังโฟลเดอร์นั้น วอลล์เปเปอร์ xml จะเปลี่ยนโดยอัตโนมัติและวนกลับไปที่ภาพแรก
Sergiy Kolodyazhnyy

ตามลูปฉันหมายถึงสโครลและฉันคิดออกขอบคุณ! : D
Soren
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.