Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Functionality #12

Merged
merged 219 commits into from
Sep 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
8001278
add copyright info
beyenilmez May 2, 2024
79bd99b
Merge branch 'development' of https://github.com/beyenilmez/desktop-m…
beyenilmez Jun 23, 2024
e299ae6
update gitignore
beyenilmez Jun 23, 2024
663810f
reset to fresh project
beyenilmez Jun 23, 2024
cb79e2c
use yarn
beyenilmez Jun 23, 2024
1bc2bc1
add theme provider
beyenilmez Jun 23, 2024
9afbdb9
add mode toggle
beyenilmez Jun 23, 2024
5c9c69d
add tabs
beyenilmez Jun 23, 2024
026ef92
add logger
beyenilmez Jun 23, 2024
7335972
modify logger
beyenilmez Jun 23, 2024
b4f1d7b
Update ModeToggle.tsx
beyenilmez Jun 23, 2024
1a1f1ef
add production log level
beyenilmez Jun 24, 2024
1827d1b
add custom title bar
beyenilmez Jun 24, 2024
c2d47ca
implement auto file creation and logging upgrades
beyenilmez Jun 24, 2024
943a56c
move theme storage to config file
beyenilmez Jun 24, 2024
4259aed
add new option to config
beyenilmez Jun 24, 2024
1b85195
add double click to maximize
beyenilmez Jun 24, 2024
2f390db
change mode toggle button animation
beyenilmez Jun 24, 2024
84fc3fb
add settings page layout
beyenilmez Jun 24, 2024
4251b65
add settings
beyenilmez Jun 24, 2024
f28ceac
add advanced settings tab
beyenilmez Jun 24, 2024
08e913a
fix webviewdata path
beyenilmez Jun 24, 2024
6cd7380
add log to config changes
beyenilmez Jun 24, 2024
67cbba7
add advanced settings tsx
beyenilmez Jun 24, 2024
2603d01
add logger settings to config
beyenilmez Jun 24, 2024
b78fd20
add enable logging setting to advanced
beyenilmez Jun 24, 2024
9556d93
add log filtering to advanced settings
beyenilmez Jun 24, 2024
37432cb
implement translation with i18n
beyenilmez Jun 24, 2024
aa6e01e
add combobox for language selection
beyenilmez Jun 24, 2024
0bbd28c
replace get-set functions in config
beyenilmez Jun 25, 2024
6a90a2f
remove set-get theme functions
beyenilmez Jun 25, 2024
404cb26
move theme setting to general
beyenilmez Jun 25, 2024
e93c649
generalize get-set config field functions
beyenilmez Jun 25, 2024
fc3d80c
generalize merge defaults config function
beyenilmez Jun 25, 2024
4be0092
fix tab selection when maximizing
beyenilmez Jun 25, 2024
8ba6e5e
save window state
beyenilmez Jun 25, 2024
c9d3a18
only save config before close
beyenilmez Jun 25, 2024
de3ab03
fix custom titlebar
beyenilmez Jun 25, 2024
77d8146
remove unnecessary config
beyenilmez Jun 25, 2024
cc6ce4f
add window scale to config
beyenilmez Jun 25, 2024
8ff1a26
add scale, improve settings
beyenilmez Jun 25, 2024
38744af
update combobox
beyenilmez Jun 25, 2024
dac3e6a
update theme locale location
beyenilmez Jun 25, 2024
fe20f89
update scale setting
beyenilmez Jun 25, 2024
8251e1c
add acrylic effect
beyenilmez Jun 25, 2024
4804a28
add opacity setting
beyenilmez Jun 25, 2024
988e025
add window effect settings
beyenilmez Jun 25, 2024
ab9167e
set system title bar theme
beyenilmez Jun 25, 2024
6f161e2
disable overscroll
beyenilmez Jun 25, 2024
bd4dae1
add single instance lock
beyenilmez Jun 25, 2024
931154d
Workflow (#4)
beyenilmez Jun 26, 2024
0a0b7f9
add certificate
beyenilmez Jun 26, 2024
fcf28b1
fix window effect setting bug
beyenilmez Jun 26, 2024
170168f
add max log files setting
beyenilmez Jun 26, 2024
81d90a0
add language detection on first run
beyenilmez Jun 26, 2024
e6e9022
add theme setting to app settings
beyenilmez Jun 26, 2024
4da84c3
add system notification function
beyenilmez Jun 26, 2024
0744b65
add toaster for notification
beyenilmez Jun 26, 2024
833cfd2
Update build.yml
beyenilmez Jun 27, 2024
40faa3d
Update AdvancedSettings.tsx
beyenilmez Jun 27, 2024
849d5e2
Update build.yml
beyenilmez Jun 27, 2024
4577b81
update setting items directory
beyenilmez Jun 27, 2024
d1e8663
add caching for frontend config
beyenilmez Jun 27, 2024
cc376ed
update settings
beyenilmez Jun 27, 2024
f86300f
replace runtime functions
beyenilmez Jun 27, 2024
d7f9b8c
remove wailsjs from gitignore
beyenilmez Jun 27, 2024
1f3156f
implement settings import/export
beyenilmez Jun 28, 2024
5ead2ac
add translation
beyenilmez Jun 28, 2024
1a07b54
save window position
beyenilmez Jun 28, 2024
350a3f8
save window size
beyenilmez Jun 28, 2024
8791531
add restart button
beyenilmez Jun 28, 2024
bc69fb1
add restart app button
beyenilmez Jun 28, 2024
8717c86
move useRestart inside settingsItem
beyenilmez Jun 29, 2024
9035905
update storage
beyenilmez Jun 29, 2024
70fb331
refactor setting items
beyenilmez Jun 30, 2024
7870e23
refactor setting items
beyenilmez Jun 30, 2024
b287604
generalize config swithces
beyenilmez Jun 30, 2024
8ee1237
fix requires restart text
beyenilmez Jun 30, 2024
14c14f6
add save window status setting
beyenilmez Jun 30, 2024
5845fa1
update gitignore
beyenilmez Jun 30, 2024
96aa727
change default installation directory
beyenilmez Jun 30, 2024
c695702
change app name
beyenilmez Jun 30, 2024
9a0f8b8
Update README.md
beyenilmez Jun 30, 2024
5b29c97
add self update
beyenilmez Jul 1, 2024
7ffc4dd
fix appRestart uac dialog
beyenilmez Jul 1, 2024
fec54d1
update as admin
beyenilmez Jul 1, 2024
b079bfc
save tab on restart
beyenilmez Jul 1, 2024
a253c5f
update toast
beyenilmez Jul 1, 2024
13885dd
migrate to sonner
beyenilmez Jul 1, 2024
11023ce
save tab on import config
beyenilmez Jul 1, 2024
3691c4f
restart at correct page after update
beyenilmez Jul 2, 2024
f17d9d1
update frontend config
beyenilmez Jul 2, 2024
5216bc0
refactor config switch setting
beyenilmez Jul 3, 2024
2c004a6
refactor import/export settings
beyenilmez Jul 3, 2024
608a8a6
refactor setting items
beyenilmez Jul 3, 2024
58a640f
add generic config slider component
beyenilmez Jul 3, 2024
b978a0a
refactor contexts
beyenilmez Jul 3, 2024
558fe41
remove relative imports
beyenilmez Jul 3, 2024
c424a99
combine providers into a single component
beyenilmez Jul 3, 2024
68d5911
remove redundancy
beyenilmez Jul 3, 2024
3cfbbbe
return generic value from getConfigField
beyenilmez Jul 3, 2024
1a7ce0b
remove theme.go
beyenilmez Jul 3, 2024
635bef9
add new path
beyenilmez Jul 3, 2024
f0b3eb3
move wailsjs folder to resolve ts error
beyenilmez Jul 3, 2024
e17c304
add notify argument
beyenilmez Jul 3, 2024
1aedb66
move some jobs after dom is loaded
beyenilmez Jul 4, 2024
d526038
implement packs
beyenilmez Jul 9, 2024
d9b58f7
use general path for desktop
beyenilmez Jul 9, 2024
c9853fe
add icons to info card
beyenilmez Jul 9, 2024
b240f42
use png conversion with assetserver
beyenilmez Jul 15, 2024
d444c9e
implement png-ico conversion
beyenilmez Jul 16, 2024
1d6015d
add opacity and corner radius settings
beyenilmez Jul 17, 2024
c90f201
customize scrollbar
beyenilmez Jul 17, 2024
b13a8bf
simplify packs frontend
beyenilmez Jul 17, 2024
685a0ca
add loading indicators
beyenilmez Jul 17, 2024
81f1830
use env variables for generalized path
beyenilmez Jul 17, 2024
94a308a
fix programfiles env variable order
beyenilmez Jul 17, 2024
9dbf1ee
fix public desktop path
beyenilmez Jul 17, 2024
4102c90
change path generalization logic
beyenilmez Jul 17, 2024
ec97e25
add filepath globbing
beyenilmez Jul 17, 2024
ae35b8e
add caching for icon packs
beyenilmez Jul 17, 2024
b708347
do not regenerate icons when settings are identical
beyenilmez Jul 18, 2024
d0780d6
add settings for file matching
beyenilmez Jul 18, 2024
147085c
add file matching
beyenilmez Jul 18, 2024
46df4ce
remove redundant use of full path
beyenilmez Jul 18, 2024
b1b7e03
parallelize icon generation
beyenilmez Aug 13, 2024
a87873b
change icon id each generation
beyenilmez Aug 13, 2024
b018965
change lnk icons on apply
beyenilmez Aug 13, 2024
c1cb263
add checkbox for deleting the generated icons
beyenilmez Aug 13, 2024
60eccb0
add missing translations
beyenilmez Aug 13, 2024
b77e8be
add edit screen
beyenilmez Aug 17, 2024
f5bab3d
simplify - refactor
beyenilmez Aug 18, 2024
6e3e1ef
fix settings scroll
beyenilmez Aug 18, 2024
edc83d2
remove edit tab
beyenilmez Aug 18, 2024
ef7c2a5
fix z levels
beyenilmez Aug 18, 2024
bce26d8
implement fileInfo editing
beyenilmez Aug 19, 2024
75c0e77
fix metadata edit
beyenilmez Aug 19, 2024
1d8b41c
implement save files button
beyenilmez Aug 19, 2024
eec9d9e
add empty icon creation button for edit tab
beyenilmez Aug 19, 2024
51b9051
modify edit page skeleton
beyenilmez Aug 19, 2024
d133ba6
implement icon deletion
beyenilmez Aug 19, 2024
e942256
generate nonexistent iconpack files
beyenilmez Aug 19, 2024
e11ae02
add new buttons to top of the packs
beyenilmez Aug 19, 2024
502d7ee
fix update spinner animation
beyenilmez Aug 19, 2024
9722f2d
support more image types
beyenilmez Aug 19, 2024
6763c10
reorder allowed image extensions
beyenilmez Aug 19, 2024
af52d2c
fix tablist overflow
beyenilmez Aug 20, 2024
341d7d8
add import/export logic
beyenilmez Aug 20, 2024
73efbe7
small bugfixes
beyenilmez Aug 20, 2024
6b495fb
add more corruption correction
beyenilmez Aug 21, 2024
4778354
ignore apply.json for import/export
beyenilmez Aug 21, 2024
4f45c2f
change select image icon
beyenilmez Aug 21, 2024
7ad54f4
update image selection logic
beyenilmez Aug 21, 2024
d0e18de
implement image select actions
beyenilmez Aug 21, 2024
1220aa5
add .exe and .dll icon extraction
beyenilmez Aug 22, 2024
0497dea
select image bugfix
beyenilmez Aug 22, 2024
f71ea2a
add directory support
beyenilmez Aug 22, 2024
38d0cbb
add directory apply support
beyenilmez Aug 22, 2024
69c42bd
enhance path pattern logic
beyenilmez Aug 23, 2024
c1e25d0
change env var order
beyenilmez Aug 23, 2024
9a55e01
add url support
beyenilmez Aug 23, 2024
a0f4f27
update setIcon
beyenilmez Aug 23, 2024
03658c4
fix image selector updating bug for edit screen
beyenilmez Aug 23, 2024
c58efea
fix empty icon image selector
beyenilmez Aug 23, 2024
7a72a17
remove unused import
beyenilmez Aug 23, 2024
9f81374
reset corrupted configs
beyenilmez Aug 23, 2024
73579d9
add folder button
beyenilmez Aug 27, 2024
3ddb28d
use form for metadata editing
beyenilmez Aug 27, 2024
d90f753
fix message layout
beyenilmez Aug 27, 2024
a019bd5
add description to metadata
beyenilmez Aug 27, 2024
65513eb
fix description line-break
beyenilmez Aug 27, 2024
af2ac37
add license field to metadata
beyenilmez Aug 27, 2024
37ce8f8
fix edit metadata margins
beyenilmez Aug 27, 2024
2f13b9e
fix system notification translation
beyenilmez Aug 27, 2024
b35211b
use cmap for alll maps
beyenilmez Aug 27, 2024
8784431
add missing translations
beyenilmez Aug 27, 2024
cfa3ed4
fix url no icon bug
beyenilmez Aug 27, 2024
ca43b47
add tooltip support for buttons
beyenilmez Aug 28, 2024
719353d
add helpcard component
beyenilmez Aug 28, 2024
4f54486
add existence check to path inputs
beyenilmez Aug 29, 2024
08b34d9
add missing translations
beyenilmez Aug 29, 2024
6c859ff
change app icon
beyenilmez Sep 2, 2024
17ae531
add file association
beyenilmez Sep 2, 2024
1d61b7a
add import pack details
beyenilmez Sep 2, 2024
2e090ca
add tooltips to buttons with no text
beyenilmez Sep 2, 2024
806bc4f
add lnk desc support
beyenilmez Sep 2, 2024
3655cfe
Update help-card.tsx
beyenilmez Sep 2, 2024
1cbda5d
fix image resizing
beyenilmez Sep 3, 2024
d9e8516
add help cards
beyenilmez Sep 3, 2024
2fd22d5
move external programs
beyenilmez Sep 3, 2024
f1864ae
restore missing files by download
beyenilmez Sep 3, 2024
be0c7f7
add progress bar
beyenilmez Sep 3, 2024
fa8ec0f
track progress
beyenilmez Sep 3, 2024
b8c5773
fix download urls
beyenilmez Sep 3, 2024
177cf53
update color scheme
beyenilmez Sep 3, 2024
4f7e859
add color scheme setting
beyenilmez Sep 3, 2024
c20d6de
update midnight ash light mode colors
beyenilmez Sep 4, 2024
075751b
add dawn mist color scheme
beyenilmez Sep 4, 2024
31a8154
add forest dawn color scheme
beyenilmez Sep 4, 2024
8a3ea5a
add color scheme preview on hover
beyenilmez Sep 4, 2024
1eea220
add golden ember theme
beyenilmez Sep 4, 2024
021047e
make progress bar bg transparent
beyenilmez Sep 4, 2024
6e198c8
temporarily remove enable setting from packs
beyenilmez Sep 4, 2024
39ed3fe
temporarily remove title bar setting
beyenilmez Sep 4, 2024
6250efd
temporarily remove multi-screen position saving
beyenilmez Sep 4, 2024
883b1d3
show windows on startup
beyenilmez Sep 4, 2024
4dec46d
fix corner rounding background color
beyenilmez Sep 4, 2024
629d3e4
add more detailed logs
beyenilmez Sep 4, 2024
2e26815
reimplement mask
beyenilmez Sep 4, 2024
af1b8f4
force run as administrator
beyenilmez Sep 4, 2024
1c781f3
disable opacity setting when no effect is selected
beyenilmez Sep 4, 2024
830c128
pass args when restarting
beyenilmez Sep 4, 2024
096aea7
fix dev mode administrator dialog
beyenilmez Sep 4, 2024
d9a98f9
update readme
beyenilmez Sep 4, 2024
d9101fc
change default settings
beyenilmez Sep 4, 2024
42181b2
add default-pack to installer
beyenilmez Sep 4, 2024
ba5017f
put runas admin warning and remove force admin
beyenilmez Sep 4, 2024
a146893
add warning notifications
beyenilmez Sep 4, 2024
cec000c
update applied icon search logic
beyenilmez Sep 4, 2024
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
105 changes: 85 additions & 20 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,99 @@
name: Build

name: "Build"
on:
workflow_dispatch:
push:
branches:
- main
- development
- main
pull_request:
branches:
- main
- development
- main

permissions:
contents: write

jobs:
build:
package:
name: Package
strategy:
fail-fast: false
matrix:
build:
[
{
name: desktop-manager,
platform: windows/amd64,
os: windows-latest,
},
]
runs-on: ${{ matrix.build.os }}
platform: [windows-latest]
build-name: ["iconium"]
go-version: [1.22]
node-version: [20]
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Setup Wails
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest

- name: Build Wails app
run: wails build -nsis

- name: Sign Windows binaries
shell: powershell
run: |
echo "Creating certificate file"
New-Item -ItemType directory -Path certificate
Set-Content -Path certificate\certificate.txt -Value '${{ secrets.WIN_SIGNING_CERT }}'
certutil -decode certificate\certificate.txt certificate\certificate.pfx
echo "Signing Binary"
& 'C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe' sign /fd sha256 /tr http://ts.ssl.com /f certificate\certificate.pfx /p '${{ secrets.WIN_SIGNING_CERT_PASSWORD }}' .\build\bin\${{matrix.build-name}}.exe
echo "Signing Installer"
& 'C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x86/signtool.exe' sign /fd sha256 /tr http://ts.ssl.com /f certificate\certificate.pfx /p '${{ secrets.WIN_SIGNING_CERT_PASSWORD }}' .\build\bin\${{matrix.build-name}}-amd64-installer.exe

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
submodules: recursive
- uses: dAppServer/[email protected]
name: binaries
path: build/bin/*

extract-version:
if: github.ref == 'refs/heads/main'
name: Extract version
runs-on: ubuntu-latest

outputs:
version: ${{ steps.extract_version.outputs.version }}

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Extract version
id: extract_version
run: |
version=$(jq -r '.info.productVersion' wails.json)
echo "version=$version" >> $GITHUB_OUTPUT

create-release:
if: github.ref == 'refs/heads/main'
name: Create release
needs: [extract-version, package]
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
build-name: ${{ matrix.build.name }}
build-platform: ${{ matrix.build.platform }}
name: binaries
path: ./artifacts

- name: Create Draft Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
run: |
gh release create v${{ needs.extract-version.outputs.version }} ./artifacts/* --title "Release v${{ needs.extract-version.outputs.version }}" --draft --generate-notes
20 changes: 13 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@ yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
Expand All @@ -23,6 +18,17 @@ dist-ssr
*.sln
*.sw?

# wails
# Wails
*.exe~
./build/bin/*
*.syso
*.local
node_modules
/build/bin
/build/windows/installer/wails_tools.nsh
/build/windows/installer/tmp
/frontend/dist
/frontend/dist-ssr
/frontend/package.json.md5

# Certificate files
certificate.*
85 changes: 63 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,74 @@
# Desktop Manager

Desktop icon and description manager, with a profile creation tool.
# Iconium

## Screenshots
<p align="center">
<a href="https://github.com/beyenilmez/iconium">
<img src="build/appicon.png" alt="Logo" width="80" height="80">
</a>
<br/>
<a style="font-size: 1.25rem" href="https://beyenilmez.github.io/iconium/" target="_blank">Website</a>

![Main](./assets/screenshot-1.png)
**Iconium** is a flexible tool for creating and managing icon packs. Iconium can apply icons to `.lnk`, `.url` and directories and extract them from files such as `.png`, `.jpg`, `.jpeg`, `.webp`, `.svg`, `.bmp`, `.ico`, `.exe`, `.lnk` and `.url` files. It also provides advanced features like file matching with environment variables or wildcards and customizing icon radius and opacity.

## Features
## Table of Contents
- [Iconium](#iconium)
- [Table of Contents](#table-of-contents)
- [Screenshots](#screenshots)
- [Features](#features)
- [Planned Features](#planned-features)
- [Installation](#installation)
- [Translation](#translation)
- [Technologies](#technologies)
- [License](#license)

- Create desktop profiles
- Edit icon and description
- Shortcut (.lnk) support
## Screenshots
![Screenshot 1](./assets/screenshot-1.png)
![Screenshot 2](./assets/screenshot-2.png)

## Planned
## Features
- Create, distribute and use icon packs
- Edit icon radius and opacity
- Match files by environment variables, wildcards, or destination paths
- Supports `.lnk`, `.url`, and directories
- Can extract icons from `.png`, `.jpg`, `.jpeg`, `.webp`, `.svg`, `.bmp`, `.ico`, `.exe`, `.lnk` and `.url` files
- Highly customizable appearance

- Save desktop layout to profile
- Share profiles as files
- Folder and .url support
- Sync desktop with profile
- .png and .jpg support for icon selection
## Planned Features
- Save desktop layouts to icon packs
- Auto-apply scheduling for icon packs
- Custom icon masks

## Built With
## Installation
1. Install Wails: [Wails installation guide](https://wails.io/docs/gettingstarted/installation).

2. Clone the repository:
```bash
git clone https://github.com/beyenilmez/iconium.git
```
3. Navigate to the project directory:
```bash
cd iconium
```
4. Run in dev mode:
```bash
wails dev
```
or

Build:
```bash
wails build
```
## Translation
1. Create a copy of `frontend/public/locales/en-US.json` file and rename it using your language code, which you can find [here](https://learn.microsoft.com/en-us/openspecs/office_standards/ms-oe376/6c085406-a698-4e12-9d4d-c3b0ee3dbc4a).
2. Translate the file to your language.
3. Update `frontend/src/locales.json` to include your language.

- [Wails](https://wails.io/)
- [React](https://react.dev/)
- [tailwindcss](https://tailwindcss.com/)
- [shadcn-ui](https://ui.shadcn.com/)
- [lucide-react](https://lucide.dev/guide/packages/lucide-react)
## Technologies
- **Backend**: [Go](https://go.dev/), [Wails](https://wails.io/)
- **Frontend**: [React](https://react.dev/), [TailwindCSS](https://tailwindcss.com/), [shadcnUI](https://ui.shadcn.com/)
- **Icon Processing**: [ImageMagick](https://imagemagick.org/), [ExtractIcon](https://github.com/bertjohnson/ExtractIcon)
- **Translation**: [i18next](https://react.i18next.com/)

## License

Distributed under the MIT License. See [LICENSE](https://github.com/beyenilmez/desktop-manager/blob/main/LICENSE) for more information.
Distributed under the MIT License. See [LICENSE](https://github.com/beyenilmez/iconium/blob/main/LICENSE) for more information.
Loading