Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
andydotxyz committed Mar 2, 2024
2 parents c4b4c54 + 5ccc965 commit 7bc2c75
Show file tree
Hide file tree
Showing 125 changed files with 5,195 additions and 1,110 deletions.
1 change: 0 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,3 @@ Fixes #(issue)

- [ ] Public APIs match existing style.
- [ ] Any breaking changes have a deprecation path or have been discussed.
- [ ] Updated the vendor folder (using `go mod vendor`).
16 changes: 10 additions & 6 deletions .github/workflows/platform_tests.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
name: Platform Tests
on: [push, pull_request]
permissions:
contents: read

jobs:
platform_tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
go-version: ['1.17', '1.20']
go-version: ['1.19', '1.21']
os: [ubuntu-latest, macos-latest]

steps:
- uses: actions/checkout@v2
- uses: WillAbides/setup-go-faster@v1.6.0
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: WillAbides/setup-go-faster@v1.13.0
with:
go-version: ${{ matrix.go-version }}

- name: Get dependencies
run: sudo apt-get update && sudo apt-get install gcc libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libx11-dev xorg-dev
run: sudo apt-get update && sudo apt-get install gcc libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev libx11-dev xorg-dev bc
if: ${{ runner.os == 'Linux' }}

- name: Tests
Expand All @@ -30,11 +34,11 @@ jobs:
set -e
go test -tags ci -covermode=atomic -coverprofile=coverage.out ./...
coverage=`go tool cover -func coverage.out | grep total | tr -s '\t' | cut -f 3 | grep -o '[^%]*'`
if [ $coverage -lt 26 ]; then echo "Test coverage lowered"; exit 1; fi
if (( $(echo "$coverage < 26" | bc) )); then echo "Test coverage lowered"; exit 1; fi
if: ${{ runner.os == 'Linux' }}

- name: Update PR Coverage
uses: shogo82148/actions-goveralls@v1
with:
path-to-profile: coverage.out
if: ${{ runner.os == 'Linux' && github.event_name == 'push' }}
if: ${{ runner.os == 'Linux' && matrix.go-version == '1.19' }}
6 changes: 5 additions & 1 deletion .github/workflows/static_analysis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
name: Static Analysis
on: [push, pull_request]
permissions:
contents: read

jobs:
checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: WillAbides/setup-go-faster@v1.13.0
with:
go-version: '1.19'
go-version: '1.21.x'

- name: Get dependencies
run: |
Expand Down
3 changes: 2 additions & 1 deletion AUTHORS
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Andy Williams <andy@andy.xyz>
Stephen Houston <smhouston88@gmail.com>
Jacob Alzén <>
Jacob Alzén <jacalz@tutanota.com>
Tai Groot <tai@taigrr.com>
27 changes: 26 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,32 @@
# Changelog

This file lists the main changes with each version of the FyneDesk project.
More detailed release notes can be found on the [releases page](https://github.com/fyne-io/desktop/releases).
More detailed release notes can be found on the [releases page](https://github.com/fyshos/fynedesk/releases).

## 0.4 - 2 March 2024

### Added

* Virtual desktops and pager widget
* Add support for permissions requests in apps
* Add systray module
* Support launching xscreenaver for screen lock
* Include a "Quake mode" terminal module using <meta>+` key

### Changed

* New "thin bars" layout of desktop by default
* Show a dialog to confirm before logging out
* Move to abstract light/dark backgrounds from Jost Grant
* Update to Fyne 2.4 theme with rounded corners
* Add app search to app bar
* Dim iconified windows in switcher

### Fixed

* Performance improvements in border painting
* Date widget could move behind clock in some configurations


## 0.3 - 17 December 2021

Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@ uninstall:
-rm $(DESTDIR)$(PREFIX)/share/xsessions/fynedesk.desktop

embed:
DISPLAY=:0 Xephyr :1 -screen 1280x720 &
DISPLAY=:1 go run ./cmd/fynedesk
Xephyr :5 -screen 1280x720 &
DISPLAY=:5 go run ./cmd/fynedesk
37 changes: 24 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<p align="center">
<a href="https://godoc.org/fyne.io/fynedesk" title="GoDoc Reference" rel="nofollow"><img src="https://img.shields.io/badge/go-documentation-blue.svg?style=flat" alt="GoDoc Reference"></a>
<a href="https://godoc.org/fyshos.com/fynedesk" title="GoDoc Reference" rel="nofollow"><img src="https://img.shields.io/badge/go-documentation-blue.svg?style=flat" alt="GoDoc Reference"></a>
<a href="https://github.com/fyshos/fynedesk/releases/tag/v0.4.0" title="0.4.0 Release" rel="nofollow"><img src="https://img.shields.io/badge/version-0.4.0-blue.svg?style=flat" alt="0.4.0 release"></a>
<a href='http://gophers.slack.com/messages/fynedesk'><img src='https://img.shields.io/badge/join-us%20on%20slack-gray.svg?longCache=true&logo=slack&colorB=blue' alt='Join us on Slack' /></a>

<br />
<a href="https://goreportcard.com/report/fyne.io/fynedesk"><img src="https://goreportcard.com/badge/fyne.io/fynedesk" alt="Code Status" /></a>
<a href="https://goreportcard.com/report/fyshos.com/fynedesk"><img src="https://goreportcard.com/badge/fyshos.com/fynedesk" alt="Code Status" /></a>
<a href="https://github.com/fyshos/fynedesk/actions"><img src="https://github.com/fyshos/fynedesk/workflows/Platform%20Tests/badge.svg" alt="Build Status" /></a>
<a href='https://coveralls.io/github/fyshos/fynedesk?branch=develop'><img src='https://coveralls.io/repos/github/fyshos/fynedesk/badge.svg?branch=develop' alt='Coverage Status' /></a>
</p>

# About
# About FyneDesk

FyneDesk is an easy to use Linux/Unix desktop environment following material design.
It is built using the [Fyne](https://fyne.io) toolkit and is designed to be
Expand All @@ -18,28 +18,35 @@ any contributions or feedback for the project.

[![FyneDesk v0.4](https://img.youtube.com/vi/82Wu5k0xZOI/0.jpg)](https://www.youtube.com/watch?v=82Wu5k0xZOI)

# Dependencies
## Dependencies

### Compiling

Compiling requires the same dependencies as Fyne. See the [Getting Started](https://developer.fyne.io/started/) documentation for installation steps.

### Running

For a full desktop experience you will also need the following external tools installed:

- `arandr`
- `arandr` for modifying display settings
- `xbacklight` or `brightnessctl` for laptop brightness
- `connman-gtk` is currently used for configuring Wi-Fi network settings
- `compton` for compositor support

Compositor support currently requires `compton` to be installed.
The desktop does work without the runtime dependencies but the experience will be degraded.

# Getting Started
## Getting Started

Using standard Go tools you can install FyneDesk using:
```
go get fyne.io/fynedesk/cmd/fynedesk
go get fyshos.com/fynedesk/cmd/fynedesk
```

This will add `fynedesk` to your $GOPATH (usually ~/go/bin).
You can now run the app in "preview" mode like any other Fyne app.
Doing so is not running a window manager, to do so requires another few steps:

## Setting up as a desktop environment
### Setting up as a desktop environment

To use this as your main desktop you can run the following commands to set up
fynedesk as a selectable desktop option in your login manager (such as LightDM for example):
Expand All @@ -53,7 +60,7 @@ sudo make install

You can now log out and see that it is in your desktop selection list at login.

## Debugging a window manager
### Debugging a window manager

You can also run the window manager components in an embedded X window for testing.
You will need the `Xephyr` tool installed for your platform (often installed as part of Xorg).
Expand All @@ -73,7 +80,7 @@ macOS) then the app will start in UI test mode.
When loaded in this way you can run all of the features except the
controlling of windows - they will load on your main desktop.

# Runner
## Runner

A desktop needs to be rock solid, and whilst we are working hard to get there,
any alpha or beta software can run into unexpected issues.
Expand All @@ -84,12 +91,16 @@ of data in your applications.

Using standard Go tools you can install the runner using:

go get fyne.io/fynedesk/cmd/fynedesk_runner
go get fyshos.com/fynedesk/cmd/fynedesk_runner

From then on execute that instead of the `fynedesk` command for a more
resilient desktop when testing out pre-release builds.

# Shipping FyneDesk
## Design

Design concepts, and the abstract wallpapers have been contributed by [Jost Grant](https://github.com/jostgrant).

## Shipping FyneDesk

If you are installing FyneDesk by default on a distribution, or making it available as a standard option, you should consider the following points.
You do not need to ship the library or any dependencies, but it is recommended to add the following apps as well:
Expand Down
18 changes: 11 additions & 7 deletions cmd/fynedesk/main.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
package main

import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/theme"
wmtheme "fyshos.com/fynedesk/theme"

_ "fyshos.com/fynedesk/modules/composit"
_ "fyshos.com/fynedesk/modules/desktops"
_ "fyshos.com/fynedesk/modules/launcher"
_ "fyshos.com/fynedesk/modules/quaketerm"
_ "fyshos.com/fynedesk/modules/status"
_ "fyshos.com/fynedesk/modules/systray"

_ "fyne.io/fynedesk/modules/composit"
_ "fyne.io/fynedesk/modules/launcher"
_ "fyne.io/fynedesk/modules/status"
"fyne.io/fyne/v2/app"
)

func main() {
a := app.NewWithID("io.fyne.fynedesk")
a.SetIcon(theme.FyneLogo())
a := app.NewWithID("com.fyshos.fynedesk")
a.SetIcon(wmtheme.AppIcon)
desk := setupDesktop(a)

desk.Run()
Expand Down
6 changes: 3 additions & 3 deletions cmd/fynedesk/main_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import (

"fyne.io/fyne/v2"

"fyne.io/fynedesk"
"fyne.io/fynedesk/internal/icon"
"fyne.io/fynedesk/internal/ui"
"fyshos.com/fynedesk"
"fyshos.com/fynedesk/internal/icon"
"fyshos.com/fynedesk/internal/ui"
)

func setupDesktop(a fyne.App) fynedesk.Desktop {
Expand Down
8 changes: 4 additions & 4 deletions cmd/fynedesk/main_other.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import (
"runtime"

"fyne.io/fyne/v2"
"fyne.io/fynedesk"
"fyshos.com/fynedesk"

"fyne.io/fynedesk"
"fyne.io/fynedesk/internal"
"fyne.io/fynedesk/internal/ui"
"fyshos.com/fynedesk"
"fyshos.com/fynedesk/internal"
"fyshos.com/fynedesk/internal/ui"
)

func setupDesktop(a fyne.App) fynedesk.Desktop {
Expand Down
8 changes: 4 additions & 4 deletions cmd/fynedesk/main_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import (

"fyne.io/fyne/v2"

"fyne.io/fynedesk"
"fyne.io/fynedesk/internal/icon"
"fyne.io/fynedesk/internal/ui"
"fyne.io/fynedesk/internal/x11/wm"
"fyshos.com/fynedesk"
"fyshos.com/fynedesk/internal/icon"
"fyshos.com/fynedesk/internal/ui"
"fyshos.com/fynedesk/internal/x11/wm"
)

func setupDesktop(a fyne.App) fynedesk.Desktop {
Expand Down
2 changes: 1 addition & 1 deletion cmd/fynedesk_runner/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func crashLogPathRelativeTo(parent string) string {
}

func logDir(parent string) string {
cacheDir := filepath.Join(parent, "fyne", "io.fyne.fynedesk")
cacheDir := filepath.Join(parent, "fyne", "com.fyshos.fynedesk")
err := os.MkdirAll(cacheDir, 0700)
if err != nil {
fyne.LogError("Could not create log directory", err)
Expand Down
2 changes: 1 addition & 1 deletion cmd/fynedesk_runner/log_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ func testLogDir() string {
func TestLogPath(t *testing.T) {
path := logPathRelativeTo(testLogDir())

assert.Equal(t, "testdata/cache/fyne/io.fyne.fynedesk/fynedesk.log", path)
assert.Equal(t, "testdata/cache/fyne/com.fyshos.fynedesk/fynedesk.log", path)
}
8 changes: 6 additions & 2 deletions desk.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package fynedesk // import "fyne.io/fynedesk"
package fynedesk // import "fyshos.com/fynedesk"

import "fyne.io/fyne/v2"

Expand All @@ -8,7 +8,8 @@ type Desktop interface {
RunApp(AppData) error
RecentApps() []AppData
Settings() DeskSettings
ContentSizePixels(screen *Screen) (uint32, uint32)
ContentBoundsPixels(*Screen) (x, y, w, h uint32)
RootSizePixels() (w, h uint32)
Screens() ScreenList

IconProvider() ApplicationProvider
Expand All @@ -17,6 +18,9 @@ type Desktop interface {

AddShortcut(shortcut *Shortcut, handler func())
ShowMenuAt(menu *fyne.Menu, pos fyne.Position)

Desktop() int
SetDesktop(int)
}

var instance Desktop
Expand Down
Binary file modified desktop-dark-current.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified desktop-light-current.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 7bc2c75

Please sign in to comment.