mirror of
https://codeberg.org/hyperreal/hyperfocus
synced 2024-11-25 12:13:43 +01:00
Add comments; update README.md
This commit is contained in:
parent
8ca9296146
commit
cf3e061007
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
Block distracting websites and hyperfocus on your tasks!
|
Block distracting websites and hyperfocus on your tasks!
|
||||||
|
|
||||||
This is a Go implementation of the Python-written [concentration](https://github.com/timothycrosley/concentration) program. This program aims to allow the user somewhat more freedom in defining distractors than its predecessor.
|
This is a Go implementation of the Python-written [concentration](https://github.com/timothycrosley/concentration) program. This program aims to be cleaner and simpler than its predecessor.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
```bash
|
```bash
|
||||||
|
25
main.go
25
main.go
@ -105,7 +105,7 @@ func improveFocus() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// For checking if /etc/hyperfocus_distractors or /etc/hyperfocus_distractors_predefined
|
// For checking if /etc/hf_distractors or /etc/hf_distractors_predefined
|
||||||
// exist.
|
// exist.
|
||||||
var (
|
var (
|
||||||
distractorsFileWarn bool
|
distractorsFileWarn bool
|
||||||
@ -194,9 +194,11 @@ func takeBreak(minutes int) {
|
|||||||
fmt.Println("Your (probably) well-deserved break is commencing...")
|
fmt.Println("Your (probably) well-deserved break is commencing...")
|
||||||
loseFocus()
|
loseFocus()
|
||||||
|
|
||||||
|
// Create notify context for os.Interrupt signal
|
||||||
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
|
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
|
// Create context with timeout for duration of minutes argument
|
||||||
ctx, cancel = context.WithTimeout(ctx, time.Duration(minutes*60)*time.Second)
|
ctx, cancel = context.WithTimeout(ctx, time.Duration(minutes*60)*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
@ -206,8 +208,11 @@ func takeBreak(minutes int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Prints the current list of distractors to be blocked
|
// Prints the current list of distractors to be blocked
|
||||||
|
// If neither /etc/hf_distractors nor /etc/hf_predef_distractors exist,
|
||||||
|
// print error message to console but do not exit.
|
||||||
func listDistractors() {
|
func listDistractors() {
|
||||||
|
|
||||||
|
// Open /etc/hf_distractors and store it as *os.File type
|
||||||
userDistractorsFile, err := os.Open(filepath.Clean(distractorsFile))
|
userDistractorsFile, err := os.Open(filepath.Clean(distractorsFile))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
@ -218,11 +223,14 @@ func listDistractors() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
// Initialize a new scanner, scan /etc/hf_distractors, and print to
|
||||||
|
// stdout line by line.
|
||||||
scanner := bufio.NewScanner(userDistractorsFile)
|
scanner := bufio.NewScanner(userDistractorsFile)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
fmt.Println(scanner.Text())
|
fmt.Println(scanner.Text())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Open /etc/hf_predef_distractors and store it as *os.File type
|
||||||
predefDistractorsFile, err := os.Open(filepath.Clean(predefDistractorsFile))
|
predefDistractorsFile, err := os.Open(filepath.Clean(predefDistractorsFile))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
@ -233,6 +241,8 @@ func listDistractors() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
// Initialize a new scanner, scan /etc/hf_predef_distractors, and print to
|
||||||
|
// stdout line by line.
|
||||||
scanner = bufio.NewScanner(predefDistractorsFile)
|
scanner = bufio.NewScanner(predefDistractorsFile)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
fmt.Println(scanner.Text())
|
fmt.Println(scanner.Text())
|
||||||
@ -240,9 +250,10 @@ func listDistractors() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds predefined distractors to .hyperfocus_distractors file
|
// Adds predefined distractors to /etc/hf_predef_distractors file
|
||||||
func addPredefinedDistractors() {
|
func addPredefinedDistractors() {
|
||||||
|
|
||||||
|
// Slice of distractor domains
|
||||||
distractors := []string{
|
distractors := []string{
|
||||||
"anandtech.com",
|
"anandtech.com",
|
||||||
"answerbag.com",
|
"answerbag.com",
|
||||||
@ -364,6 +375,7 @@ func addPredefinedDistractors() {
|
|||||||
"zillow.com",
|
"zillow.com",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Open or create /etc/hf_predef_distractors and store it in *os.File type
|
||||||
predefDistractorsFileObj, err := os.OpenFile(filepath.Clean(predefDistractorsFile), os.O_CREATE|os.O_WRONLY, 0666)
|
predefDistractorsFileObj, err := os.OpenFile(filepath.Clean(predefDistractorsFile), os.O_CREATE|os.O_WRONLY, 0666)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
@ -374,8 +386,9 @@ func addPredefinedDistractors() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
// Initialize a new writer, range loop over distractors slice, and write
|
||||||
|
// each distractor domain to /etc/hf_predef_distractors, line by line.
|
||||||
dataWriter := bufio.NewWriter(predefDistractorsFileObj)
|
dataWriter := bufio.NewWriter(predefDistractorsFileObj)
|
||||||
|
|
||||||
for _, v := range distractors {
|
for _, v := range distractors {
|
||||||
|
|
||||||
_, _ = dataWriter.WriteString(v + "\n")
|
_, _ = dataWriter.WriteString(v + "\n")
|
||||||
@ -388,7 +401,7 @@ func addPredefinedDistractors() {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
parser := argparse.NewParser("hf", "Block distracting websites and hyperfocus on your work")
|
parser := argparse.NewParser("go-hyperfocus", "Block distracting websites and hyperfocus on your work")
|
||||||
|
|
||||||
improveCmd := parser.NewCommand("improve", "Improve focus, block the distractors")
|
improveCmd := parser.NewCommand("improve", "Improve focus, block the distractors")
|
||||||
loseCmd := parser.NewCommand("lose", "Lose focus, unblock the distractors")
|
loseCmd := parser.NewCommand("lose", "Lose focus, unblock the distractors")
|
||||||
@ -396,8 +409,8 @@ func main() {
|
|||||||
breakCmd := parser.NewCommand("break", "Take a break for a number of minutes")
|
breakCmd := parser.NewCommand("break", "Take a break for a number of minutes")
|
||||||
minutesForBreak := breakCmd.Int("", "minutes", &argparse.Options{Help: "Number of minutes to break for."})
|
minutesForBreak := breakCmd.Int("", "minutes", &argparse.Options{Help: "Number of minutes to break for."})
|
||||||
|
|
||||||
listCmd := parser.NewCommand("list", "List the distractors defined in the block file (/etc/hyperfocus_distractors)")
|
listCmd := parser.NewCommand("list", "List the distractors defined in the block file (/etc/hf_distractors)")
|
||||||
predefinedCmd := parser.NewCommand("predefined", "Add predefined set of distractors to block file")
|
predefinedCmd := parser.NewCommand("predefined", "Add predefined set of distractors to /etc/hf_predef_distractors")
|
||||||
|
|
||||||
if isRoot() {
|
if isRoot() {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user