aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 48b8a2b8f760307f8c1694b0b2cea507a493a5e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# UEFI File Manager (UFM)
A dual pane file manager with a text based user interface for UEFI Shell environment (requires v2.0 or higher). The application is based on the [TianoCore EDK II](https://www.tianocore.org/) development environment. Distributed under the BSD-2-Clause Plus Patent License.


## Features:

* Support all available text-modes on standard output
* Work with devices that support the Simple File System Protocol
* Execute an application
* Use internal `edit` and `hexedit` editors
* Copy, create, move/rename, remove files/directories


## Installation:
1) Move all files from Library to ShellPkg/Library

2) Add the following line to ShellPkg/ShellPkg.dsc, **section "Components"**:

```
ShellPkg/Library/UefiShellUfmCommandLib/UefiShellUfmCommandLib.inf
```

### If you want to integrate UFM in Shell:
1) Add the following line to ShellPkg/ShellPkg.dsc, **section "LibraryClasses"**, in build of any version of the shell:

```
ShellPkg/Application/Shell/Shell.inf {
	...
	<LibraryClasses>
		...
		NULL|ShellPkg/Library/UefiShellUfmCommandLib/UefiShellUfmCommandLib.inf # <- add this line
}
```

### If you want standalone application:
1) Move all files from Application, Include to ShellPkg/Application and ShellPkg/Include

2) Add the following lines to ShellPkg/ShellPkg.dsc:

**Section LibraryClasses.common:**

```
UfmCommandLib|ShellPkg/Library/UefiShellUfmCommandLib/UefiShellUfmCommandLib.inf
```

**Section Components:**

```
ShellPkg/Application/UfmApp/UfmApp.inf
```

3) Add the following line to ShellPkg/ShellPkg.dec, **section "LibraryClasses"**:

```
UfmCommandLib|Include/Library/UfmCommandLib.h
```


## Binary release

Compiling programs for UEFI is not always convenient, especially for an application. Therefore, precompiled application is distributed. You can find binaries (for x86_64) at [joursoir.net/storage/binaries/ufm](http://joursoir.net/storage/binaries/ufm/).


## Usage:

```
Shell> ufm
```

This example of launching an application is possible if it's integrated in the Shell. In other case, go to the desired file system and run **UfmApp.efi**

The app doesn't currently support command line arguments

### Controls:

There is no mouse support.

Keyboard Inputs:

```
- UP ARROW / DOWN ARROW: move to the next / prev item or scroll a line up / down
- TAB: move to the next panel
- ENTER: follow the current link
- SPACE: select the file
- F1-F10: special commands
```


## Screenshots:

![](ufm-screenshot.png)

![](ufm-screenshot2.png)


## Useful resources & documentation:

[UEFI Shell Specification Version 2.2](https://uefi.org/sites/default/files/resources/UEFI_Shell_2_2.pdf)

[EDK II Documentation](https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Documentation)