Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/android-debug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ jobs:
echo "apk=$APK" >> $GITHUB_OUTPUT
echo "Built APK: $APK"


- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: package
path: ${{ steps.build.outputs.apk }}
path: ${{ steps.build.outputs.apk }}
103 changes: 71 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,102 @@
Wally: A working Android wallpaper carousel with no ads.
# Wally

**A simple, ad-free Android wallpaper carousel.**

[![Build](https://github.com/Fector101/wallpaper-carousel/actions/workflows/android-release.yml/badge.svg)](https://github.com/Fector101/wallpaper-carousel/actions/workflows/android-release.yml)

[APK Download](https://github.com/Fector101/wallpaper-carousel/releases/download/v1.0.6/waller.apk)
**[Download APK](https://github.com/Fector101/wallpaper-carousel/releases/download/v1.0.6/waller.apk)**

---

## Overview

Wally automatically rotates your wallpapers using images you choose.

- The wallpaper automatically switches to a new user-selected image every 2 minutes (or at a custom interval set by the user). Users can also choose changes to happen on screen wakes.
* Change wallpapers every **2 minutes** (or any custom interval)
* Option to update wallpapers on **screen wake**
* Fully **offline** and **ad-free**

---

## Features

## More Features
### Wallpaper Carousel

### Home screen widget
- To view Lock-screen image from home screen
- Can Tap to Enter App
* Automatically cycles through selected images
* Custom time intervals
* Optional change on screen wake

### Notification
- Large Icon to Preview Next image
- Skip Button to change upcoming Image
- Stop Button to End carousel
### Home Screen Widget

### Permissions
- Access to Only Images.
- Notifications for more user controls and preview
* View current lock-screen wallpaper from your home screen
* Tap the widget to quickly open the app

### Help
- Saving added images in app path only
- Added export button to get images if uninstalling app
- A Button to Share Images to other Apps
- App is set to Auto detect android Theme (Dark Theme Recommended 😅)
### Notification Controls

## Few Screen Samples
* Preview the next wallpaper (large icon)
* Skip to the next image
* Stop the carousel anytime

All screenshot samples are in low Res (for fast loading)
| **View Screen Design** | **Home Screen Widget** |
|-------------------------------------|--------------------------------------------------------|
|![app-view-img-screen_1_360x800](.github/docs-imgs/full-screen-design.jpg) | ![home-screen_1_360x800](.github/docs-imgs/home-screen-widget.jpg) |
### Image Import & Sharing

* Share images directly to Wally from other apps
* Easily share images from Wally to other apps

---

## Permissions

| **Gallery Screen Design** | **Preview Screen Design** |
|-------------------------------------|--------------------------------------------------------|
|![gallery-screen](.github/docs-imgs/galleryscreen.jpg) | ![preview-screen](.github/docs-imgs/fullscreen.jpg) |
* Images only — no unnecessary access
* Notifications — for controls and previews

---

## Help & Notes

* Images are stored inside the app’s internal directory
* Use the Export feature before uninstalling to keep your images
* Automatically adapts to system theme (dark mode recommended)

---

## Screenshots

*All screenshots are low resolution for faster loading*

| **Request Screen Design** | **Request Screen Dark Mode** |
|-------------------------------------|--------------------------------------------------------|
|![gallery-screen](.github/docs-imgs/request-screen.jpg) | ![gallery-screen dark](.github/docs-imgs/request-screen-dark.jpg) |
### Main Screens

| View Screen | Home Screen Widget |
| ---------------------------------------------------------------- | -------------------------------------------------------- |
| ![app-view-img-screen](.github/docs-imgs/full-screen-design.jpg) | ![home-screen](.github/docs-imgs/home-screen-widget.jpg) |

---

**Share Image to other App**
### Gallery & Preview

| Gallery Screen | Preview Screen |
| ------------------------------------------------------ | --------------------------------------------------- |
| ![gallery-screen](.github/docs-imgs/galleryscreen.jpg) | ![preview-screen](.github/docs-imgs/fullscreen.jpg) |

---

### Request Screens

| Light Mode | Dark Mode |
| ------------------------------------------------------ | ---------------------------------------------------------- |
| ![request-light](.github/docs-imgs/request-screen.jpg) | ![request-dark](.github/docs-imgs/request-screen-dark.jpg) |

---

### Share Feature

![share-modal](.github/docs-imgs/share-modal.jpg)

---

![gallery-screen](.github/docs-imgs/share-modal.jpg)
## Why Wally?

* No ads
* No tracking
* Clean, focused wallpaper experience

---
11 changes: 10 additions & 1 deletion app_src/android/DEV.md
Original file line number Diff line number Diff line change
Expand Up @@ -205,4 +205,13 @@ jobs:
name: Release v${{ steps.version.outputs.VERSION }}
files: bin/waller.apk

```
```
### To see Only App Logs
```shell
adb logcat | grep -E "python"
```


## P4a.hook
Peek at AndroidManifest.xml File before editing with [hook.py](p4a/hook.py)
[AndroidManifest.xml Location](../../.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/waller/src/main/AndroidManifest.xml)
5 changes: 5 additions & 0 deletions app_src/android/p4a/hook.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ def after_apk_build(toolchain: ToolchainCL):
</activity>
"""
manifest_file_content = manifest_file_content.replace("</activity>", f"{image_share_from_other_apps_to_app_activity}")
manifest_file_content = insert_to_end_of_xml(f"""
<activity
android:name="{package}.CameraActivity"
android:exported="false"
android:screenOrientation="fullSensor" />""",manifest_file_content)

android_manifest_file_path.write_text(manifest_file_content, encoding="utf-8")
print("Successfully: Updated Manifest!\n",manifest_file_content)
Expand Down
Loading
Loading